1/43
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
Definición del Diseño Estructurado
Se ocupa de la identificación, selección y organización de los módulos y sus relaciones. Se decide que componentes son necesarios y la interconexión entre los mismos
¿Cuando se realiza el diseño estructurado?
Tras la especificación resultante del proceso de análisis, se realiza una descomposición del sistema en módulos estructurados jerárquicamente
¿Qué es un módulo software?
Es una unidad lógica y funcionalmente contigua de software, con un nombre claro e identificable por el sistema.
¿Que debe cumplir un módulo software?
Función (Que hace)
Algoritmo (Como lo hace). Conjunto de instrucciones para implementar la función
Contexto (Entorno). Que posición ocupa el módulo en la jerarquía y como se relaciona con el resto de módulos:
Quien lo llama (FAN-IN)
A quien llama (FAN-OUT)
Objetivos del Diseño Estructurado
Máxima inteligibilidad del sistema
Minimizar el coste asociado al mantenimiento
Facilitar la prueba
Integración del sistema
Que se garanticen los requisitos no funcionales de Reusabilidad, Fiabilidad y Portabilidad
Utilización de herramientas gráficas para representar la estructura modular del sistema
Arquitecturas típicas para la solución de la mayoría de los problemas
Transformación por lotes
Transformación contínua
Interfaz interactiva
Sistema de tiempo real
Simulación dinámica
Controlador de transacciones
Criterios para la evaluación de la calidad del software
FAN-OUT
FAN-IN
Descomposición
Acoplamiento
Cohesión
¿Que es el FAN-OUT y que mide?
Es el número de módulos subordinados a los que invoca un módulo, es decir, el número de módulos que invoca.
Es una medida de la complejidad del módulo. Cuando más alto sea el FAN-OUT mas complejo es el modulo
¿Cual es el criterio para un FAN-OUT sano y acotado?
7 ± 2 módulos invocados
¿Que es el FAN-IN y que mide?
El FAN-IN es el número de módulos superiores que invocan a un módulo, es decir, el número de módulos que lo llaman.
Es una medida de la reusabilidad de un módulo
Un módulo con un FAN-IN alto suele ser sinónimo de alta cohesión
¿Que características tiene un módulo con alto FAN-IN?
Buena cohesión
Interfaz consistente
¿Que es la interfaz consistente?
Indica que el mismo módulo debe ser invocado con el mismo número de parámetros y el mismo tipo
¿Que es el acoplamiento?
El acoplamiento es una medida de la interdependencia entre módulos. El objetivo es lograr un bajo acoplamiento, lo que significa que los módulos son lo más independientes entre si
Tipos de acoplamiento ordenados de MEJOR a PEOR
Acoplamiento de datos
Acoplamiento de estampado
Acoplamiento de control
Acoplamiento externo
Acoplamiento común
Acoplamiento de contenido
¿Que es la cohesión?
Es una medida de la relación entre los elementos de un módulo.
Es de tipo interno, es decir, de como funcionan los elementos internos de un mismo módulo
¿Cual es el objetivo de la cohesión?
Máxima cohesión, lo que indica que un módulo hace una cosa concreta, la hace bien y de forma sencilla
Tipos de cohesión de módulos, ordenada de MEJOR a PEOR
Cohesión funcional
Cohesión secuencial
Cohesión de comunicación
Cohesión procedimental. Agrupación de elementos del módulo por el hecho de tener un orden
Cohesión temporal. Agrupación de elemento de un módulo por el hecho de tener que ejecutarse al mismo tiempo, no porque tengan una relación lógica
Cohesión lógica. Los elementos pertenecen a la misma categoría lógica, aunque sus tareas no tengan nada que ver
Cohesión casual. El modulo realiza varias tareas que tienen poca o ninguna relación. “Cajón de sastre”
¿Que es un Diagrama de Estructura?
Es una representación de la estructura modular de un sistema o de un componente del mismo, definiendo los parámetros de entrada y salida de cada módulo.
Se obtiene a partir del modelo de proceso obtenido aplicando la técnica de Diagrama de Flujo de Datos
¿Cuales son los componentes principales de un Diagrama de Estructura?
Módulos
Conexiones (invocaciones)
Parámetros (cuplas)
Tipos de parámetros en Diagrama Estructurado
De Control
De Datos
Cuplas modificadas
Cuplas de Resultados
Tipos de conexiones en el Diagrama Estructurado
Secuenciales
Repetitivas
Alternativa

