El objetivo de este diagrama es representar la estructura modular del sistema o de un componente del mismo y definir los parámetros de entrada y salida de cada uno de los módulos.
Para su realización se partirá del modelo de procesos obtenido como resultado de la aplicación de la técnica de diagrama de flujo de datos (DFD).
Descripción
Un diagrama de estructura se representa en forma de árbol con los siguientes elementos:
- Módulo: división del software clara y manejable con interfaces modulares perfectamente definidas. Un módulo puede representar un programa, subprograma o rutina dependiendo del lenguaje a utilizar. Admite parámetros de llamada y retorno. En el diseño de alto nivel hay que ver un módulo como una caja negra, donde se contemplan exclusivamente sus entradas y sus salidas y no los detalles de la lógica interna del módulo.
Para que se reduzca la complejidad del cambio ante una determinada modificación, es necesario que los módulos cumplan las siguientes condiciones:- Que sean de pequeño tamaño.
- Que sean independientes entre sí.
- Que realicen una función clara y sencilla.
- Conexión: representa una llamada de un módulo a otro.
- Parámetro: información que se intercambia entre los módulos. Pueden ser de dos tipos en función de la clase de información a procesar:
- Control: son valores de condición que afectan a la lógica de los módulos llamados. Sincronizan la operativa de los módulos.
- Datos: información compartida entre módulos y que es procesada en los módulos llamados.
Otros componentes que se pueden representar en el diagrama de estructura son:
- Módulo predefinido: es aquel módulo que está disponible en la biblioteca del sistema o de la propia aplicación, y por tanto no es necesario codificarlo.
- Almacén de datos: es la representación física del lugar donde están almacenados los datos del sistema.
- Dispositivo físico: es cualquier dispositivo por el cual se puede recibir o enviar información que necesite el sistema.
Estructuras del diagrama
Existen ciertas representaciones gráficas que permiten mostrar la secuencia de las llamadas entre módulos. Las posibles estructuras son:
- Secuencial: un módulo llama a otros módulos una sola vez y, se ejecutan de izquierda a derecha y de arriba abajo.
- Repetitiva: cada uno de los módulos inferiores se ejecuta varias veces mientras se cumpla una condición.
- Alternativa: cuando el módulo superior, en función de una decisión, llama a un módulo u otro de los de nivel inferior.
Principios del diseño estructurado
El diagrama de estructura se basa en tres principios fundamentales:
- La descomposición de los módulos, de manera que los módulos que realizan múltiples funciones se descompongan en otros que sólo realicen una. Los objetivos que se persiguen con la descomposición son:
- Reducir el tamaño del módulo.
- Hacer el sistema más fácil de entender y modificar y por lo tanto facilitar el mantenimiento del mismo.
- Minimizar la duplicidad de código.
- Crear módulos útiles.
- La jerarquía entre los módulos, de forma que los módulos de niveles superiores coordinen a los de niveles inferiores. Al dividir los módulos jerárquicamente, es posible controlar el número de módulos que interactúan con cualquiera de los otros.
- La independencia de los módulos, de manera que cada módulo se ve como una caja negra, y únicamente es importante su función y su apariencia externa, y no los detalles de su construcción.
Estrategias de diseño
Dependiendo de la estructura inicial del diagrama de flujo de datos sobre el que se va a realizar el diseño, existen dos estrategias para obtener el diagrama de estructura. El uso de una de las dos estrategias no implica que la otra no se utilice, eso dependerá de las características de los procesos representados en el DFD. Estas estrategias son:
- Análisis de transformación.
- Análisis de transacción.
1.- Análisis de Transformación
El análisis de transformación es un conjunto de pasos que permiten obtener, a partir de un DFD con características de transformación, la estructura del diseño de alto nivel del sistema. Un DFD con características de transformación es aquél en el que se pueden distinguir:
- Flujo de llegada o entrada.
- Flujo de transformación o centro de transformación que contiene los procesos esenciales del sistema y es independiente de las características particulares de la entrada y la salida.
- Flujo de salida.
Los datos que necesita el sistema se recogen por los módulos que se encuentren en las ramas de la izquierda, de modo que los datos que se intercambian en esa rama serán ascendentes. En las ramas centrales habrá movimiento de información compartida, tanto ascendente como descendente. En las ramas de la derecha, la información será de salida y, por lo tanto, descendente.
Los pasos a realizar en el análisis de transformación son:
- Identificar el centro de transformación. Para ello será necesario delimitar los flujos de llegada y salida de la parte del DFD que contiene las funciones esenciales del sistema.
- Realizar el “primer nivel de factorización” o descomposición del diagrama de estructura. Habrá que identificar tres módulos subordinados a un módulo de control del sistema:
- Módulo controlador del proceso de información de entrada.
- Módulo controlador del centro de transformación.
- Módulo controlador del proceso de la información de salida.
- Elaborar el “segundo nivel de factorización”. Se transforma cada proceso del DFD en un módulo del diagrama de estructura.
- Revisar la estructura del sistema utilizando medidas y GUÍas de diseño.
A continuación se muestra un gráfico explicativo de dicha estrategia de diseño:
2.- Análisis de Transacción
El análisis de transacción se aplica cuando en un DFD existe un proceso que en función del flujo de llegada, determina la elección de uno o más flujos de información.
Se denomina centro de transacción al proceso desde el que parten los posibles caminos de información. Los pasos a realizar en el análisis de transacción son:
- Identificar el centro de transacción. Se delimita la parte del DFD en la que a partir de un camino de llegada se establecen varios caminos de acción.
- Transformar el DFD en la estructura adecuada al proceso de transacciones. El flujo de transacciones se convierte en una estructura de programa con una bifurcación de entrada y una de salida.
- Factorizar la estructura de cada camino de acción. Cada camino se convierte en una estructura que se corresponde con las características específicas del flujo (de transacción o de transformación).
- Refinar la estructura del sistema utilizando medidas y GUÍas de diseño.
A continuación se muestra un gráfico explicativo de dicha estrategia de diseño:
Evaluación del diseño
Una vez que hayan sido elaborados los diagramas de estructura, habrá que evaluar el diseño estudiando distintos criterios y medidas. Se utilizan dos métricas que miden la calidad estructural de un diseño:
- Acoplamiento.
- Cohesión.
El acoplamiento se puede definir como el grado de interdependencia existente entre los módulos, por tanto, depende del número de parámetros que se intercambian. El objetivo es que el acoplamiento sea el mínimo posible, es decir, conseguir que los módulos sean lo más independientes entre sí.
Es deseable un bajo acoplamiento, debido a que cuantas menos conexiones existan entre dos módulos, menor será la posibilidad de que aparezcan efectos colaterales al modificar uno de ellos. Además, se mejora el mantenimiento, porque al cambiar un módulo por otro, hay menos riesgo de actualizar la lógica interna de los módulos asociados. Los diferentes grados de acoplamiento son:
- De datos: los módulos se comunican mediante parámetros que constituyen elementos de datos simples.
- De marca: es un caso particular del acoplamiento de datos, dónde la comunicación entre módulos es través de estructuras de datos.
- De control: aparece cuando uno o varios de los parámetros de comunicación son de control, es decir variables que controlan las decisiones de los módulos subordinados o superiores.
- Externo: los módulos están ligados a componentes externos (dispositivos E/S, protocolos de comunicaciones, etc.).
- Común: varios módulos hacen referencia a un área común de datos. Los módulos asociados al área común de datos pueden modificar los valores de los elementos de datos o estructuras de datos que se incluyen en dicha área.
- De contenido: ocurre cuando un módulo cualquiera accede o hace uso de los datos de una parte de otro módulo.
La cohesión es una medida de la relación funcional de los elementos de un módulo, es decir, la sentencia o grupo de sentencias que lo componen, las llamadas a otros módulos o las definiciones de los datos. Un módulo con alta cohesión realiza una tarea concreta y sencilla.
El objetivo es intentar obtener módulos con una cohesión alta o media. Los distintos niveles de cohesión, de mayor a menor, son:
- Funcional: todos los elementos que componen el módulo están relacionados en el desarrollo de una única función.
- Secuencial: un módulo empaqueta en secuencia varios módulos con cohesión funcional.
- De comunicación: todos los elementos de procesamiento utilizan los mismos datos de entrada y de salida.
- Procedimental: todos los elementos de procesamiento de un módulo están relacionados y deben ejecutarse en un orden determinado. En este tipo existe paso de controles.
- Temporal: un módulo contiene tareas relacionadas por el hecho de que todas deben realizarse en el mismo intervalo de tiempo.
- Lógica: un módulo realiza tareas relacionadas de forma lógica (por ejemplo un módulo que produce todas las salidas independientemente del tipo).
- Casual: un módulo realiza un conjunto de tareas que tienen poca o ninguna relación entre sí.
Un buen diseño debe ir orientado a conseguir que los módulos realicen una función sencilla e independiente de las demás (máxima cohesión), y que la dependencia con otros módulos sea mínima (acoplamiento mínimo), lo cual facilita el mantenimiento del diseño.
Notación
Módulo
Se representa mediante un rectángulo con su nombre en el interior.
Un módulo predefinido se representa añadiendo dos líneas verticales y paralelas en el interior del rectángulo.
Conexión
Se representa mediante una línea terminada en punta de flecha cuya dirección indica el módulo llamado. Para llamadas a módulos estáticos se utiliza trazo continuo y para llamadas a módulos dinámicos trazo discontinuo.
Parámetros
La representación varía según su tipo: control (flags) o datos.
Almacén de datos
Dispositivo físico
(Nota.- Esta notación es la más habitual, pero MÉTRICA Versión 3 no exige su utilización).
Ejemplo
El siguiente ejemplo muestra un proceso de emisión de cheques para el pago de nóminas de los empleados de una empresa. En él se diferencian los cálculos relativos a los trabajadores empleados por horas y los que poseen contrato. La lectura del fichero de empleados y la impresión de los cheques son módulos ya disponibles en las librerías del sistema, es decir, módulos predefinidos.
Dejar un comentario
¿Quieres unirte a la conversación?Siéntete libre de contribuir!
Muchas gracias. Me ha sido de gran ayuda.
Gracias, muy bueno… Una consulta
Con qué herramienta case se realiza este tipo de diagramas?
Lo podrías hacer con starUML 2.0
Estos links están muy bien documentados y creo que avanzó , que comprendo los esquemas y sus funciones.
Estos links están muy completos.
Este link es muy importante
Voy avanzando y me gusta mucho comprender el temario