5.39.4.2 Principios y Arquitectura de Software (16 horas) [Habilidades AG-C03,AG-C09]

Referencias Bibliográficas: [Gamma et al., 1994a,Pressman and Maxim, 2019]

Temas

  1. Principios de diseño de sistemas. Fundamentos de Sistemas (SF) -Reliability
    1. Niveles de abstracción (por ejemplo, diseño arquitectónico y diseño detallado)
    2. Separación de preocupaciones (separation of concerns)
    3. Ocultación de información (information hiding)
    4. Acoplamiento y cohesión (coupling and cohesion)
  2. Arquitectura de software. Fundamentos de Sistemas (SF) -Reliability
    1. Paradigmas de diseño
      1. Descomposición funcional de arriba hacia abajo/diseño por capas
      2. Arquitectura orientada a datos
      3. Análisis y diseño orientado a objetos
      4. Diseño dirigido por eventos
    2. Arquitecturas estándar (por ejemplo, cliente-servidor y arquitecturas de microservicios incluyendo discusiones sobre REST, n-capas, tuberías y filtros, Modelo Vista Controlador)
    3. Identificar límites y dependencias de componentes
  3. Programación a gran escala vs programación a pequeña escala (programming in the large vs programming in the small). Fundamentos de Sistemas (SF) -Reliability
  4. Malos olores del código (code smells) y otras indicaciones de la calidad del código, distintas de la corrección. Seguridad (SEC) -Engineering

Aprendizaje esperado (Learning Outcomes)

  1. Identificar la arquitectura de software estándar de un diseño de alto nivel dado [Analizar]
  2. Seleccionar y usar un paradigma de diseño apropiado para diseñar un sistema de software simple y explicar cómo se han aplicado los principios de diseño de sistemas en este diseño [Evaluar]
  3. Adaptar un diseño de sistema defectuoso para que siga mejor principios como la separación de preocupaciones o la ocultación de información [Crear]
  4. Identificar las dependencias entre un conjunto de componentes de software en un diseño arquitectónico [Analizar]

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