En un diagrama de estructura, que tipo de conexión es la de la foto?
Secuencial

En un diagrama de estructura, que tipo de conexión es la de la foto?
Repetitiva

En un diagrama de estructura, que tipo de conexión es la de la foto?
Alternativa
Además de los componentes principales, ¿que otros componentes podemos encontrar en un Diagrama Estructurado?
Almacenes de datos. Lugar físico en el que están almacenados los datos
Dispositivos físicos. Cualquier dispositivo por el cual se pueda recibir o enviar información que necesite el sistema
Estrategias de Diseño Estructurado
Análisis de transformación
Análisis de transacción
(Dependen de la estructura inicial del DFD previo al diseño)
¿Cuando se realiza una estrategia de diseño por Análisis de Transformación?
Cuando el DFD original es de transformación
¿Cuando un DFD es de tipo de transformación?
Cuando se pueden distinguir:
Un flujo de llegada/entrada
Flujo de transformación o centro de transformación. Contiene los elementos esenciales del sistema y es independiente de la entrada/saida
Un flujo de salida
Pasos en el Análisis de Transformación
Identificar el Centro de Transformación. Se delimitan los flujos de entrada y salida
Realizar una primera factorización. Se crea un módulo principal, “módulo de sistema” y se identifican 3 módulos subordinados:
Controlador del proceso de entrada
Controlador del centro de transformación
Controlador del proceso de salida
Realizar una segunda factorización. Se transforma cada proceso del DFD en un módulo del DE.
Revisar y factorizar.
¿Cuando se realiza una estrategia de diseño por Análisis de Transacción?
Cuando en el DFD existe un proceso en función del flujo de entrada que determina la elección de uno o más flujos de información
¿Que características tiene un DFD de transacción?
Flujo de datos de entrada
Evaluación de la transacción
Selección del camino de acción a ejecutar en función de la evaluación

¿Que estrategia de Diseño Estructurado es esta?
Análisis de Transformación

¿Que estrategia de Diseño Estructurado es esta?
Análisis de Transacción
Pasos en el Análisis de Transacción
Identificar el centro de transacción. Es aquel a partir del cual hay varios caminos de acción
Hacer una primera factorización, obteniendo un módulo de sistema y 2 módulos subordinados:
Analizador de transacción
Procesamiento de transacción
Factorizar la estructura de cada camino de acción
Refinar la estructura del sistema utilizando medidas y guias de diseño

Características del diseño Orientado a Objetos (“COMIERA”)
Cohesión fuerte
Ocultación de implementación
Modularidad (separación en clases)
Integrable
Extensibilidad (herencia + polimorfismo)
Reutilización
Acoplamiento débil
¿Que son los principios SOLID?
Un acrónimo que representa una serie de principios para el diseño y mantenimiento de software orientado a objetos
¿Que son los principios SOLID?
Es un acrónimo que define una serie de principios que favorecen el desarrollo de software y su mantemiento

Principios SOLID
S. Single Responsibility Principle
O. Open/Closed Principle
L. The Liskov Substitution Principle
I. Interface Segregation Principle
D. Dependency Inversion Principle.
Definición de GRASP
“General Responsibility Assigment Software Patterns”
Conjunto de buenas practicas para el diseño orientado a objetos
¿Que es la programación orientada a aspectos?
Paradigma de programación reciente complementario de la OOP cuyo objetivo principal es separar las “preocupaciones transversales”, funciones que se repiten en varias partes de la aplicación y que no pertenecen a la lógica del negocio.
Ejemplos de “preocupaciones transversales”
Logging
Autenticación y seguridad
Manejador de excepciones
Gestor de transacciones de BBDD
Ventajas de la programación orientada a aspectos
Mejora modularidad
Mejora mantenimiento del código. Si se necesita modificar una lógica transversal, esto no afecta a la lógica de negocio.
Código menos enmarañado
Menor dependencia
Facilidad para depurar y modificar
Más reusabilidad. Se escribe la lógica transversal una sola vez
Limpieza. La logica de negocio no se contamina de detalles técnicos repetitivos
Fundamentos de la programación orientada a Aspectos
Lenguaje de propósito general para programar la funcionalidad básica
Lenguaje de aspectos, como AspectJ
Tejedor, para combinar ambos lenguajes