domingo, 12 de mayo de 2013



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






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