4.10.6.9 Diseño de Software (6 horas) [Habilidades a,b]

Referencias Bibliográficas: [Stroustrup, 2013b] Temas
  1. Principios de diseño del sistema: niveles de abstracción (diseño arquitectónico y el diseño detallado), separación de intereses, ocultamiento de información, de acoplamiento y de cohesión, de reutilización de estructuras estándar.
  2. Diseño de paradigmas tales como diseño estructurado (descomposición funcional de arriba hacia abajo), el análisis orientado a objetos y diseño, orientado a eventos de diseño, diseño de nivel de componente, centrado datos estructurada, orientada a aspectos, orientado a la función, orientado al servicio.
  3. Modelos estructurales y de comportamiento de los diseños de software.
  4. Diseño de patrones.
  5. Relaciones entre los requisitos y diseños: La transformación de modelos, el diseño de los contratos, invariantes.
  6. Conceptos de arquitectura de software y arquitecturas estándar (por ejemplo, cliente-servidor, n-capas, transforman centrados, tubos y filtros).
  7. El uso de componentes de diseño: seleccion de componentes,diseño,adaptacion y componentes de ensamblaje, componentes y patrones, componentes y objetos(por ejemplo,construir una GUI usando un standar widget set)
  8. Diseños de refactorización utilizando patrones de diseño
  9. Calidad del diseño interno, y modelos para: eficiencia y desempeño, redundancia y tolerancia a fallos, trazavilidad de los requerimientos.
  10. Medición y análisis de la calidad de un diseño.
  11. Compensasiones entre diferentes aspectos de la calidad.
  12. Aaplicaciones en frameworks.
  13. Middleware: El paradigma de la orientacion a objetos con middleware, requerimientos para correr y clasificar objetos, monitores de procesamiento de transacciones y el sistema de flujo de trabajo.
  14. Principales diseños de seguridad y codificación(cross-reference IAS/Principles of securre design).
    1. Principio de privilegios mínimos
    2. Principio de falla segura por defecto
    3. Principio de aceptabilidad psicológica

Objetivos de Aprendizaje

  1. Formular los principios de diseño, incluyendo la separación de problemas, ocultación de información, acoplamiento y cohesión, y la encapsulación [Usar]
  2. Usar un paradigma de diseño para diseñar un sistema de software básico y explicar cómo los principios de diseño del sistema se han aplicado en este diseño [Usar]
  3. Construir modelos del diseño de un sistema de software simple los cuales son apropiado para el paradigma utilizado para diseñarlo [Usar]
  4. En el contexto de un paradigma de diseño simple, describir uno o más patrones de diseño que podrían ser aplicables al diseño de un sistema de software simple [Usar]
  5. Para un sistema simple adecuado para una situación dada, discutir y seleccionar un paradigma de diseño apropiado [Usar]
  6. Crear modelos apropiados para la estructura y el comportamiento de los productos de software desde la especificaciones de requisitos [Usar]
  7. Explicar las relaciones entre los requisitos para un producto de software y su diseño, utilizando los modelos apropiados [Usar]
  8. Para el diseño de un sistema de software simple dentro del contexto de un único paradigma de diseño, describir la arquitectura de software de ese sistema [Usar]
  9. Dado un diseño de alto nivel, identificar la arquitectura de software mediante la diferenciación entre las arquitecturas comunes de software, tales como 3 capas (3-tier), pipe-and-filter, y cliente-servidor [Usar]
  10. Investigar el impacto de la selección arquitecturas de software en el diseño de un sistema simple [Usar]
  11. Aplicar ejemplos simples de patrones en un diseño de software [Usar]
  12. Describir una manera de refactorar y discutir cuando esto debe ser aplicado [Usar]
  13. Seleccionar componentes adecuados para el uso en un diseño de un producto de software [Usar]
  14. Explicar cómo los componentes deben ser adaptados para ser usados en el diseño de un producto de software [Usar]
  15. Diseñar un contrato para un típico componente de software pequeño para el uso de un dado sistema [Usar]
  16. Discutir y seleccionar la arquitectura de software adecuada para un sistema de software simple para un dado escenario [Usar]
  17. Aplicar modelos de cualidades internas y externas en el diseño de componentes de software para lograr un equilibrio aceptable entre los aspectos de calidad en conflictos [Usar]
  18. Analizar un diseño de software desde la perspectiva de un atributo significativo de la calidad interna [Usar]
  19. Analizar un diseño de software desde la perspectiva de un atributo significativo de calidad externa [Usar]
  20. Explicar el papel de los objetos en los sistemas de middleware y la relación con los componentes [Usar]
  21. Aplicar métodos orientado a componentes para el diseño de una amplia gama de software, tales como el uso de componentes para la concurrencia y transacciones, para los servicios de comunicación confiables, para la interacción con la base de datos que incluye los servicios de consulta remota y gestión de bases de datos, o para la comunicación segura y el acceso [Usar]
  22. Refactorizar una implementación de software existente para mejorar algún aspecto de su diseño [Usar]
  23. Determinar y aplicar los principios de mínimo privilegio y defectos-a prueba de errores [Usar]

Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM