Diseño Modular:
Cuando se habla de diseño modular se hace referencia a un enfoque que se subdivide el sistema en partes más pequeñas (módulos) que pueden ser creados de forma independiente y luego se utilizan en los diferentes sistemas para conducir múltiples funcionalidades; el cual se descompone en subprogramas (submódulos), los cuales, a su vez, también se pueden fraccionar, y así sucesivamente, es decir, el problema se resuelve de arriba hacia abajo. A este método se le denomina diseño modular o descendente (top-down).
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 reutilizacion
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
a) 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
b) Acoplamiento
El acoplamiento es un medida de la interconexión entre módulos en la estructura del programa. 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.
. 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
c) Cohesión
Un módulo coherente ejecuta una tarea sencilla en un procedimiento de 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..
d) Comprensibilidad
Para facilitar los cambios, el mantenimiento y la reutilización de módulos es necesario que cada uno sea comprensible de forma aislada.
e) 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.