PDF de programación - 2 - Diseño modular

Imágen de pdf 2 - Diseño modular

2 - Diseño modulargráfica de visualizaciones

Publicado el 10 de Marzo del 2019
1.406 visualizaciones desde el 10 de Marzo del 2019
356,6 KB
31 paginas
Creado hace 19a (21/10/2004)
Departamento de Lenguajes y
Ciencias de la Computación



Diseño Modular


2


Contenido
_________________________________________________________________________________________


1. Introducción.
2. Ventajas de la modularización de programas.
3. Módulos de biblioteca.
4. Compilación separada.
5. Modularización en Dev-C++



Diseño de Algoritmos. J.L.Leiva O.



Página 1


Departamento de Lenguajes y
Ciencias de la Computación



1. Introducción.
¿Por dónde empezaste a escribir tu programa? Seguramente, después de una lectura
rápida de las especificaciones y de los requisitos del programa la siguiente tarea fue la
escritura del código en algún lenguaje de programación. Posteriormente comenzaría la
ardua tarea de corregir errores, depurar el código, cambiar la lógica del programa, etc.

Realizar un proyecto grande de software requiere la participación de un equipo de
programadores, que necesitan una buena planificación, organización y comunicación
entre ellos para conseguir su meta. La ingeniería del software, afortunadamente,
proporciona técnicas para facilitar el desarrollo de programas.

¿Qué significa resolver un problema?

El término resolver un problema significa, a grandes rasgos, llevar a cabo todo el
proceso de definición del problema y desarrollo de una solución, a modo de programa,
que lo resuelva.

Una solución consta de dos componentes: algoritmos y estructuras de datos. Un
algoritmo es una especificación concisa de un método para resolver un problema. Un
algoritmo suele operar sobre una colección de datos.

Inconvenientes de la programación tradicional

Convencionalmente, la programación no seguía ningún tipo de metodología. Esto
presenta una serie de desventajas:

• rigidez e inflexibilidad de los programas,
• pérdida excesiva de tiempo en la corrección de errores
• documentación deficiente e ineficiente, incluso mala,
• imposibilidad de reutilizar el código o fragmentos del mismo en proyectos

futuros

Diseño de Algoritmos. J.L.Leiva O.



Página 2


Departamento de Lenguajes y
Ciencias de la Computación



Diseño Top-Down

Cuando se escriben programas de un tamaño y complejidad moderados, se encuentra
una gran dificultad para abarcar todo el programa de una sola vez. La filosofía del
diseño top-down consiste en llevar a cabo una tarea mediante pasos sucesivos a un
nivel de detalle cada vez más bajo. Para ello sería necesario dividir un programa en
diferentes módulos procedimientos, funciones y otros bloque de código. El diseño
top-down es una de las metodologías más empleadas en programación. Está basada en
la técnica de resolución humana de problemas: divide y vencerás. Consiste en dividir el
algoritmo en unidades más pequeñas sucesivamente hasta que sean directamente
ejecutables en el ordenador.



Programa
Modular

Programa
Principal

Procedimiento

P1

Función F

Procedimiento

P2



Normalmente, los componentes (P1, F, P2) son bastante independientes del algoritmo
principal y podrían ser diseñados sin considerar el contexto. Estos componentes reciben
el nombre de módulos: “un algoritmo autocontenido, que puede ser diseñado
independientemente del contexto en el que va a ser usado.”

Herramientas: procedimientos y funciones y, según el lenguaje, módulos (ej.,

Módula-2).

Ejemplo: supongamos que queremos encontrar la mediana de una colección de
datos. Al principio, cada módulo es poco más que una sentencia de qué se necesita
resolver y se evitan los detalles de cómo hacerlo. Los módulo se van refinando en
pasos sucesivos que resuelven problemas cada vez más pequeños y concretos y
contienen más detalles acerca de cómo resolver el problema. El proceso de refinamiento

Diseño de Algoritmos. J.L.Leiva O.



Página 3


Departamento de Lenguajes y
Ciencias de la Computación



continúa hasta que los módulos en la parte baja de la jerarquía son suficientemente
simples como para ser traducidos a un lenguaje de programación. Un programa de este
tipo se dice que es modular. Los módulos diseñados son independientes estre sí,
excepto en el interfaz que los comunica.



Encontrar
Mediana

Leer datos en el

vector

Ordenar vector

Elegir el elemento
medio del vector

Pedir
valores

Almacenar

Método 1

Método 2

Método 1

Método 2



Abstracción procedural

