![]() |
||
Modularización Uso de subprogramas Razones válidas para crear un subprograma Cohesión y acoplamiento Pasos para escribir un subprograma El nombre y los parámetros de un subprograma
Uso de subprogramas Razones válidas para crear un subprograma q Reducir la complejidad del programa (“divide y vencerás”).q Eliminar código duplicado.q Limitar los efectos de los cambios (aislar aspectos concretos).q Ocultar detalles de implementación (p.ej. algoritmos complejos).q Promover la reutilización de código (p.ej. familias de productos).q Mejorar la legibilidad del código.q Facilitar la portabilidad del código.Cohesión Medida del grado de identificación de un módulo con una función concreta. Cohesión aceptable (fuerte) q Cohesión funcional (un módulo realiza una única acción).q en un orden particular sobre unos datos concretos). Cohesión secuencial (un módulo contiene acciones que han de realizarseq operaciones que se realizan sobre los mismos datos). Cohesión de comunicación (un módulo contiene un conjunto deq han de realizarse al mismo tiempo; p.ej. inicialización). Cohesión temporal (las operaciones se incluyen en un módulo porqueCohesión inaceptable (débil) q en un orden concreto aunque no tengan nada que ver entre sí). Cohesión procedural (un módulo contiene operaciones que se realizanq ejecución depende de un parámetro: el flujo de control o “lógica” de la rutina es lo único que une a las operaciones que la forman). Cohesión lógica (cuando un módulo contiene operaciones cuyaq ninguna relación observable entre ellas). Cohesión coincidental (cuando las operaciones de una rutina no guardanAcoplamiento Medida de la interacción de los módulos que constituyen un programa. Niveles de acoplamiento (de mejor a peor): q dos rutinas se especifica en la lista de parámetros de la rutina llamada. Acoplamiento de datos (acoplamiento normal): Todo lo que compartenq rutina qué hacer (la primera rutina tiene que conocer detalles internos de la segunda). Acoplamiento de control: Una rutina pasa datos que le indican a la otraq globales o dispositivos de E/S. Si los datos son de sólo lectura, el acoplamiento se puede considerar aceptable. En general, este tipo de acoplamiento no es deseable porque la conexión existente entre los módulos no es visible. Acoplamiento externo: Cuando dos rutinas utilizan los mismos datosq altera sus datos locales (“acoplamiento de contenido”). La mayor parte de los lenguajes estructurados incluyen reglas para el ámbito de las variables que impiden este tipo de acoplamiento. Acoplamiento patológico: Cuando una rutina utiliza el código de otra oObjetivo Reducir al máximo el acoplamiento y aumentar la cohesión de los módulos. Pasos para escribir un subprograma 1. Definir el problema que el subprograma ha de resolver. 2. Darle un nombre no ambiguo al subprograma. 3. Decidir cómo se puede probar el funcionamiento del subprograma. 4. Escribir la declaración del subprograma (cabecera de la función). 5. Buscar el algoritmo más adecuado para resolver el problema. 6. Escribir los pasos principales del algoritmo como comentarios. 7. Rellenar el código correspondiente a cada comentario. 8. Revisar mentalmente cada fragmento de código. 9. Repetir los pasos anteriores hasta quedar completamente satisfecho. El nombre de un subprograma q Procedimiento: Verbo seguido de un objeto.q Función: Descripción del valor devuelto por la función.ü El nombre debe describir todo lo que hace el subprograma.ü Se deben evitar nombres genéricos que no dicen nada (p.ej. calcular)ü Se debe ser consistente en el uso de convenciones.Los parámetros de un subprograma ü Orden: (por valor, por referencia) == (entrada, entrada/salida, salida)ü el mismo orden (algo que la biblioteca estándar de C no hace). Si varias rutinas utilizan los mismos parámetros, éstos han de ponerse enü ponen al final. De acuerdo con la primera norma, las variables de estado o error seü variables locales de la rutina. No es aconsejable utilizar los parámetros de una rutina como si fuesenü posibles valores de los parámetros. Se han de documentar las suposiciones que se hagan acerca de losü para efectuar su labor. Sólo se deben incluir los parámetros que realmente necesite la rutinaü explícitas mediante el uso de parámetros. Las dependencias existentes entre distintos módulos han de hacerse |
![]() |