5.7.4.20 Control de Versiones y CI/CD (2 horas) [Habilidades AG-C02,AG-C08,AG-C12]

Referencias Bibliográficas: [Brookshear and Brylow, 2019b]

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. Conceptos y mecanismos de integración de herramientas. Fundamentos de Desarrollo de Software (SDF) -Practices
  5. Uso de las facilidades de un IDE moderno: depuración, refactorización, búsqueda/indexación, asistentes de código basados en ML, etc. Fundamentos de Desarrollo de Software (SDF) -Practices

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. Identificar elementos de configuración y usar una herramienta de control de código fuente en un proyecto pequeño basado en equipo [Analizar]

  4. 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]
  5. 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