Modularización en Desarrollo de Software: Ventajas y Principios Clave
Clasificado en Informática
Escrito el en español con un tamaño de 5,86 KB
Ventajas de la Modularización en el Desarrollo de Software
La modularización ofrece múltiples beneficios clave en el desarrollo de software:
- Permite dividir el trabajo en módulos.
- Facilita la reutilización de módulos en otros programas.
- Ayuda a localizar fallos de manera más eficiente.
- Conduce a un mantenimiento mejor y más fácil del código.
¿Qué es un Módulo en Programación?
Un módulo se define como el nivel más detallado de un programa que no puede descomponerse más y que representa una funcionalidad propia. Es una parte de un programa con funcionalidad autónoma, independiente de las demás, que no es exclusiva de ese programa y que puede ser reutilizada en otros contextos.
Principios y Propiedades del Diseño Modular
El diseño modular se rige por varias propiedades fundamentales:
Abstracción
La abstracción implica centrarse únicamente en las características relevantes del programa. Es mayor en la fase de requisitos y menor en la programación.
Refinamiento
El refinamiento consiste en concretar progresivamente el diseño a medida que nos acercamos a la programación. El refinamiento máximo se alcanza en la línea de código.
Modularidad
La modularidad es la práctica de dividir una aplicación en módulos hasta alcanzar su funcionalidad básica. Aporta un menor coste de diseño al permitir la división del trabajo. A mayor número de módulos, menor dificultad de desarrollo; sin embargo, a mayor número de interfaces, mayor dificultad de desarrollo.
Ocultamiento de Información (Encapsulamiento)
El ocultamiento (o encapsulamiento) significa que un módulo no debe ser visible para otro, solo para sí mismo o para su nivel superior. Solo podrá verse a sí mismo o a sus subordinados. La información intercambiada entre módulos debe ser mínima, lo que evita la propagación de errores y los mantiene localizados dentro de los módulos.
Principios Clave del Diseño Modular
Independencia Funcional
La independencia funcional establece que todos los módulos deben tener una funcionalidad propia y la comunicación con el resto debe ser mínima.
Mínimo Acoplamiento y Máxima Cohesión
Estos son dos principios fundamentales para un diseño modular eficaz:
Cohesión
La cohesión se refiere a la cantidad mínima de información compartida entre módulos. Implica que todo lo común debe estar en el mismo módulo y que la funcionalidad de un módulo no debe dividirse. Tipos de cohesión:
- Coincidente: Acciones que tienen poca o ninguna relación entre sí.
- Lógica: Acciones relacionadas desde un punto de vista lógico (ej. compartir una base de datos).
- Temporal: Acciones realizadas en el mismo intervalo de tiempo.
- Comunicación: Acciones que operan sobre datos relacionados.
- Secuencial: Para realizar una acción, se necesita que la anterior haya terminado.
- Funcional: Se realiza una única acción o un conjunto de acciones estrechamente relacionadas.
Acoplamiento
El acoplamiento es la dependencia entre los distintos módulos. Debe ser mínima, pero los módulos deben trabajar juntos y coordinados. Tipos de acoplamiento:
- Sin acoplamiento: Módulos totalmente independientes.
- De datos: Varias funciones se intercambian datos entre ellas.
- De marca: Transferencia de información procedente de una tabla o registro.
- De control: Intercambio de información de control que indica qué acciones llevar a cabo en un programa.
- Externo: Consulta con un software externo o uso de variables globales.
- Común (o normal): Lo que se comparte en los distintos módulos, como vectores, campos, o los mismos campos con distintos valores.
- De contenido: Cuando un módulo modifica directamente el comportamiento o la estructura interna de otro módulo (altamente indeseable).
Criterios para un Diseño Modular Correcto
Para un diseño modular óptimo, se deben seguir los siguientes criterios:
- Mínimo acoplamiento y máxima cohesión: Como se detalló anteriormente, estos son pilares fundamentales.
- Explosionar módulo: Dividir módulos en submódulos hasta alcanzar la granularidad mínima de funcionalidad.
- Implosionar módulo: Agrupar submódulos con partes comunes que pueden formar una unidad lógica superior.
Herramientas y Técnicas de Representación Modular
VTOC (Visual Table Of Contents)
El VTOC es una representación gráfica de la descomposición modular de un programa. La información fluye de arriba hacia abajo y puede haber sido utilizada previamente, siendo su uso opcional o no.
ELH (Entity Life History)
El ELH representa la historia de vida de una entidad, mostrando su evolución respecto al tiempo. Se crea un ELH para cada entidad, representando sucesos y facilitando la generación de diagramas y matrices entidad-recurso.
HIPO (Hierarchy Plus Input-Process-Output)
El HIPO se obtiene a partir del VTOC e indica las entradas y salidas (E/S) de cada uno de los módulos, incluyendo pseudocódigo en su interior. Sus inconvenientes son que el diagrama debe cambiar si la aplicación lo hace; sus ventajas radican en que es una representación muy completa.