Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Apuntes Diagrama Estructura
Apuntes Diagrama Estructura
1.
Introduccin
El diseo estructurado es un enfoque disciplinado de la transformacin de qu es necesario para el desarrollo de un sistema, a cmo deber ser hecha la implementacin. La definicin anterior implica que: el anlisis de requerimientos del usuario (determinacin del qu) debe preceder al diseo y que, al finalizar el diseo se tendr medios para la implementacin de las necesidades del usuario (el cmo), pero no se tendr implementada la solucin al problema. Cinco aspectos bsicos pueden ser reconocidos: 1. Permitir que la forma del problema gue a la forma de la solucin. Un concepto bsico del diseo de arquitecturas es: las formas siempre siguen funciones. 2. Intentar resolver la complejidad de los grandes sistemas a travs de la segmentacin de un sistema en cajas negras, y su organizacin en una jerarqua conveniente para la implementacin. 3. Utilizar herramientas, especialmente grficas, para realizar diseos de fcil comprensin. Un diseo estructurado usa diagramas de estructura (DE) en el diseo de la arquitectura de mdulos del sistema y adiciona especificaciones de los mdulos y cuplas (entradas y salidas de los mdulos), en un Diccionario de Datos (DD). 4. Ofrecer un conjunto de estrategias para derivar el diseo de la solucin, basndose en los resultados del proceso de anlisis. 5. Ofrecer un conjunto de criterios para evaluar la calidad de un diseo con respecto al problema a ser resuelto, y las posibles alternativas de solucin, en la bsqueda de la mejor de ellas. El diseo estructurado produce sistemas fciles de entender y mantener, confiables, fcilmente desarrollados, eficientes y que funcionan.
Pgina 1 de 8
2006
Introduccin a la Programacin
2.
Diagrama de Estructura
Los diagramas de estructura (DE) sirven para el modelamiento top-down de la estructura de control de un programa descripto a travs de un rbol de invocacin de mdulos. Fueron presentados en la dcada de los 70 como la principal herramienta utilizada en diseos estructurados, por autores como Constantine, Myers, Stevens e Yourdon. La Fig. 1 muestra un ejemplo:
Invocacin Cupla de Datos Cupla de Control Registro de
empleado Fin de archivo Registro de empleado
Deducciones normales
Mdulo
Un diagrama de estructura permite modelar un programa como una jerarqua de mdulos. Cada nivel de la jerarqua representa una descomposicin ms detallada del mdulo del nivel superior. La notacin usada se compone bsicamente de tres smbolos: Mdulos Invocaciones Cuplas
2.1 Mdulos
Un mdulo es un conjunto de instrucciones que ejecutan alguna actividad, un procedimiento o funcin en PASCAL, una funcin en C o un pargrafo en COBOL. Tal vez, la definicin ms precisa es que un mdulo es una caja negra, pero como ser mostrado a continuacin son cajas casi negras o grises. Desde un punto de vista prctico, un mdulo es una coleccin de instrucciones de un programa con cuatro caractersticas bsicas: 1. Entradas y Salidas: lo que un mdulo recibe en una invocacin y lo que retorna como resultado. 2. Funcin: las actividades que un mdulo hace con la entrada para producir la salida. 3. Lgica Interna: por la cual se ejecuta la funcin. 4. Estado Interno: su rea de datos privada, datos para los cuales slo el mdulo hace referencia.
Pgina 2 de 8
2006
Introduccin a la Programacin
Las entradas y salidas son, respectivamente, datos que un mdulo necesita y produce. Una funcin es la actividad que hace un mdulo para producir la salida. Entradas, salidas y funciones proveen una visin externa del mdulo. La lgica interna son los algoritmos que ejecutan una funcin, esto es, junto con su estado interno representan la visin interna del mdulo. Un mdulo es diseado como una caja, su funcin es representada por un nombre en el interior y las entradas y salidas de un mdulo son representadas por pequeas flechas que entran y salen del mdulo. Mdulo
E M S
Un mdulo es una caja negra conteniendo una coleccin de instrucciones y reas de datos locales. Los mdulos tienen una funcin, definida por el nombre contenido en el interior (M), datos de entrada y datos de salida generados por la aplicacin de la funcin a los datos de entrada.
En el ejemplo de la Fig. 2, el mdulo A invoca (o llama) a los mdulos B, C y D. La interpretacin de las invocaciones provee informacin de la estructura interna del mdulo llamador, que no concuerda con la idea de caja negra. Una caja negra no permite que se observe su interior y, las invocaciones que un mdulo hace son componentes de su estructura interna. De todas formas, se dice que un mdulo es una caja casi negra o caja gris porque ella permite que se observe solo las invocaciones. Los diagramas de estructura no tienen especificado el orden de invocacin de los mdulos invocados. El orden de dibujo de los mdulos B, C, y D (de izquierda a derecha) no debe ser interpretado como el orden de invocaciones ejecutado por el mdulo A. Ese orden puede ser cambiado, al dibujar, para evitar que se crucen flechas o se dupliquen mdulos, como ocurre con el mdulo Calcular Deducciones Normales en la Fig. 1. A pesar que el orden de invocacin de los mdulos del mismo nivel en un diagrama de estructura, no es especificado por el formalismo, se recomienda que siempre que fuese posible, se siga un orden de izquierda a derecha (si esto no produce que se crucen flechas) que se corresponde con el orden de invocacin, y permitiendo un orden de lectura que es patrn en la mayora de los idiomas.
Pgina 3 de 8
2006
Introduccin a la Programacin
Una invocacin, representa la idea de llamada a funciones o procedimientos en los lenguajes de programacin convencionales. A continuacin se describe una invocacin estndar: Invocacin Estndar
A B
El mdulo A invoca al mdulo B con la semntica de invocacin de procedimientos o funciones en los lenguajes de programacin convencionales (C, Pascal, etc.).
A
f
Como se muestra en la Fig. 3, existen varios tipos de cuplas, basado en lo que ellas pueden producir en el mdulo receptor, las cuales se describen a continuacin: Tipos de Cuplas Cupla de Datos Una cupla de datos transporta datos puros a un mdulo. No es necesario conocer la lgica interna del mdulo receptor, para determinar los valores vlidos de la cupla (ej.: nmero de cuenta, saldo, tabla de movimientos). Con una flecha doble (apuntando al modulo llamador y al mdulo llamado) se especifica un argumento enviado a un mdulo que deber modificar su valor, fijando un nuevo valor disponible para el mdulo llamador (en la implementacin, se precisar que el lenguaje posea un mecanismo de pasaje de parmetros por referencia) (ej.: el buffer enviado a un mdulo de lectura de un archivo). Existen mdulos que retornan valores sin la necesidad de que estn inicializados en el momento que se invocan. Estos casos son dos: 1. Cuplas similares al tipo Modificada cuyos valores previos a la invocacin del mdulo NO se utilizan para calcular el valor de retorno. Si bien en Pascal se implementa como las Cuplas Modificadas, es conveniente documentarlas en el DE como de Resultados por cuestiones de claridad. 2. Si el Mdulo en cuestin es una funcin (retorna un valor), se debe documentar este valor de retorno como Cupla de Resultado cuyo nombre se corresponder con el nombre de la funcin.
Cupla Modificad a
Cupla de Resultados
Pgina 4 de 8
2006
Introduccin a la Programacin
3.
Los diagramas de estructura son simplemente una herramienta para modelar los mdulos de un sistema y sus relaciones y, junto con las especificaciones de funcionalidad de los mdulos y las estructuras de datos de las cuplas, componen un diseo inicial que deber ser analizado y mejorado. Uno de los principios fundamentales del diseo estructurado es que un sistema grande debera particionarse en mdulos mas simples. Sin embargo, es vital que esa particin sea hecha de tal manera que los mdulos sean tan independientes como sea posible y que cada mdulo ejecute una nica funcin. Para que los diseos tengan esas cualidades, son necesarios algunos criterios de medicin que permitan clasificar y mejorar los diagramas de estructura. A continuacin se describen los criterios utilizados para mejorar un diseo.
3.1 Acoplamiento
El acoplamiento entre mdulos clasifica el grado de independencia entre pares de mdulos de un DE. El objetivo es minimizar el acoplamiento, es decir, maximizar la independencia entre mdulos. A pesar de que el acoplamiento, es un criterio que clasifica caractersticas de una invocacin (una relacin existente entre dos mdulos), ser usado para clasificar un DE completo. Un DE se caracteriza por el peor acoplamiento existente entre pares de sus mdulos, ya que ese es el problema que debe ser resuelto para mejorar la calidad del DE completo. Un bajo acoplamiento indica un sistema bien particionado y puede obtenerse de tres maneras: Eliminando relaciones innecesarias: Por ejemplo, un mdulo puede recibir algunos datos, innecesarios para l, porque debe enviarlos para un mdulo subordinado. Reduciendo el nmero de relaciones necesarias: Cuanto menos conexiones existan entre mdulos, menor ser la posibilidad del efecto en cadena (un error en un mdulo aparece como sntoma en otro). Debilitando la dependencia de las relaciones necesarias: Ningn mdulo se tiene que preocupar por los detalles internos de implementacin de cualquier otro. Lo nico que tiene que conocer un mdulo debe ser su funcin y las cuplas de entrada y salida (cajas negras).
3.2 Cohesin
Otro medio para evaluar la particin en mdulos (adems del acoplamiento) es observar como las actividades de un mdulo estn relacionadas unas con otras; este es el criterio de cohesin. Generalmente el tipo de cohesin de un mdulo determina el nivel de acoplamiento que tendr con otros mdulos del sistema. Cohesin es la medida de intensidad de asociacin funcional de los elementos de un mdulo. Por elemento debemos entender una instruccin, o un grupo de instrucciones o una llamada a otro mdulo, o un conjunto de procedimientos o funciones empaquetados en el mismo mdulo. El objetivo del diseo estructurado es obtener mdulos altamente cohesivos, cuyos elementos estn fuerte y genuinamente relacionados unos con otros. Por otro lado, los elementos de un mdulo no deberan estar fuertemente relacionados con elementos de otros mdulos, porque eso llevara a un fuerte acoplamiento entre ellos.
Pgina 5 de 8
2006
Introduccin a la Programacin
Pgina 6 de 8
2006
Introduccin a la Programacin
3.3.5 Crear mdulos ms generales Otra ventaja de la descomposicin es que, frecuentemente, se pueden reconocer mdulos ms generales y, as, ms tiles y reutilizables en el mismo sistema y, adems, pueden ser generadas bibliotecas de mdulos reutilizables en otros sistemas.
3.4 Fan-Out
El fan-out de un mdulo es usado como una medida de complejidad. Es el nmero de subordinados inmediatos de un mdulo (cantidad de mdulos invocados).
A
Fan-out de A=3
Si un mdulo tiene un fan-out muy grande, entonces compone el trabajo de muchos mdulos subordinados y, casi con certeza, tiene toda la funcionalidad no trivial representada por ese subrbol en el DE. Para tener acotada la complejidad de los mdulos se debe limitar el fan-out a no ms de siete ms o menos dos (7 2). Un mdulo con muchos subordinados puede fcilmente ser mejorado por descomposicin.
3.5 Fan-In
El fan-in de un mdulo es usado como una medida de reusabilidad, es el nmero de superiores inmediatos de un mdulo (la cantidad de mdulos que lo invocan).
B C D
Fan-in de A=3 Un alto fan-in es el resultado de una descomposicin inteligente. Durante la programacin, tener una funcin llamada por muchos superiores evita la necesidad de codificar la misma funcin varias veces. Existen dos caractersticas fundamentales que deben ser garantizadas en mdulos con un alto fan-in:
A
Buena Cohesin: Los mdulos con mucho fan-in deben tener alta cohesin, con lo cual es muy probable que tengan buen acoplamiento con sus llamadores. Interfaz Consistente: Cada invocacin para el mismo mdulo debe tener el mismo nmero y tipo de parmetros. En el ejemplo que sigue, hay un error.
B
Y X X Y Z
C
X
D
Y
??
Pgina 7 de 8
2006
Introduccin a la Programacin
4.
1. En primer trmino es importante destacar que bajo ningn aspecto es aceptable graficar una invocacin de un mdulo hacia otro que est dibujado ms arriba, es decir que no se puede dibujar ninguna flecha con sentido ascendente, a lo sumo se puede realizar una invocacin hacia un mdulo que est a la misma altura (hermano), en cuyo caso la flecha queda horizontal. 2. En los casos que exista una importante reutilizacin puede ser necesario dibujar el mismo mdulo en distintos lugares del grfico a fin de que las invocaciones existentes en el diagrama no se crucen. Cuando esto ocurre el mdulo debe ser dibujado en cada ocurrencia con la incorporacin de una lnea diagonal en el extremo superior izquierdo y un nmero que lo identifica (todos los cuadros que se refieren al mismo mdulo tienen el mismo nombre y el mismo nmero). Estos mdulos se grafican entonces de la siguiente manera:
1
Mdulo X
3. Adicionalmente, si algunos de estos mdulos u otros dentro de un diagrama de gran tamao deben continuar la cadena de invocacin se puede utilizar la siguiente sintaxis para desdoblar el diagrama de estructuras. En el diagrama original se incorpora un pentgono rotulado (en este caso a)
Mdulo X a Se comienza un diagrama aparte indicando en el inicio el mismo pentgono con idntico rtulo y continuando la grfica de los mdulos invocados por el mdulo original. a
...
...
Pgina 8 de 8
2006