República Bolivariana de Venezuela
Ministerio del Poder Popular para la educación
Instituto Universitario de Tecnología Industrial Rodolfo Loero Arismendi
Maturin Edo Monagas
Profesor:
Estudiantes:
Aureliano Alfonzo Luis Requena 29.516.250
Introducción
Las aplicaciones informáticas que habitualmente se utilizan, incluso a nivel de informática
personal, suelen contener decenas y aún cientos de miles de líneas de código fuente. A medida
que los programas se van desarrollando y aumentan de tamaño, se convertirían rápidamente
en sistemas poco manejables si no fuera por la modularización, que es el proceso consistente
en dividir un programa muy grande en una serie de módulos mucho más pequeños y
manejables. A estos módulos se les suele denominar de distintas formas (subprogramas,
subrutinas, procedimientos, funciones, etc.) según los distintos lenguajes. Sea cual sea la
nomenclatura.
Concepto
La programación modular es un paradigma de programación que consiste en dividir un programa en
módulos o subprogramas con el fin de hacerlo más legible y manejable.
Un módulo es cada una de las partes de un programa que resuelve uno de los subproblemas en que se
divide el problema complejo original. Cada uno de estos módulos tiene una tarea bien definida y algunos
necesitan de otros para poder operar. En caso de que un módulo necesite de otro, puede comunicarse
con éste mediante una interfaz de comunicación que también debe estar bien definida. Si bien un
módulo puede entenderse como una parte de un programa en cualquiera de sus formas y variados
contextos, en la práctica se los suele tomar como sinónimos de procedimientos y funciones. Pero no
necesaria ni estrictamente un módulo es una función o un procedimiento, ya que el mismo puede
contener muchos de ellos. Características de un módulo Tamaño relativamente pequeño: Esto facilita
aislar el impacto que pueda tener la realización de un cambio en el programa, bien para corregir un
error, o bien por rediseño del algoritmo correspondiente. Independencia modular: Cuanto más
independientes son los módulos entre sí más fácil y flexiblemente se trabajará con ellos, esto implica
que para desarrollar un módulo no es necesario conocer detalles internos de otros módulos. Como
consecuencia de la independencia modular un módulo cumplirá: Características de caja negra, es decir
abstracción. Aislamiento de los detalles mediante encapsulamiento. La independencia modular mejora
el rendimiento humano, pudiendo realizarse programación en equipo y desarrollar módulos
paralelamente. También contribuye a la reutilización de software.
Función
De los métodos más conocidos para resolver un problema, es dividirlo en problemas más pequeños,
llamados subproblemas. De esta manera, en lugar de resolver una tarea compleja y tediosa, resolvemos
otras más sencillas y a partir de ellas llegamos a la solución. Esta técnica se usa mucho en programación
ya que programar no es más que resolver problemas, y se le suele llamar diseño descendente,
metodología del divide y vencerás o programación top-down.
Es evidente que si esta metodología nos lleva a tratar con subproblemas, entonces también tengamos la
necesidad de poder crear y trabajar con subprogramas para resolverlos. A estos subprogramas se les
suele llamar módulos, de ahí viene el nombre de programación modular. En Pascal disponemos de dos
tipos de módulos: los procedimientos y las funciones.
Tipos
Los parámetros por valor:
Los parámetros por valor tienen dicho nombre porque lo que recibe el subprograma no son más que
copias de los valores de los datos que el programa invocador le pasa. Por tanto, si en el procedimiento
modificamos alguno de estos valores, los datos originales permanecerán inalterados
Los parámetros por referencia:
En cambio, en los parámetros por referencia lo que se pasa al procedimiento son los datos en sí. Y si
éste los modifica, los cambios permanecerán una vez que la ejecución vuelva al módulo que invocó al
procedimiento. Se utilizan para obtener valores de los cálculos que haga un subprograma.
Ejemplos de la Programación Modular
Historia
Se presenta históricamente como una evolución de la programación estructurada para solucionar
problemas de programación más grandes y complejos de lo que esta puede resolver.
Los avances en la programación de computadoras han permitido crear hermosas y grandes aplicaciones,
que no se pueden comparar a los primeros programas que se creaban en los años 1960’s y 1970’s. Sin
embargo, las aplicaciones modernas requieren un mayor esfuerzo para ser desarrolladas y no es factible
que una persona se encargue de todo el proceso, desde su concepción, análisis, desarrollo,
implementación y puesta en marcha. Por ello, las empresas que se dedican al desarrollo de software
trabajan en base a equipos de desarrollo, en donde a cada integrante se le asigna una etapa del proceso.
A su vez, el equipo de desarrollo se compone de varios programadores que reciben los requisitos del
sistema y trabajan en conjunto para implementarlo. Esto implica que la tarea de programación se
distribuye a través de varios programadores.
Como sabemos, las primeras computadoras eran máquinas grandes, muy complejas y que su capacidad
para resolver problemas era muy limitada. En esa época, programar implicaba conectar o desconectar
un circuito. Posteriormente aparecieron las tarjetas perforadas, el lenguaje ensamblador y los primeros
lenguajes de alto nivel como FORTRAN, ALGOL, entre otros.
Objetivos de la Programación Modular
La programación modular consiste en la descomposición de un programa en trozos más pequeños
denominados módulos o subprogramas, en el que cada uno de ellos se encargara de llevar a cabo una
tarea concreta y bien definida, y se agrupara según su funcionalidad. Cada uno de estos módulos se
analizara y codificara por separado.
Simplemente consiste en descomponer un problema complejo o grande en partes más pequeñas. Estas
partes pequeñas reciben diferentes nombres como módulos, subprogramas, funciones, procedimientos
y/o métodos. De forma general las llamaremos módulos y de manera específica orientada al lenguaje
Java las llamaremos métodos.
Ejemplo
Un ejemplo de cómo emplear el diseño descendente para resolver un problema. Supongamos que un
profesor quiere crear un programa para gestionar las notas de sus alumnos. Quiere que dicho programa
le permita realizar tareas tales como asignar notas, cambiar notas, ver las notas según distintas
calificaciones, etc.
Los procedimientos
Un procedimiento es un subprograma que realiza una tarea específica. Para invocarlo, es decir, para
hacer que se ejecute, basta con escribir su nombre en el cuerpo de otro procedimiento o en el programa
principal. Pero, hay que tener muy en cuenta que su declaración debe hacerse antes de que sea llamado
por otro módulo.
Una vez que has construido varios programillas en Pascal, crear un procedimiento no es nada
complicado, pues tiene prácticamente la misma estructura que un programa. Veamos las secciones que
comparten y no comparten un procedimiento y un programa principal:
Mientras que en el programa la cabecera consta de la palabra reservada program seguida del nombre
del programa, en un procedimiento se compone de la palabra procedure seguida del nombre del
procedimiento y una lista de parámetros que es [Link] secciones de declaración de constantes
(const), de tipos (type) y de variables (var) también pueden aparecer en la estructura de cualquier
[Link] al cuerpo del procedimiento, decir que al igual que el de un programa se
delimita por las palabras reservadas begin y end, y en su interior puede contener
sentencias simples o [Link] último, comentar que ambos difieren en el signo de puntuación
que marca su final, ya que en un programa es el punto y en un procedimiento es el punto y coma.
Ventajas de la Programación Modular
Un programa modular es más fácil de escribir y depurar (ejecutar, probar y poner a punto). Se
puede profundizar en las pruebas parciales de cada módulo mucho más de lo que se hace un
programa mayor.
Un programa modular es fácil de mantener y modificar.
Un programa modular es fácil de controlar. El desglose de un problema en módulos permite
encomendar los módulos más complejos a los programadores más experimentados y los más
sencillos a los programadores más noveles.
Posibilita el uso repetitivo de las rutinas en el mismo o en diferentes programas.
Desventajas de la Programación Modular
No se dispone de algoritmos formales de modularidad, por lo que a veces los programadores no
tienen claras las ideas de los módulos.
La programación modular requiere más memoria y tiempo de ejecución.
Las características:
Cada módulo deberá tener asignado un nombre propio que le diferencie de los otros y que será
usado para invocarlos.
Se puede transmitir información entre el módulo principal y el resto de los módulos a través de
parámetros.
Cada módulo puede ser programado y compilado por separado, y almacenado posteriormente
en librerías.
Cada módulo consta de dos partes: la cabecera, que es donde aparece el nombre y los datos que
se le pasan o genera, y el cuerpo o estructura interna, que es donde se desarrolla el código.
Permite trabajar en equipo. Cada programador puede desarrollar un módulo diferente y
posteriormente enlazarlos.
El tamaño del módulo debe encontrarse entre 20 y 200 líneas de código.
Los módulos con menos de 20 líneas de código pueden disminuir la eficiencia del programa.
Los módulos que contienen as de 200 líneas de código son difíciles de verificar y mantener.
Un módulo debe realizar una sola tarea y contenerla en su totalidad.
Un requisito necesario para el desarrollo de código modular es la existencia de un mecanismo
que permita el intercambio de datos entre módulos. En ensamblador existen técnicas que
permiten este intercambio.