lunes, 29 de abril de 2013

3.1 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.





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 susceptibles 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.