Programación modular

Clasificado en Otras materias

Escrito el en español con un tamaño de 5,29 KB

 

Metodología de diseño

Programación modular

A la hora de desarrollar un programa pequeño, cualquier metodología puede valer. El problema surge cuando ese programa va creciendo, con lo que la cantidad de sentencias lo hace poco legible y ya no es posible hacer un seguimiento lógico de su ejecución. Otro factor a tener en cuenta, es que la persona que lea un código no tiene porqué ser la misma que lo ha escrito. Aún más, es posible que sean diferentes programadores los que intervengan en el desarrollo de una aplicación.

Parece claro que la solución pasa por la formulación de programas complejos a partir de secuencias pequeñas, o módulos, cada uno de los cuales realiza una tarea bien definida. Es lo que se denomina una programación modular.

Pero la modularidad no sólo debe estar presente en el código, debe estarlo en todo el desarrollo, a través de las siguientes tareas:

    • Especificación precisa de lo que tiene que hacer el programa.
    • División del problema global en tareas.
    • Definición exacta de lo debe hacer cada tarea y de cómo tienen que comunicarse entre sí.
    • Escritura de las tareas en lenguaje ensamblador y conexión de los módulos para formar el programa.
    • Depuración y comprobación del programa.
    • Documentación del programa.

La principal ayuda utilizada para la división del programa en módulos es el diagrama jerárquico, que es una figura orientada a bloques que resume las relaciones entre los módulos (tareas) y submódulos (subtareas). El diagrama jerárquico muestra la cadena de subordinaciones que existen entre los módulos y submódulos. Es una gran ayuda tanto para el programador como para cualquier otra persona que quiera analizar el programa, ya que permite ver de forma clara su estructura funcional.

Las razones para dividir un programa en partes más pequeñas pueden ser:

    • Los módulos son más sencillos de comprender.
    • Se pueden asignar diferentes módulos a programadores distintos.
    • La depuración y la comprobación pueden realizarse de una forma más ordenada.
    • La documentación puede comprenderse más fácilmente.
    • Las modificaciones pueden localizarse.
    • Las tareas de uso más frecuente pueden programarse como módulos que se almacenan en librerías para ser utilizados por varios programas.

Cuando se diseñan los módulos de un programa debe tenerse en cuenta cómo se entra y se sale de él, acoplamiento de control, y la forma en que se comunica la información entre ellos, o acoplamiento de los datos. En general, la selección tareas y el diseño de los módulos deberían ser tales que resulte simple el acoplamiento de control y minimice el acoplamiento de los datos.

La mayoría de los ensambladores están diseñados para ayudar en el proceso de modularización en tres formas, básicamente:

    • Permitir que los datos estén estructurados de forma que puedan ser accedidos por varios módulos.
    • Proporcionar mecanismos del tipo procedimientos o subrutinas.
    • Permitir la inserción de secciones de código, conocidas como macros, mediante la utilización de sentencias sencillas.

Proceso de ensamblaje

Un ensamblador es el programa que convierte un listado de código fuente en código objeto, es decir, lenguaje máquina (el que finalmente interpretará el procesador) en el que sólo le faltan las referencias a rutinas externas. El código fuente es un fichero que contiene la secuencia de instrucciones en lenguaje ensamblador que forma el programa, así como ciertas directivas o comandos para el propio ensamblador, que ha sido creado utilizando un editor de texto. El código objeto consta del código en lenguaje máquina y de la información necesaria para enlazarlo con otros módulos objeto.

Enlace y reubicación

Al construir un programa algunos de sus módulos pueden colocarse en el mismo módulo fuente y ensamblarse juntos, otros pueden estar en módulos diferentes y ser ensamblados separadamente. Si se ensamblan por separado, el módulo principal, que contiene la primera instrucción que se va a ejecutar, debe acabar con una sentencia END que indique el punto de entrada al programa, y cada uno de los otros módulos deben terminar con una sentencia END sin ningún operando. En cualquier caso, los módulos objeto resultantes, algunos de los cuales pueden estar agrupados en librerías, deben ser enlazados para formar el módulo de carga, antes de que se pueda ejecutar el programa. Además de dar como salida el módulo de carga, el linker o enlazador imprime un mapa de memoria que indica donde serán cargados los módulos objeto en la memoria. Después de crearse el módulo de carga, éste es cargado por el cargador en la memoria del ordenador y comienza la ejecución.