Cuando se utiliza el diseño top-down y la modularidad para resolver un problema, cada
algoritmo comienza como una caja negra. A medida que la resolución del problema
avanza, se definen gradualmente las cajas negras hasta que se implementan las acciones
que especifican en algún lenguaje de programación. Cada caja negra especifica qué se
hace, no como se hace. A la vez, ninguna caja negra debe saber cómo otra caja negra
realiza una tarea, sino sólo qué acción realiza. Los distintos componentes de una
solución deben mantenerse aislados unos de otros.

Típicamente, esas cajas negras se implementan como subprogramas. La
abstraccion procedural separa el propósito de un programa de su implementación.
Una vez que el programa ha sido escrito es posible usarlo sin necesidad de conocer las
particularidades de su algoritmo, con sólo tener una definición de la acción que realiza y
una descripción de los parámetros que maneja.
Diseño de Algoritmos. J.L.Leiva O.



Página 4


Departamento de Lenguajes y
Ciencias de la Computación



La modularidad y la abstracción procedural se complementan una a otra. La
modularidad implica dividir una acción en módulos; la abstracción procedural implica
especificar cada módulo claramente antes de ser implementado. Estos principios
permiten la modificación de partes de la solución sin afectar a otras partes de la misma.

Ocultación de información

La abstracción resalta los aspectos fundamentales de los módulos y las estructuras de
datos de manera que pueden ser vistos como cajas negras. La abstracción permite hacer
públicas características de funcionamiento (qué hace) de los módulos, pero también
establece mecanismos para ocultar detalles de los módulos que deben ser privados
(sobre cómo hace tal cosa).

El principio de ocultación de la información no sólo oculta los detalles en cajas

negras, sino que asegura que ninguna otra caja negra puede acceder a esos datos.


Ejemplo: programa que opera sobre un array ordenado. Sean Q un módulo o
subprograma que opera sobre un array; sea T un módulo que realiza la ordenación
de un array. El aislamiento no puede ser total, dado que Q tienen que saber qué
hace T (ordenar) y como “ordenarle” la tarea. En realidad existe un “pasillo” que
es la interfaz de comunicación entre los módulos mediante una llamada y pase de
parámetros.



Q

P



Diseño de Algoritmos. J.L.Leiva O.



Página 5


Departamento de Lenguajes y
Ciencias de la Computación



Si T realiza una ordenación de elementos sobre un array de enteros, de no más de
MaxArray componentes, Q no debe saber cómo T realiza la ordenación pero si
que debe “pasarle” un array de enteros y de longitud MaxArray.

Las especificaciones suponen un conjunto de condiciones que deben cumplirse para
que se ejecute un módulo. Puede verse como un contrato entre los módulos implicados
que ayuda a descomponer el problema en tareas más pequeñas y, en caso de proyectos
en equipo, a depurar responsabilidades. El contrato debe especificar: cómo usar la
rutina o tarea; qué hace la rutina (resultado de su ejecución).

Modularidad



Una implementación modular generalmente se sigue de una solución desarrollada
mediante diseño top-down. La modularidad tiene un impacto favorable sobre los
siguientes aspectos de la programación:


Construcción del programa. La tarea de construir un programa muy grande se
reduce a escribir varios programas pequeños. Esto permite a los equipos de
programadores que cada uno pueda trabajar en modulos independientes.
Depuración de un programa. La tarea de depurar un programa muy grande se
reduce a la depuración de varios programas pequeños. Cuando se comienza la
codificación de un módulo, es una buena práctica haber comprobado previamente
la corrección de los módulos codificados previamente. La comprobación debe ser
extensiva, tanto de manera independiente, como integrado en el contexto del
programa global, llamándolo mediante el uso de los parámetros elegidos para
inducir todos los posibles comportamientos del módulo. La modularidad aísla
los errores. Existe métodos formales para establecer la corrección de un
programa.

Diseño de Algoritmos. J.L.Leiva O.



Página 6


Departamento de Lenguajes y
Ciencias de la Computación





Lectura de un programa. La modularidad aumenta la legibilidad y comprensión
de un programa. Un módulo bien escrito debe ser inteligible a partir de su
nombre, los comentarios escritos en su cabecera y los nombres de los módulos
que los llaman.

• Modificación de un programa. Un pequeño cambio en los requerimientos de un
programa debería implicar sólo un pequeño cambio del código. Un programa
modular requerirá cambios sólo en unos pocos módulos. La modularidad aísla
las modificaciones.
Eliminación de la redundancia de código. Se pueden localizar operaciones que
ocurren en diferentes lugares de un programa e implementarlas en subprogramas.
Esto significa que el código de una operación aparecerá una sola vez, aumentando
así tanto la legibilidad como la modificabilidad del programa.



Criterios de
  • Links de descarga
http://lwp-l.com/pdf15466

Comentarios de: 2 - Diseño modular (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad