El documento describe los principios del diseño estructurado en programación, incluyendo la descomposición de problemas en módulos modulares, jerárquicos e independientes. Explica conceptos como módulos, conexiones, comunicación entre módulos a través de datos y banderas, y otros símbolos como secuencia, iteración y decisión. También incluye un ejemplo completo de diagrama de estructura.
2. DISEÑO ESTRUCTURADO
• En programación y diseño de algoritmos, el diseño estructurado persigue elaborar
algoritmos que cumplan la propiedad de modularidad, para ello, dado un problema
que se pretende resolver mediante la elaboración de un programa de ordenador, se
busca dividir dicho programas en módulos siguiendo los principios de diseño de
Descomposición por refinamientos sucesivos, creación de una Jerarquía modular y
elaboración de módulos independientes.
3. MODULO
• El modulo representa un programa, subprograma o rutina, dependiendo del
lenguaje que se vaya a utilizar. Se representa en el diagrama mediante u rectángulo.
• El diseño estructurado no ha impuesto la restricción de que un modulo tenga que
ser compilado independientemente
• Se considera al modulo como aquella parte de código que se puede llamar
• Es, por tanto, algo que admite parámetros de llamada y retorna algún valor, si es
preciso
4. CONEXIÓN
• La conexión entre módulos se representa mediante una línea
• En la figura que se muestra a continuación se representa que:
• A llama a B
• B hace su función
• B retorna a A, inmediatamente después del lugar donde
Se produjo la llamada de A a B
El diagrama no dice nada sobre el código de A ni el de B,
Lo único que se sabe es que en A existe una sentencia del
Tipo CALL B
5. COMUNICACIÓN
• Los signos para llevar a cabo la comunicación entre módulos son:
• En la siguiente figura donde “Obtener datos clientes llama
• a “encontrar nombre cliente” comunicándose la
• siguiente información:
• Numero cuenta cliente (DATO)
• Nombre cliente (DATO)
• Numero cuenta OK (FLAG)
6. DIFERENCIAS ENTRE DATOS Y FLAGS
• Los datos son la información compartida por los módulos, tanto por el llamado
como por el que llama. La posición de la flecha (hacia arriba o hacia abajo) indican
el sentido de la comunicación. Algo esencial es que los datos se van a procesar,
mientras que los controles (flags) no. Los controles van a indicar el modulo que
llama la terminación EOF, o error de modulo llamado y deben ir siempre en sentido
ascendente.
• Los datos tienen gran importancia para el sistema en si mismo, hacia el exterior, Los
flags tienen importancia en la comunicación de información en el interior; son los
que sincronizan la operatividad de los módulos
7. OTROS SÍMBOLOS
• Secuencia: Cuando un modulo llama a varios, y esto se realiza solamente una vez, la
forma de representarlo es la siguiente:
Los módulos inferiores son los que realizan las tareas correspondientes y los
superiores lo que coordinan, por medio de los datos que se les va entregando
8. OTROS SÍMBOLOS
• Iteración: Si además de haber llamadas a varios módulos, cada uno de estos
módulos inferiores se ejecuta varias veces, se representa como iteración con el
símbolo que aparece en la figura que aparece a continuación
• Este símbolo representa llamadas múltiples a los tres módulos mas bajos en la
jerarquía y en este caso se realizaran los tres en esa secuencia
9. OTROS SÍMBOLOS
• Decisión: Cuando existe una selección de camino, el modulo superior tendrá que
realizar una decisión. Gráficamente se representa por medio de un diamante que
abarcara aquellas conexiones que formen parte de esta toma de decisión
• El modulo calcular premio contiene una
decisión del tipo:
• IF EDAD GT 21
• THEN CALL CALCULAR PREMIO ADULTO
• ELSE CALL CALCULAR PREMIO NIÑO
11. EJEMPLO DE UN DIAGRAMA DE
ESTRUCTURA COMPLETO
• Sobre la figura anterior se pueden añadir cuatro detalles:
• El modulo “Calcular deducciones normales” aparece solo una vez, aunque tienen dos
“padres”.
• Esto se hace para simplificar la escritura y el mantenimiento
• Escribir el modulo solo una vez, hace mas fácil comprobar el numero y tipo de parámetros con
los que los módulos padres llaman (consistencia de interfase)
• Se seguirá un criterio de lectura de izquierda a derecha, para conocer el orden en que se
realizan las llamadas a los módulos
• Esta permitido que un modulo, por ejemplo el que realiza la llamada, reconozca una
variable con un nombre, y otro, por ejemplo el llamado, la reconozca con uno diferente
12. EJEMPLO DE UN DIAGRAMA DE
ESTRUCTURA COMPLETO
• El nombre de un modulo resume su función, es decir, lo que realiza para su padre. No tienen
que resumir la función que realizan sus hijos.
• Este Diagrama de Estructura de Cuadros se basa en tres principios fundamentales
• Descomposición
• Jerarquía
• Independencia
13. DESCOMPOSICIÓN
• La descomposición es la separación de una función en otras que estuvieran
contenidas en la primera
• La descomposición consigue los siguientes objetivos:
• Reducir el tamaño del módulos
• Hacer el sistema mas fácil de entender y modificar
• Minimizar la duplicidad de código
• Crear módulos útiles
• El problema puede surgir cuando el diseñador se pregunte en que momento debe
dejar de descomponer módulos
• Se debe dejar de descomponer cuando no se encuentren funciones bien definidas
• Se puede parar la descomposición cuando la interfase con un módulos sea tan
complicada como el modulo en si mismo
14. JERARQUÍA
• Al dividir los módulos jerárquicamente, es posible controlar el numero de ellos que
interactúan directamente con cualquiera de los otros
• El objetivo de aplicar una jerarquía de módulos es conseguir separar los módulos
que realizan tareas de calculo y edición de aquellos que toman decisiones y llaman
a otros en donde los módulos de niveles módulos
• Se debe lograr un tipo de organización en donde los módulos de niveles medios y
altos del diagrama, ejerzan el trabajo de coordinación y manipulación de los
módulos de niveles mas bajos, que son los que deben realizar tareas de calculo y
edición
15. INDEPENDENCIA
• Si los módulos individuales son completamente independientes unos de otros,
entonces el esfuerzo total implicado en el desarrollo del sistema es una función
lineal del numero de módulos del sistema
• La definición de módulos esta cerca de la idea de “caja negra”, un modulo no tienen
que preocuparse de los detalles de la construcción interna del resto de los módulos
• Hay que ver a los módulos solamente por su función y por su apariencia externa.