Introducción al Diseño de Software ▪Diseño de Software • Ciclo 2023-II • Hugo R. Cordero Fundamentos del Diseño de Software ▪ Se enfoca en el ¿Cómo? ▪ Trata de solucionar un problema o implementar una oportunidad por medio de un software ▪ Especifica la solución desde alto nivel hasta un nivel detallado. 2 El Diseño de Software dentro de la Ingeniería de Software Obtener requerimientos Necesidad Especificación de requisitos Análisis Diseñar Pruebas Diseño Sistema de software Código Desarrollo 3 Concepto de Diseño de Software ▪ El diseño de software es el proceso mediante el cual un agente crea una especificación de un artefacto de software destinado a satisfacer los requerimientos, utilizando un conjunto de componentes primitivos y sujeto a restricciones. Ralph, P. y Wand, Y. (2009) ▪ El diseño de software agrupa el conjunto de principios, conceptos y prácticas que llevan al desarrollo de un sistema o producto de alta calidad. Los principios de diseño establecen una filosofía. La práctica del diseño en sí lleva a la creación de distintas representaciones del software que sirve como guía para la construcción. Roger Pressman (2010) 4 Principio de Diseño: Bajo Acoplamiento ▪ En Ingeniería de Software es la interdependencia o grado de relación entre múltiples módulos/paquetes/componentes. ▪ Múltiples módulos/paquetes/componentes que están débilmente acoplados no son dependientes o muy poco dependen unos de otros. ▪ Múltiples módulos/paquetes/componentes que están altamente acoplados dependen fuertemente unos de otros. 5 Principio de Diseño: Alta Cohesión ▪ La cohesión se refiere a lo que el módulo puede hacer internamente. También se denomina enlace intramódulo, ya que mide la fuerza de la relación de las funcionalidades dentro de un módulo/paquete/componente. ▪ Alta Cohesión ▪ La cohesión siempre debe ser alta significa que un módulo/paquete/componente se enfoca en lo que debería estar haciendo, es decir, solo métodos relacionados con la intención de la clase. ▪ Baja Cohesión 6 Principio de Diseño: Modularidad ▪ Módulo: cada una de las unidades claramente definidas y manejables constituyentes del software. ▪ Modularización: es un proceso de dividir el software en múltiples módulos pequeños, donde cada módulo funciona de forma independiente. ▪ La principal ventaja de la modularización es que el software es fácil de entender, se vuelve reutilizable y se puede probar fácilmente. 7 ▪ El sistema se descompone en módulos funcionales que transforman entradas de datos en datos de salida. ▪ Los datos de entrada fluyen a través de las transformaciones hasta que se convierten en datos de salida. Descomposición Modular e Independencia Funcional ▪ Cada módulo debe realizar una función concreta o un conjunto de funciones afines. 8 ▪ Incrementar la abstracción ▪ No reinventar la rueda ▪ El diseño tendría que ser rastreable por el modelo de análisis Otros Principios de Diseño ▪ El diseño tiene que exhibir uniformidad e integración ▪ Diseñar para reutilizar ▪ Diseñar pensando en flexibilidad ▪ Diseño debe ser estructurado para adaptarse al cambio ▪ La calidad del diseño tendría que ser evaluado cuando se está creando, no después 9 Contexto del Diseño de Software ▪ ¿Es viable el diseño propuesto según los requerimientos iniciales? ▪ ¿De qué depende realizar un mejor diseño? Contexto del Diseño de Software ▪ ¿Considera que fue diseñado correctamente el requerimiento? ▪ ¿Por qué no se llegó a un mejor resultado en el producto final? La importancia del Diseño de Software 12 ▪ Forme sus grupos de trabajo ▪ Seleccione el módulo a desarrollar ▪ Identifique 5 funcionalidades a desarrollar. ▪ Discuta al interno del grupo la tecnología a utilizar. Llamada a la acción ▪ Seleccione la tecnología para el proyecto entre todos los grupos. ▪ Ver el video de Conceptos de Diseño de Software para una entrevista 13 Correo electrónico [email protected] Gracias X / Threads @hugorcorderos 14