Descomposición modular
Capacidad de empleo de componentes modulares. Si un
método de diseño permite ensamblar los componentes de diseño (reusables)
existentes en un sistema nuevo, producirá una solución modular que no inventa
nada ya inventado.
Capacidad de comprensión modular. 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.
Continuidad modular. Si pequeños cambios en los requisitos del sistema provocan cambios en los módulos individuales, en vez de cambios generalizados en el sistema, se minimizará el impacto de los efectos secundarios de los cambios.
Protección modular. Si dentro de un módulo se produce una condición aberrante y sus efectos se limitan a ese módulo, se minimizará el impacto de los efectos secundarios inducidos por los errores.
Finalmente, es importante destacar que un sistema se puede diseñar modularmente, incluso aunque su implementación deba ser «monolítica». Existen situaciones (por ejemplo, software en tiempo real, software empotrado) en donde no es admisible que los subprogramas introduzcan sobrecargas de memoria y de velocidad por mínimos que sean (por ejemplo, subrutinas, procedimientos). En tales situaciones el software podrá y deberá diseñarse con modularidad como filosofía predominante.
El código se puede desarrollar «en línea». Aunque el código fuente del programa puede no tener un aspecto modular a primera vista, se ha mantenido la filosofía y el programa proporcionará los beneficios de un sistema modular.
Capacidad de comprensión modular. 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.
Continuidad modular. Si pequeños cambios en los requisitos del sistema provocan cambios en los módulos individuales, en vez de cambios generalizados en el sistema, se minimizará el impacto de los efectos secundarios de los cambios.
Protección modular. Si dentro de un módulo se produce una condición aberrante y sus efectos se limitan a ese módulo, se minimizará el impacto de los efectos secundarios inducidos por los errores.
Finalmente, es importante destacar que un sistema se puede diseñar modularmente, incluso aunque su implementación deba ser «monolítica». Existen situaciones (por ejemplo, software en tiempo real, software empotrado) en donde no es admisible que los subprogramas introduzcan sobrecargas de memoria y de velocidad por mínimos que sean (por ejemplo, subrutinas, procedimientos). En tales situaciones el software podrá y deberá diseñarse con modularidad como filosofía predominante.
El código se puede desarrollar «en línea». Aunque el código fuente del programa puede no tener un aspecto modular a primera vista, se ha mantenido la filosofía y el programa proporcionará los beneficios de un sistema modular.
El diseño modular propone dividir el sistema en partes
diferenciadas y definir sus interfaces. sus ventajas: claridad, reducción de
costos y reutilizació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

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 interface:
- 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.
Comprensibilidad
- Para facilitar los cambios, 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,
pero además es deseable:
- Identificación, el nombre debe ser adecuado y descriptivo
- Documentació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, es decir, con alto acoplamiento y baja cohesión, y
cuando el diseño es poco comprensible. Otros factores para facilitar la adaptabilidad:
- Previsión, es necesario prever que aspectos del
sistema pueden ser suceptibles de cambios
en el futuro, y poner estos elementos en
módulos independientes, de manera que su
modificación afecte al menor número de módulos posibles
- Accesibilidad, debe resultar sencillo el acceso a
los documentos de especificación,
diseño, e implementación para obtener un
conocimiento suficiente del sistema antes de
proceder a su adaptación
- Consistencia, después de cualquier adaptación se
debe mantener la consistencia del sistema,
incluidos los documentos afectados

http://unidad6daps.blogspot.mx/2010/05/61-descomposicion-modular.html
http://genesis9.comxa.com/tareas/UNIDAD6.pdf

http://unidad6daps.blogspot.mx/2010/05/61-descomposicion-modular.html
http://genesis9.comxa.com/tareas/UNIDAD6.pdf