La descomposición modular es un método de diseño que proporciona un mecanismo sistemático para descomponer el problema en subproblemas, reducir la complejidad de todo el problema, consiguiendo de esta manera una solución modular efectiva. Se enfoca en reutilizar código, además debido a esta descomposición cada módulo es desarrollado con un fin específico, de esta manera los futuros programadores comprenderán fácilmente la función de cada módulo. (HERNADEZ CARPIO JAVIER, 2010)
Los pasos a seguir son:
1. Identificar los módulos
2. Describir cada módulo
3. Describir las relaciones entre módulos
Las siguientes capacidades son las que debe tener la descomposición modular.
- Capacidad de descomposición modular: Si un método de diseño proporciona un mecanismo sistemático para descomponer el problema en subproblemas, reducirá la complejidad de todo el problema, consiguiendo de esta manera una solución modular efectiva.
- 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.
Los módulos se descomponen normalmente de varios componentes del sistema simples. Hay dos estrategias para descomponer un subsistema en módulos:
- Descomposición orientada a objetos: donde se descompone un sistema en un conjunto de objetos que se comunican.
- Descomposición orientada a flujos de funciones: donde se descompone el sistema en módulos funcionales que aceptan datos y los transforman en datos de salida.
La descomposición modular debe poseer ciertas cualidades mínimas para que se pueda considerar suficiente validad, estas cualidades son:
- 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.
- IAN, S. (14 de mayo de 2013). Obtenido de http://c3l3sp4s4t.blogspot.mx/
- HERNADEZ CARPIO JAVIER, M. O. (16 de mayo de 2010). sin nombre.
Obtenido de
http://sebas-krlos-sys.blogspot.mx/2010/05/unidad-6-diseno-y-arquitectura-de_16.html
No hay comentarios:
Publicar un comentario