Subido por ambcris-chancay

20 Modularización

Anuncio
Modularización
Uso de sub programas
Objetivo
• Comprender los conceptos de modularización.
Modularidad
• La modularidad consiste en fragmentar un programa principal en
componentes más pequeños e individuales reduciendo la
complejidad en cierto grado.
• Cuando un programa se compone de módulos independientes y
robustos se dice que es modular, lo cual permite la reutilización y
facilita la verificación y depuración de los mismos.
• Cada módulo obtenido en el mundo de la solución debe ser
independiente y de fácil utilización; un módulo es una estructura que
presenta una interfaz (a través de la cual se relaciona con otros
módulos) y la implementación (donde se especifican los servicios del
módulo
Por que usar sub programas (módulos)
• Una forma natural de atacar problemas grandes es
• dividirlo en sub-problemas que se puedan resolver de
• forma "independiente" y luego combinarse.
• En programación, esta técnica se refleja en el uso de sub-programas:
conjunto de instrucciones que realizan una tarea específica.
• En C y lenguajes desendientes los sub-programas se denominan
funciones.
• Recibe valores de entrada (parámetros) y proporciona
• Un valor de salida (valor de retorno). La función se llama o invoca
cuando deseamos aplicarla.
Por que usar sub programas (módulos)
• Reducir la complejidad del programa (“divide y vencerás”).
• Eliminar código duplicado.
• Limitar los efectos de los cambios (aislar aspectos concretos).
• Ocultar detalles de implementación.
• Promover la reutilización de código.
• Mejorar la legibilidad del código.
• Facilitar la portabilidad del código.
Reglas de modularización
• En primer lugar, se debe saber que cada módulo tiene un significado
propio y debe asegurarse que cualquier cambio en la implementación
del módulo no afecte a su exterior (la ejecución de otros módulos).
Unidades modulares
• El lenguaje a utilizar debe proporcionar los mecanismos para
desarrollar estructuras modulares con las cuales se puedan describir
las diferentes unidades, así el lenguaje y el compilador reconozca
cada módulo para manipularlo y realizar las operaciones necesarias.
• Por ejemplo en c++ los módulos son archivos compilados
separadamente, el nombre de cada archivo puede contener el sufijo
.h –para indicar cabecera de archivo- o el sufijo .c –para las
implementaciones del modulo-; y las dependencias entre archivos se
manejan incluyendo las cabeceras #include en el archivo.
Interfaces adecuadas
• Cuando se estructura un programa en unidades es conveniente que
existan pocas interfaces y que estas sean pequeñas (su tamaño debe
ser pequeño con respecto al tamaño de los módulos implicados),
también los enlaces entre los diferentes módulos deben ser pocos,
permitiendo así que los módulos se enlacen por un numero pequeño
de llamadas.
Interfaces explicitas
• La interfaz se debe declarar y describir explícitamente, el programa
debe especificar cuales son los datos y operaciones que un módulo
trata de exportar y cuales deben permanecer ocultos del exterior. El
programador debe comprender como funciona el programa y el
compilador debe poder comprobar si el código que accede al modulo
se ha escrito correctamente.
Ocultación de información
• Todos los módulos deben seguir el principio de ocultación de la
información, cada modulo deber ser cerrado, es decir, que debe ser
útil y completamente terminado; y al mismo tiempo debe ser abierto,
es decir, sujeto a cambios y modificaciones.
• En lenguajes de programación clásica la modularización se centra en
subprogramas (procedimientos, funciones y subrutinas); en lenguajes
orientados a objetos, la modularización o partición del problema se
resuelve a través de los tipos abstractos de datos.
Crear un archivo de cabecera
• Crearemos una librería de funciones.
• Primero crearemos el archivo cabecera .h. Éste archivo debe tener todos los prototipos de
funciones y definiciones de tipos de datos de nuestra librería.
• Luego creamos el archivo del código de la librería. Contiene el código de todas las funciones que
fueron escritas en el archivo de cabecera.
Archivo de encabezado libreria.h
Archivo de código de la librería libreria.c
Probando nuestra librería
Conclusiones
• La modularidad nos permite resolver un problema grande al dividirlo
en partes manejables y resolver cada parte por separado.
• Los módulos deben ser independientes.
• Los módulos se comunican a través de interfaces que definen los
parámetros necesarios para su operación.
Descargar