Descomposicion Modular

3.1 Descomposición modular
El diseño modular propone dividir el sistema en partes diferenciadas y definir sus interfaces.
Sus ventajas: Claridad, reducción de costos y re utilización.
Los pasos a seguir son:
1. Identificar los módulos
2. Describir cada módulo
3. Describir las relaciones entre módulos
Una descomposición modular debe poseer ciertas cualidades mínimas para que se pueda
considerar suficiente validad.
1. Independencia funcional
2. Acoplamiento
3. Cohesión
4. Comprensibilidad
5. Adaptabilidad

Independencia Funcional
Cada módulo debe realizar una función concreta o un conjunto de funciones afines. Es
recomendable reducir las relaciones entre módulos al mínimo.
Para medir la independencia funcional hay dos criterios: acoplamiento y cohesión
Acoplamiento
El acoplamiento es una medida de la interconexión entre módulos en la estructura del programa. Se
tiende a que el acoplamiento sea lo menor posible, esto es a reducir las interconexiones entre los
distintos módulos en que se estructure nuestra aplicación. El grado de acoplamiento mide la
interrelación entre dos módulos, según el tipo de conexión y la complejidad de la interfaces:
Fuerte


Por contenido, cuando desde un módulo se puede cambiar datos locales de otro.
Común, se emplea una zona común de datos a la que tienen acceso varios módulos.
Moderado

De control, la zona común es un dispositivo externo al que están ligados los módulos, esto
implica que un cambio en el formato de datos los afecta a todos.
Débil
De datos, viene dado por los datos que intercambian los módulos. Es el mejor.
Sin acoplamiento directo, es el acoplamiento que no existe


Cohesión
Un módulo coherente ejecuta una tarea sencilla en un procedimiento y requiere poca interacción
con procedimientos que se ejecutan en otras partes de un programa. Podemos decir que un
módulo coherente es aquel que intenta realizar solamente una cosa.

diseño. y poner estos elementos en módulos independientes. pero además es deseable:   Identificación. y cuando el diseño es poco comprensible. debe resultar sencillo el acceso a los documentos de especificación. . incluidos los documentos afectados. Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces. Si un método de diseño permite ensamblar los componentes de diseño (reusables) existentes en un sistema nuevo. después de cualquier adaptación se debe mantener la consistencia del sistema. Capacidad de empleo de componentes modulares. es necesario prever que aspectos del sistema pueden ser susceptibles de cambios en el futuro. producirá una solución modular que no inventa nada ya inventado. es decir. Si un módulo se puede comprender como una unidad autónoma (sin referencias a otros módulos) será más fácil de construir y de cambiar. el mantenimiento y la reutilización de módulos es necesario que cada uno sea comprensible de forma aislada. Para ello es bueno que posea independencia funcional. el nombre debe ser adecuado y descriptivo Documentación.Comprensibilidad Para facilitar los cambios. Capacidad de comprensión modular. e implementación para obtener un conocimiento suficiente del sistema antes de proceder a su adaptación Consistencia. Otros factores para facilitar la adaptabilidad: Previsión. debe aclarar todos los detalles de diseño e implementación que no queden de manifiesto en el propio código Adaptabilidad La adaptación de un sistema resulta más difícil cuando no hay independencia funcional. con alto acoplamiento y baja cohesión. Un patrón de diseño es una descripción de clases y objetos comunicándose entre sí adaptada para resolver un problema de diseño general en un contexto particular. Un patrón de diseño resulta ser una solución a un problema de diseño. de manera que su modificación afecte al menor número de módulos posibles Accesibilidad.

