Você está na página 1de 8

Introduccin a la Programacin

Diseo Estructurado de Sistemas

Diseo Estructurado de Sistemas


El diseo estructurado de sistemas se ocupa de la identificacin, seleccin y organizacin de los mdulos y sus relaciones. Se comienza con la especificacin resultante del proceso de anlisis, se realiza una descomposicin del sistema en mdulos estructurados en jerarquas, con caractersticas tales que permitan la implementacin de un sistema que no requiera elevados costos de mantenimiento. La idea original del diseo estructurado fue presentada en la dcada de los '70, por Larry Constantine, y continuada posteriormente por otros autores: Myers, Yourdon y Stevens.

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

Diseo Estructurado de Sistemas

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

Emitir cheques de pago a los Empleados


Pago lquido de jornaleros Registro de empleado asalariado

Nmero de empleado Nombre de empleado Pago lquido de asalariado Pago de empleado

Leer registro de Empleado


Valor hora Horas trabajadas

Calcular salario lquido para jornaleros


Pago bruto de jornaleros Detalle de impuesto

Calcular salario lquido para asalariados


Pago bruto de asalariados Detalle de impuesto

Imprimir cheque de pago


Pago bsico Bonos

Deducciones normales

Mdulo

Calcular salario bruto para jornalero

Calcular deducciones normales

Calcular salario bruto para asalariados

Fig. 1: Ejemplo de Diagrama de Estructura

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

Diseo Estructurado de Sistemas

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.

2.2 Relaciones entre Mdulos (Invocaciones)


En la realidad, los mdulos no son realmente cajas negras. Los diagramas de estructura muestran las invocaciones que un mdulo hace a otros mdulos. Estas invocaciones son diseadas como una flecha que sale del mdulo llamador y apunta al mdulo llamado. La Fig. 2 muestra un ejemplo:
A Mdulo llamador Invocacin Mdulo llamado B C D

Fig. 2: Ejemplo de Invocacin

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

Diseo Estructurado de Sistemas

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.).

2.3 Comunicacin entre Mdulos (Cuplas)


Cuando una funcin o un procedimiento, en un lenguaje convencional, es invocado, comnmente un conjunto de argumentos es comunicado y, en el caso de las funciones, tambin se espera que retorne un resultado. Estos datos comunicados en una invocacin son modelados por medio de flechas, sobre el smbolo de invocacin, llamadas cuplas.
Cupla de datos Cupla sin tipo (o de datos o de control o hbrida)
X Y Z W h

A
f

Cupla modificada Cupla de control (flag) Cupla hbrida (datos y control) D

Fig. 3: Ejemplo de invocacin con cuplas

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

Diseo Estructurado de Sistemas

3.

Criterios de Validacin de Calidad

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

Diseo Estructurado de Sistemas

3.3 Descomposicin (Factoring)


La descomposicin es la separacin de una funcin contenida en un mdulo, para un nuevo mdulo. Puede ser hecha por cualquiera de las siguientes razones. 3.3.1 Reducir el tamao del mdulo La descomposicin es una manera eficiente de trabajar con mdulos grandes. Un buen tamao para un mdulo es alrededor de media pgina (30 lneas). Ciertamente, toda codificacin de un mdulo debera ser visible en una pgina (60 lneas). La cantidad de lneas no es un patrn rgido, otros criterios para determinar cuando es conveniente terminar de realizar la descomposicin, son los siguientes: Funcionalidad: Terminar de realizar la descomposicin cuando no se pueda encontrar una funcin bien definida. No empaquetar lneas de cdigo dispersas, de otros mdulos, porque probablemente juntas podrn formar mdulos con mala cohesin. Complejidad de Interfaz: Terminar de realizar la descomposicin cuando la interfaz de un mdulo es tan compleja como el propio mdulo. Un mdulo de mil lneas es muy confuso, mas mil mdulos de una lnea son an ms confusos. 3.3.2 Hacer el sistema ms claro La descomposicin no debera ser hecha de una manera arbitraria, los mdulos resultantes de la descomposicin de un mdulo deben representar sub-funciones del mdulo de mas alto nivel en el DE. En una descomposicin no se debe preocupar por conceptos de programacin. Si una sub-funcin, presentada como un mdulo separado permite una mejor comprensin del diseo, puede ser subdividida, an cuando, en una implementacin, el cdigo del mdulo sea programado dentro del mdulo jefe. 3.3.3 Minimizar la duplicacin de cdigo Cuando se reconoce una funcin que puede ser reutilizada en otras partes del DE, lo mas conveniente es convertirla en un mdulo separado. As, se puede localizar mas fcilmente las funciones ya identificadas y evitar la duplicacin del mismo cdigo en el interior de otro mdulo. De esta manera, los problemas de inconsistencia en el mantenimiento (si esa funcin debe ser modificada) pueden ser evitados, y se reduce el costo de implementacin. 3.3.4 Separar el trabajo de la administracin Un administrador o gerente de una compaa bien organizada debera coordinar el trabajo de los subordinados en lugar de hacer el trabajo. Si un gerente hace el trabajo de los subordinados no tendr tiempo suficiente para coordinar y organizar el trabajo de los subordinados y, por otro lado, si hace el trabajo los subordinados no seran necesarios. Lo mismo se puede aplicar al diseo del DE, relacionado a los mdulos de Trabajo (edicin, clculo, etc.) y a los mdulos de Gerencia (decisiones y llamadas para otros mdulos). El resultado de este tipo de organizacin es un sistema en el cual los mdulos en los niveles medio y alto de un DE son fciles de implementar, porque ellos obtienen el trabajo hecho por la manipulacin de los mdulos de los niveles inferiores. La separacin del trabajo de la administracin mejora la mantenibilidad del diseo. Una alteracin en un sistema es: un cambio de control o un cambio de trabajo, pero raramente ambos.

Pgina 6 de 8

2006

Introduccin a la Programacin

Diseo Estructurado de Sistemas

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

Diseo Estructurado de Sistemas

4.

Algunas consideraciones adicionales

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

Você também pode gostar