5.52.4.6 Control de Versiones y CI/CD (6 horas) [Habilidades AG-C11,AG-C12]

Referencias Bibliográficas: [Kim et al., 2021]

Temas

  1. Gestión de configuración de software y control de versiones: Fundamentos de Desarrollo de Software (SDF) -Practices
    1. Configuración en control de versiones, builds/configuración reproducibles.
    2. Estrategias de ramificación en control de versiones. Ramas de desarrollo vs ramas de lanzamiento. Desarrollo basado en tronco (trunk-based development).
    3. Estrategias de fusión/rebase, cuando sean relevantes.
  2. Gestión de lanzamientos (release management).
  3. Automatización de procesos de software:
    1. Sistemas de construcción (build systems): el valor de builds rápidos, herméticos y reproducibles, comparar/contrastar enfoques para construir un proyecto.
    2. Integración Continua (CI): el uso de automatización y pruebas automatizadas para hacer una validación preliminar de que la revisión actual del tronco se construye y pasa las pruebas (básicas).
    3. Despliegue Continuo (CD): el uso de automatización para liberar de forma automática cada cambio que supera las pruebas hacia el entorno de producción, garantizando entregas frecuentes y confiables.
    4. Gestión de dependencias: actualización de dependencias externas/aguas arriba, gestión de paquetes, SemVer.
  4. Herramientas de prueba, incluyendo herramientas de análisis estático y dinámico. Fundamentos de Desarrollo de Software (SDF) -Practices,SEC-Coding
  5. Conceptos y mecanismos de integración de herramientas. Fundamentos de Desarrollo de Software (SDF) -Practices
  6. Cultura DevOps: flujo, retroalimentación y aprendizaje continuo.

Aprendizaje esperado (Learning Outcomes)

  1. Describir la diferencia entre la gestión de configuración de software centralizada y distribuida [Describir]
  2. Describir cómo el control de versiones puede usarse para ayudar en la gestión de lanzamientos de software [Describir]
  3. Comprender el uso de sistemas de CI/CD como una fuente de verdad para el estado del código compartido del equipo (éxito en la construcción y pruebas) [Explicar]
  4. Demostrar la capacidad de usar herramientas de software para apoyar el desarrollo de un producto de software de tamaño mediano [Demostrar]

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