1996) resume los tipos de middleware disponibles para soportar computación distribuida. intraorganizacional. minimizar los problemas propios a estos sistemas. Existen dos modelos de dominio específico: 1. No hay distinción entre un proveedor de servicios y el usuario de estos servicios. sus relaciones. 3. y asegurar que dichas partes se puedan comunicar e intercambiar datos.3 Arquitectura de dominio específico El reto para el diseño es diseñar el software y hardware para proporcionar características deseables a los sistemas distribuidos y. Ambas arquitecturas se usan ampliamente en la industria. responsabilidades y colaboración. por lo tanto. administradores de transacciones. pero están comenzando a usarse para aplicaciones de empresa. la representación de la información y los protocolos de comunicación pueden ser todos diferentes. cada una de las cuales puede interaccionar directamente con los usuarios o con otras partes del sistema. • El problema: describe cuándo aplicar el patrón. Ejemplos de middleware son software para gestionar comunicaciones con bases de datos. El middleware es un software de propósito general que normalmente se compra como un componente comercial más que escribirse especialmente por los desarrolladores de la aplicación. La distribución soportada es. Los sistemas peer-to-peer han sido usados principalmente para sistemas personales. convertidores de datos y controladores de comunicación. Arquitecturas de objetos distribuidos. Bernstein (Bernstein. se ubica en medio de los diferentes componentes distribuidos del sistema. Algunas partes del sistema pueden tener que responder a eventos independientes. Un sistema distribuido. Aquí se tratan dos tipos genéricos de arquitecturas de sistemas distribuidos: Arquitectura cliente-servidor.Elementos:  Nombre: describe el problema de diseño. . Los servidores y los clientes se tratan de forma diferente en estos sistemas. Para esta arquitectura no hay distinción entre servidores y clientes. requiere software que pueda gestionar estas partes distintas. por lo tanto. Modelos genéricos que son abstracciones de varios sistemas reales. El término middleware se usa para hacer referencia a ese software. por lo tanto. y el sistema puede ser visto como un conjunto de objetos que interaccionan cuya localización es irrelevante. También se pueden tomar dos tipos más de arquitecturas distribuidas que son más adecuadas para la distribución interorganizacional: arquitectura de sistemas peer-to-peer (p2p) y arquitecturas orientadas a servicios. Es necesario comprender las ventajas y desventajas de las diferentes arquitecturas de sistemas distribuidos. Los componentes en un sistema distribuido pueden implementarse en diferentes lenguajes de programación y pueden ejecutarse en tipos de procesadores completamente diferentes. • La solución: describe los elementos que componen el diseño. Los modelos de datos. son abstracciones naturales para los componentes de sistemas distribuidos. al mismo tiempo. En este caso el sistema puede ser visto como un conjunto de servicios que se proporcionan a los clientes que hacen uso de dichos servicios. Estos sistemas están formados por partes independientes pobremente integradas. Los objetos software reflejan estas características. Los sistemas distribuidos se desarrollan normalmente utilizando una aproximación orientada a objetos. pero la distribución de las aplicaciones generalmente tiene lugar dentro de una única organización.

la razón es porque actualmente la mayoría de las CPU’s sólo pueden ejecutar un proceso cada vez. El término middleware se usa para hacer referencia a ese software. Ambas arquitecturas se usan ampliamente en la industria. administradores de transacciones. se ubica en medio de los diferentes componentes distribuidos del sistema. Para esta arquitectura no hay distinción entre servidores y clientes. pero la distribución de las aplicaciones generalmente tiene lugar dentro de una única organización. Ejemplos de middleware son software para gestionar comunicaciones con bases de datos. son abstracciones naturales para los componentes de sistemas distribuidos. 3. cada una de las cuales puede interaccionar directamente con los usuarios o con otras partes del sistema. pero otra historia es la práctica. Bernstein (Bernstein. Los sistemas distribuidos se desarrollan normalmente utilizando una aproximación orientada a objetos.2. en un sistema distribuido. por lo tanto. Los servidores y los clientes se tratan de forma diferente en estos sistemas. Aquí se tratan dos tipos genéricos de arquitecturas de sistemas distribuidos: Arquitectura clienteservidor. No hay distinción entre un proveedor de servicios y el usuario de estos servicios. Modelo genérico: flujo de datos de un compilador Modelo de Referencia: La arquitectura OSI. convertidores de datos y controladores de comunicación. como hacer funcionar el multiproceso. Modelos de referencia que son modelos abstractos y describen a una clase mayor de sistemas. Arquitecturas de objetos distribuidos. 1996) resume los tipos de middleware disponibles para soportar computación distribuida. El multiproceso no es algo difícil de entender: más procesadores significa más potencia computacional. Estos sistemas están formados por partes independientes pobremente integradas.4 Diseño de software de arquitectura multiprocesador Un sistema multiproceso o multitarea es aquel que permite ejecutar varios procesos de forma concurrente. En este caso el sistema puede ser visto como un conjunto de servicios que se proporcionan a los clientes que hacen uso de dichos servicios. Los objetos software reflejan estas características. y asegurar que dichas partes se puedan comunicar e intercambiar datos. por lo tanto. requiere software que pueda gestionar estas partes distintas. lo que requiere unos profundos conocimientos tanto del . Algunas partes del sistema pueden tener que responder a eventos independientes. La distribución soportada es. Un conjunto de tareas puede ser completado más rápidamente si hay varias unidades de proceso ejecutándolas en paralelo. pero están comenzando a usarse para aplicaciones de empresa. por lo tanto. Los componentes en un sistema distribuido pueden implementarse en diferentes lenguajes de programación y pueden ejecutarse en tipos de procesadores completamente diferentes. También se pueden tomar dos tipos más de arquitecturas distribuidas que son más adecuadas para la distribución interorganizacional: arquitectura de sistemas peer-to-peer (p2p) y arquitecturas orientadas a servicios. intraorganizacional. Los modelos de datos. Esa es la teoría. Los sistemas peer-to-peer han sido usados principalmente para sistemas personales. la representación de la información y los protocolos de comunicación pueden ser todos diferentes. La única forma de que se ejecuten de forma simultánea varios procesos es tener varias CPU’s (ya sea en una máquina o en varias. Un sistema distribuido. y el sistema puede ser visto como un conjunto de objetos que interaccionan cuya localización es irrelevante. El middleware es un software de propósito general que normalmente se compra como un componente comercial más que escribirse especialmente por los desarrolladores de la aplicación.

 Adicionalmente. Ventajas  Es económica. las computadoras paralelas son inherentemente escalables. existen factores que limitan la velocidad máxima de un procesador. Por otro lado. . en grandes cantidades.hardware como del software. y la forma en que el código que se ejecuta en los mismos ha sido escrito para escribir aplicaciones y software que aproveche al máximo sus prestaciones. y problemas causados por fenómenos eléctricos a pequeñas escalas. permite ofrecer mayor rendimiento. Es necesario conocer ampliamente como están interconectados dichos procesadores. Esta operación consiste en quitar a un proceso de la CPU.  Las arquitecturas “tradicionales” se actualizan haciendo los procesadores existentes obsoletos por la introducción de nueva tecnología a un costo posiblemente elevado. efectos cuánticos al reducir el tamaño de los elementos de los procesadores. restringen la capacidad máxima de un sistema uniprocesador.  El uso de componentes comúnmente disponibles. permitiendo actualizarlas para adecuarlas a una necesidad creciente. La ventaja de un sistema multiproceso reside en la operación llamada cambio de contexto. tales como la velocidad de la luz. independientemente del factor económico. Desventajas  En ocasiones se menciona también la limitante física. y la forma en que el código que se ejecuta en los mismos ha sido escrito para escribir aplicaciones y software que aproveche al máximo sus prestaciones. a un precio menor que el de máquinas con procesadores especialmente diseñados (como por ejemplo las máquinas de procesadores vectoriales y de propósito específico). Barreras físicas infranqueables. una arquitectura paralela se puede actualizar en términos de rendimiento simplemente agregando más procesadores. Es necesario conocer ampliamente como están interconectados dichos procesadores. dejando la opción obvia de colocar muchos procesadores para realizar cálculos cooperativamente. ejecutar otro proceso y volver a colocar el primero sin que se entere de nada.