Definición de diseño Proceso para la definición detallada de un sistema con el fin de su realización física. Ingeniería del Software 1 Ingeniería del Software 2 Modelo de diseño vs. Paradigma de IS 3 actividades técnicas de construcción y verificación Diseño Codificación Prueba Análisis Diseño: cuatro modelos Diseño de los datos Diseño arquitectónico Diseño de interfaz Diseño procedimental o a nivel de componentes Ingeniería del Software 3 Ingeniería del Software 4 Elementos del modelo de análisis Elementos del modelo de diseño Especificación de proceso Descripción de objetos de datos Diagrama E/R Diccionario Datos Diagrama transición de datos Diagrama flujo de datos Especificación de control Ingeniería del Software 5 Ingeniería del Software 6 1
Cómo obtenemos el diseño desde el análisis? Diagrama ER, DD -> Datos DFD -> Arquitectónico DFD, DFC -> Interfaz DTE, EC, EP -> Procedimental Ingeniería del Software 7 Ingeniería del Software 8 DISEÑO CALIDAD Ingeniería del Software 9 Ingeniería del Software 10 Proceso de diseño Evaluar el diseño (RTF) -> Calidad Implementación de req. explícitos e implícitos Guía legible para los que desarrollan, prueban y mantienen Idea general de funcionalidad, comportamiento y datos Proceso de diseño Pautas para un buen diseño Organización jerárquica Diseño modular Abstracciones de datos y procedimientos Producir módulos Conducir a interfaces Ingeniería del Software 11 Ingeniería del Software 12 2
Principios del diseño Diseño es proceso y modelo Proceso Conjunto de pasos repetitivos para describir el sistema a construir Modelo Visión general del sistema que se refina sucesivamente. Ingeniería del Software 13 Ingeniería del Software 14 Principios del diseño Principios básicos Enfoques alternativos No tiene que inventar nada ya inventado Minimizar la distancia intelectual Uniformidad e integración Debe admitir cambios Principios del diseño Principios básicos (II) Un programa nunca debe EXPLOTAR Diseñar no es codificar Calidad durante diseño, no al final Revisar el diseño Ingeniería del Software 15 Ingeniería del Software 16 Principios del diseño Principios básicos (III) CALIDA EXTERNA Usuarios CALIDAD INTERNA Ingenieros del software Ingeniería del Software 17 Ingeniería del Software 18 3
El principio de sabiduría de un ingeniero del software es reconocer la diferencia entre conseguir que funcione un programa y hacerlo bien Objetivo Conseguir un modelo correcto de diseño para asegurar la buena calidad del sistema a realizar Ingeniería del Software 19 Ingeniería del Software 20 a) Abstracción Abstracción procedimental Abstracción de datos Abstracción de control b) Refinamiento Estrategia de diseño descendente Proceso de elaboración Complementario a la abstracción Ingeniería del Software 21 Ingeniería del Software 22 c) Modularidad División del sw en componentes Ventajas Continuidad modular - Cambios Protección modular - Errores Arquitectura del software Jerarquía de control Partición estructural Estructura de datos Ingeniería del Software 23 Ingeniería del Software 24 4
Arquitectura del software Estructura global del sw Estructura jerárquica módulos Interacción entre ellos Estructura de los datos usados Arquitectura del software Jerarquía de control Partición estructural Estructura de datos Ingeniería del Software 25 Ingeniería del Software 26 Jerarquía de control Estructura del programa NO representa orden, ni secuencia Representación gráfica en árbol Arquitectura del software Jerarquía de control Partición estructural Estructura de datos Ingeniería del Software 27 Ingeniería del Software 28 Partición estructural a) Horizontal: F1, F2, F3 (E, P, S) Fácil prueba y mantenimiento Poca propagación efectos secundarios Sw fácilmente ampliable Partición estructural b) Vertical: Descomposición en factores TOP -> Control DOWN -> Procesamiento Menos susceptibles a efectos secundarios Ingeniería del Software 29 Ingeniería del Software 30 5
Arquitectura del software Jerarquía de control Partición estructural Estructura de datos Estructura de datos Importancia : Organización Métodos de acceso Procesamiento de la información Capacidad de asociación Ejemplos: Escalar, Vector, Pilas, Colas, Listas Ingeniería del Software 31 Ingeniería del Software 32 Independencia funcional Cohesión Acoplamiento Ingeniería del Software 33 Ingeniería del Software 34 Independencia funcional Procede de modularidad, abstracción y ocultamiento de información Módulos funcionalidad única Mínima interacción con el resto Independencia funcional Cohesión Acoplamiento Interfaz sencilla Ingeniería del Software 35 Ingeniería del Software 36 6
Cohesión Extensión de ocultación de información. Módulo con cohesión Una sola tarea dentro del procedimiento sw Cohesión Tipos de cohesión Cohesión lógica - Manejo de excepciones Cohesión temporal - Igual intervalo tpo Cohesión procedimental Ingeniería del Software 37 Ingeniería del Software 38 Independencia funcional Cohesión Acoplamiento Acoplamiento Medida de la interconexión entre módulos Minimizar el acoplamiento Ingeniería del Software 39 Ingeniería del Software 40 Reglas para modularidad efectiva Modelo de diseño Reglas Modularidad efectiva Evaluar primera iteración -> Maximizar cohesión y reducir acoplamiento Minimizar estructuras con mucho grado de salida Alcance del efecto de un módulo dentro del alcance de control del mismo Ingeniería del Software 41 Ingeniería del Software 42 7
Modularidad efectiva Reglas Evaluar interfaces -> Reducir complejidad, redundancia y mejorar consistencia Definir módulos con función predecible Reglas para modularidad efectiva Modelo de diseño Ingeniería del Software 43 Ingeniería del Software 44 Modelo de diseño Modelo de diseño Procedimientos Interfaz Arquitectónico Diseño de datos Ingeniería del Software 45 8