3.1 Descomposición Modular Proceso de descomposición de un sistema en un conjunto de elementos con un índice bajo acoplamiento (independientes) y alto índice de cohesión (con signifcado propio). Consiste en descomponer el problema a resolver en módulos o tareas más simples. Cada tarea representa una actividad completa y se codifca de manera independiente. Facilita el diseo descendente del problema! centrándonos cada ve" en la resolución de sub problemas de magnitud in#erior. $l diseo modular propone dividir el sistema en partes di#erenciadas y defnir sus inter#aces. inter#aces. Los pasos a seguir son: %. &dentifcar los módulos '. escribir cada módulo . escribir las relaciones entre módulos *na descomposición modular debe poseer ciertas cualidades mínimas para +ue se pueda considerar sufciente validad los cuales son los siguientes, a) Independencia Independencia Funcion Funcional al Cada módulo debe reali"ar una #unción concreta o un conjunto de #unciones afnes. $s recomendable reducir las relaciones entre módulos al mínimo. Para medir la independencia #uncional hay dos criterios, acoplamiento y cohesión b) Acopla Acoplamien miento to $l acoplamiento es una medida de la intercone-ión entre módulos en la estructura del programa. e tiende a +ue el acoplamiento sea lo menor posible! esto es a reducir las intercone-iones entre los distintos módulos en +ue se estructure nuestra aplicación. $l grado de acoplamiento mide la interrelación entre dos módulos! seg/n el tipo de cone-ión y la complejidad de la inter#aces,
Fuerte Por contenido! cuando desde un módulo se puede cambiar datos locales de otro. •
Com/n! se emplea una "ona com/n de datos a la +ue tienen acceso varios módulos. 0oderado e control! la "ona com/n es un dispositivo e-terno al +ue están ligados los módulos! esto implica +ue un cambio en el #ormato de datos los a#ecta a todos. 1bil e datos! viene dado por los datos +ue intercambian los módulos. $s el mejor. in acoplamiento directo! es el acoplamiento +ue no e-iste •
•
•
•
c) Cohe Cohesi sión ón *n módulo coherente ejecuta una tarea sencilla en un procedimiento y re+uiere poca interacción con procedimientos +ue se ejecutan en otras partes de un programa. Podemos Podemos decir +ue un módulo coherente es a+uel +ue intenta reali"ar solamente una cosa. d) Compre Comprensi nsibili bilidad dad Para #acilitar los cambios! el mantenimiento y la reutili"ación reutili"ación de módulos es necesario +ue cada uno sea comprensible de #orma aislada. Para ello es bueno +ue posea independencia #uncional! pero además es deseable, • •
&dentifcación! el nombre debe ser adecuado y descriptivo ocumentación! debe aclarar todos los detalles de diseo e implementación +ue no +ueden de manifesto en el propio código
e) Adapta Adaptabili bilidad dad 2a adaptación de un sistema resulta más di#ícil cuando no hay independencia #uncional! es decir! con alto acoplamiento y baja cohesión! y cuando el diseo es poco comprensible. 3tros #actores para #acilitar la adaptabilidad,
Previsión! es necesario prever +ue aspectos del sistema pueden ser susceptibles de cambios en el #uturo! y poner estos elementos en módulos independientes! de manera +ue su modifcación a#ecte al menor n/mero de módulos posibles.
4cces 4ccesibi ibili lidad dad!! debe debe resul resultar tar sencil sencillo lo el acceso acceso a los docum document entos os de especifcación! diseo! e implementación para obtener un conocimiento sufciente del sistema antes de proceder a su adaptación Consiste Consistencia ncia!! despu1s despu1s de cual+uie cual+uierr adaptaci adaptación ón se debe debe mantene mantenerr la consistencia del sistema! incluidos los documentos a#ectados. $l principal principal objetivo de la descomposi descomposición ción modula modula es de componer componer los problem problemas as di#ícile di#íciles s en proble problemas mas sencillo sencillos s de tal tal mane manera ra sería sería más efci ef cien ente te el desa desarr rrol ollo lo del del sist sistem ema. a. 2a desc descom ompo posi sici ción ón modu modula larr se en#oca en reutili"ar reutili"ar código! además además debido a esta descomposición descomposición cada módu módulo lo es desa desarr rrol olla lado do con con un fn espe especí cífc fco! o! de esta esta mane manera ra los los #uturo #uturos s progr programad amador ores es compre comprende nderán rán #ácilment #ácilmente e la #unción #unción de cada módulo. enta!as: " " " " "
Claridad 5educción de costos 5e utili"ación. $vita la propagación de errores Facilita las inter#aces e independi"a la codifcación
6iene un un impacto positivo positivo en los siguientes siguientes aspectos de progr programación, amación, " Construcción ión del programa. Pued Pueden en trabaj trabajar ar diver diverso sos s desarrolladores gracias a la independencia de los módulos. " Depu Depura raci ción ón del del prog progrram ama a. e centrará en cada uno de los módulos por separado y posteriormente se comprobará la interacción. " Legibilidad del código. " #limi #limina nació ción n de de cód código igo redu redund ndan ante te..
Criterios a seguir durante el dise$o: " 5educir acoplamiento " 4umentar la cohesión " Conseguir módulos con inter#aces sencillas
Abstracción % encapsulamiento
Idea principal, principal, efnir una parte de un sistema de modo +ue puede ser comprendido por sí mismo! como una unidad! sin conocimiento de sus detalles específcos. olo será necesario saber el modo de interaccionar con dicha unidad. Dos tipos: 7 Abstracción procedimental 2os mód módulos los se ven como cajas ajas negr egras con una deter etermi min nada #uncionalidad +ue a su ve" pueden hacer uso de otras cajas negras. 7 Abstracción de datos 2os datos son vistos como elementos sobre los +ue se pueden reali"ar un conjunto de operaciones predefnidas. $n ning/n momento se tiene con conocim cimiento ento de su repr epresen esenttació ación n o implem lement entació ación n de las operaciones. Modi&cabilidad *na *na buen buena a desco descomp mposi osició ción n modu modular lar #acili #acilitar tará á la modif modifcab cabili ilidad dad del código. Pe+ueos cambios en los re+uisitos de un programa modular norm normalm almen ente te re+u re+uier ieren en un camb cambio io pe+ue pe+ueo o sólo sólo en algun algunos os de sus sus módulos. endr' endr' condicionado por los lo s siguientes aspectos: 8
Acoplamiento d(bil d(bil.. 2os módulos deben ser independientes entre sí.
8
Cohesi Cohesión ón uerte uerte.. 2as tar tareas eas de cada cada módu módulo lo debe deben n est estar bien bien defnidas.
e debe perseguir +ue los cambios debidos a modifcaciones a#ecten a la menor cantidad de módulos posible.