Última revisión realizada: 26/05/2022

Denominación de la asignatura: Entornos deIntegración y Entrega Continua
Postgrado al que pertenece: Máster Universitario en Desarrollo y Operaciones (DevOps).
Créditos ECTS: 6
Cuatrimestre en el que se imparte: Segundo
Carácter de la asignatura: Obligatoria
Materia a la que pertenece: Automatización del Ciclo de Vida de las Aplicaciones

Presentación

La gestión del ciclo de vida de la aplicación (del inglés Application Lifecycle Management, o ALM) es un marco mediante el cual se registra y controla el proceso de desarrollo de software y mantenimiento continuo. La metodología ALM es un enfoque más integral que el ciclo de vida tradicional de desarrollo de sistemas (SDLC), ya que incluye la gestión continua desde el inicio de una aplicación hasta su desmantelamiento. De hecho, puede haber varios ciclos de vida de desarrollo de sistemas a lo largo de la vida útil de un producto de aplicación.

Las fases o actividades que conforman a ALM ocurren en todos los proyectos de software, independientemente de la metodología del proyecto (por ejemplo, XP, Scrum o Waterfall) adoptada por la organización. Es necesario, por tanto, conocer a fondo los procesos que abarca, así como las herramientas de control de versiones y su funcionamiento.

Uno de los requisitos para la implementación de la Integración y Entrega Continuas es la utilización de las herramientas que permitan gestionar el código eficazmente. Si bien hay muchas herramientas de integración continua en el mercado, hay algunas que se utilizan más ampliamente. En esta asignatura estudiaremos el funcionamiento de GitHub, Jenkins y GitLab como las herramientas más relevantes para poder llevar a la práctica los principios de CI/CD (del inglés Continuous Integration/Continuous Delivery). Algunas otras herramientas se estudiarán en menor medida.

En la ingeniería del software, la integración continua (CI) es la práctica de fusionar todas las copias de trabajo del desarrollador a una línea principal compartida varias veces al día. Extreme Programming (XP)  adoptó el concepto de integración Continua y abogó por realizar integraciones de código más de una vez al día - tal vez hasta decenas de veces al día. La integración continua implica integrar el código de forma temprana y frecuente a fin de evitar los posibles problemas derivados de este.  La práctica tiene como objetivo reducir el trabajo y así también reducir los costes y el tiempo invertido en el desarrollo de software.

Por su parte, la automatización de pruebas es el uso de un software especial (además del software que se está probando) para controlar la ejecución de las pruebas y comparar los resultados reales con los resultados previstos. Esta automatización es fundamental para la entrega y las pruebas continuas.

Competencias básicas

  • CB6: Poseer y comprender conocimientos que aporten una base u oportunidad de ser originales en el desarrollo y/o aplicación de ideas, a menudo en un contexto de investigación.
  • CB7: Que los estudiantes sepan aplicar los conocimientos adquiridos y su capacidad de resolución de problemas en entornos nuevos o poco conocidos dentro de contextos más amplios (o multidisciplinares) relacionados con su área de estudio.
  • CB8: Que los estudiantes sean capaces de integrar conocimientos y enfrentarse a la complejidad de formular juicios a partir de una información que, siendo incompleta o limitada, incluya reflexiones sobre las responsabilidades sociales y éticas vinculadas a la aplicación de sus conocimientos y juicios.
  • CB9: Que los estudiantes sepan comunicar sus conclusiones y los conocimientos y razones últimas que las sustentan a públicos especializados y no especializados de un modo claro y sin ambigüedades.
  • CB10: Que los estudiantes posean las habilidades de aprendizaje que les permitan continuar estudiando de un modo que habrá de ser en gran medida autodirigido o autónomo.

Competencias generales

  • CG1: Desarrollar las habilidades necesarias para ejercer las funciones profesionales requeridas para el ejercicio de la profesión de DevOps.
  • CG2: Diseñar y saber aplicar planes de intervención profesional relacionados con la implantación de sistemas de integración de software y entrega continua en una organización.

Competencias específicas

  • CE18: Diseñar entornos e implementar flujos de Integración y entrega continua.

Competencias transversales

  • CT1: Aplicar las nuevas tecnologías como herramientas para el intercambio comunicacional en el desarrollo de procesos de indagación y de aprendizaje.
  • CT2: Desarrollar habilidades de comunicación, para redactar informes y documentos, o realizar eficaces presentaciones de los mismos.

Tema 1. Introducción

  • 1.1. Introducción y objetivos
  • 1.2. Gestión del ciclo de vida de las aplicaciones
  • 1.3. Antipatrones en el despliegue continuo
  • 1.4. Integración vs entrega vs despliegue
  • 1.5. Madurez de la organización
  • 1.6. Estructura de la asignatura

Tema 2. Control de versiones

  • 2.1. Introducción y objetivos
  • 2.2. Sistemas de control de versiones
  • 2.3. Ventajas del control de versiones
  • 2.4. Preguntas frecuentes
  • 2.5. Mejores prácticas en procesos ágiles
  • 2.6. Caso práctico: uso básico de Git

Tema 3. Introducción a GitHub

  • 3.1. Introducción y objetivos
  • 3.2. Control de versiones descentralizados
  • 3.3. Flujos de trabajo con Git
  • 3.4. Caso práctico: pull requests en GitHub

Tema 4. Fases de la entrega continua

  • 4.1. Introducción y objetivos
  • 4.2. ¿Qué es un pipeline?
  • 4.3. Mejores prácticas en un pipeline
  • 4.4. La fase de commit
  • 4.5. Mejores prácticas en la fase de commit

Tema 5. Desarrollo de pruebas

  • 5.1. Introducción y objetivos
  • 5.2. Pruebas
  • 5.3. Tipos de pruebas
  • 5.4. Automatización de pruebas
  • 5.5. Caso práctico: pruebas en Python

Tema 6. Evaluación y calidad del código

  • 6.1. Introducción y objetivos
  • 6.2. Midiendo el rendimiento
  • 6.3. Revisiones de código
  • 6.4. Caso práctico: revisiones de código en GitHub
  • 6.5. Convenciones de estilo
  • 6.6. Cobertura de pruebas
  • 6.7. SonarQube
  • 6.8. Caso práctico: análisis con SonarQube

Tema 7. Introducción a Jenkins

  • 7.1. Introducción y objetivos
  • 7.2. Jenkins
  • 7.3. Jenkinsfiles
  • 7.4. Caso práctico: servidor de Jenkins y primer pipeline
  • 7.5. Caso práctico: proyecto Java con maven

Tema 8. Introducción a GitLab

  • 8.1. Introducción y objetivos
  • 8.2. GitLab
  • 8.3. GitLab CI/CD
  • 8.4. Caso práctico: GitLab CI/CD

Tema 9. Otras herramientas

  • 9.1. Introducción y objetivos
  • 9.2. Nexus
  • 9.3. BitBucket
  • 9.4. CircleCI
  • 9.5. Caso práctico: Bitbucket + CircleCI + NPM

Tema 10. Modelos de despliegue

  • 10.1. Introducción y objetivos
  • 10.2. Despliegue continuo
  • 10.3. Modelos de despliegue

Las actividades formativas de la asignatura se han elaborado con el objetivo de adaptar el proceso de aprendizaje a las diferentes capacidades, necesidades e intereses de los alumnos.

Las actividades formativas de esta asignatura son las siguientes:

  • Trabajos individuales. Se trata de actividades de diferentes tipos: reflexión, análisis de casos, prácticas, análisis de textos, etc.
  • Trabajos colaborativos. Son actividades grupales en las que tendrás la oportunidad de trabajar con tus compañeros. Durante el desarrollo de la asignatura tendrás toda la información que necesites sobre cómo organizarte para trabajar en equipo.
  • Participación en eventos. Son actividades programadas todas las semanas del cuatrimestre como clases en directo o foros de debate.
Descargar programación

Estas actividades formativas prácticas se completan, por supuesto, con estas otras:

  • Estudio personal
  • Tutorías. Las tutorías se pueden articular a través de diversas herramientas y medios. Durante el desarrollo de la asignatura, el profesor programa tutorías en días concretos para la resolución de dudas de índole estrictamente académico a través de las denominadas “sesiones de consultas”. Como complemento de estas sesiones se dispone también del foro “Pregúntale al profesor de la asignatura” a través del cual se articulan algunas preguntas de alumnos y las correspondientes respuestas en el que se tratan aspectos generales de la asignatura. Por la propia naturaleza de los medios de comunicación empleados, no existen horarios a los que deba ajustarse el alumno.
  • Examen final presencial u online

Las horas de dedicación a cada actividad se detallan en la siguiente tabla:

ACTIVIDADES FORMATIVAS HORAS POR ASIGNATURA % PRESENCIAL
Sesiones presenciales virtuales 15 horas 100%
Recursos didácticos audiovisuales/td> 6 horas 0
Estudio del material básico 62 horas 0
Lectura del material complementario 45 horas 0
Trabajos, casos prácticos y test de evaluación 17 horas 0
Sesiones prácticas de laboratorio virtual 12 horas 16,7%
Tutorías 16 horas 30% 
Trabajo colaborativo 7 horas 0
Total 180 horas -

Bibliografía básica

Recuerda que la bibliografía básica es imprescindible para el estudio de la asignatura. Cuando se indica que no está disponible en el aula virtual, tendrás que obtenerla por otros medios: librería UNIR, biblioteca...

Los textos necesarios para el estudio de la asignatura han sido elaborados por UNIR y están disponibles en formato digital para consulta, descarga e impresión en el aula virtual.

Bibliografía complementaria

  • O'Grady, Adam. GitLab Quick Start Guide. Packt Publishing, 2018.
  • Evertse, Joost. Mastering GitLab 12. Packt Publishing, 2019.
  • Farley, David; Humble, Jez. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley Professional, 2010.
  • Pathania, N. Pro Continuous Delivery: With Jenkins 2.0. Berkeley, CA: Apress, 2017.
  • Tsitoara, Mariot. Beginning Git and GitHub: A Comprehensive Guide to Version Control, Project Management, and Teamwork for the New Developer. Berkeley, CA: Apress, 2020.
  • Chacon, Scott., and Ben. Straub. Pro Git. 2nd ed. Apress, 2014.
  • Westby, Emma J.H. Git for Teams.  Primera edición. O'Reilly, 2015.
  • Pipinellis, A. GitHub Essentials. Packt Publishing, 2015.
  • Sale, D. Testing Python. Wiley, 2014.
  • Filipova, O.; Vilão, R. Software Development from A to Z. Apress, 2018.
  • Forsgren, Nicole, Jez Humble, and Gene Kim. Accelerate: The Science behind DevOps: Building and Scaling High Performing Technology Organizations. First ed. IT Revolution Press, 2018.
  • Visser, Joost. Building Maintainable Software: Ten Guidelines for Future-Proof Code. O'Reilly, 2016.
  • Arapidis, C. Sonar Code Quality Testing Essentials. Packt, 2012.
  • Laster, Brent. Jenkins 2:  Up and Running. O'Reilly, 2018.

El sistema de calificación se basa en la siguiente escala numérica:

0 - 4, 9 Suspenso (SS)
5,0 - 6,9 Aprobado (AP)
7,0 - 8,9 Notable (NT)
9,0 - 10 Sobresaliente (SB)

La calificación se compone de dos partes principales:

El examen se realiza al final del cuatrimestre y es de carácter PRESENCIAL U ONLINE Y OBLIGATORIO. Supone el 60% de la calificación final y para que la nota obtenida en este examen se sume a la nota final, es obligatorio APROBARLO.

La evaluación continua supone el 40% de la calificación final. Este 40% de la nota final se compone de las calificaciones obtenidas en las diferentes actividades formativas llevadas a cabo durante el cuatrimestre.

Ten en cuenta que la suma de las puntuaciones de las actividades de la evaluación continua permite que realices las que prefieras hasta conseguir el máximo puntuable mencionado. En la programación semanal de la asignatura, se detalla la calificación máxima de cada actividad o evento concreto puntuables.

Sistema de evaluación Ponderación min - max
Participación del estudiante (sesiones, foros, tutorías) 0% - 20%
Trabajos, proyectos y/o casos 10% - 30%
Prácticas de laboratorio virtual 10% - 30%
Test de evaluación 0% - 20%
Examen final 60% - 60%

Juan Agustín Fraile Nieto

Doctor en Informática por la Universidad de Salamanca con mención europea. Desde el año 2003, ha compaginado las tareas docentes en universidades públicas y privadas con el trabajo en la empresa privada. Es un apasionado de la innovación.

Formación académica: Acreditado como profesor contratado doctor y profesor de universidad privada por la ANECA y por la ACSUCYL desde 2012. Tiene reconocido un sexenio de investigación por la ANECA (2008-2013). Además, ha recibido varios premios regionales e internacionales fruto de los proyectos en colaboración con empresas en los que ha participado.j

Experiencia: Experto en la gestión de proyectos informáticos relacionados con el desarrollo de software y la implantación de este. En la actualidad, en Santander Global Tech, empresa de servicios tecnológicos del Grupo Santander es líder de un squad de la tribu DevSecOps.
Tiene amplia experiencia como docente de asignaturas relacionadas con las TIC y como tutor de trabajos fin de grado/máster.

Al tratarse de formación online puedes organizar tu tiempo de estudio como desees, siempre y cuando vayas cumpliendo las fechas de entrega de las actividades y la fecha de exámenes. Nosotros, para ayudarte, te proponemos los siguientes pasos:

  1. Desde el Campus virtual podrás acceder al aula virtual de cada asignatura en la que estés matriculado y, además, al aula virtual del Curso de introducción al campus virtual. Aquí podrás consultar la documentación disponible sobre cómo se utilizan las herramientas del aula virtual y sobre cómo se organiza una asignatura en UNIR. También podrás organizar tu plan de trabajo con tu tutor personal.
  2. Observa la programación semanal. Allí te indicamos qué parte del temario debes trabajar cada semana.
  3. Ya sabes qué trabajo tienes que hacer durante la semana. Accede ahora a la sección Temas del aula virtual. Allí encontrarás el material teórico y práctico del tema correspondiente a esa semana.
  4. Comienza con la lectura de las Ideas clave del tema. Este material es el que debes estudiar para superar la asignatura. Consulta, además, las secciones del tema que contienen material complementario: con esto podrás tener una visión más amplia sobre el tema que estaás trabajando..
  5. Dedica tiempo al trabajo práctico (sección Actividades). En la programación semanal te detallamos cuáles son las actividades correspondientes a cada semana y qué calificación máxima puedes obtener con cada una de ellas.
  6. Te recomendamos que participes en los eventos del curso (clases en directo, foros de debate…). Para conocer la fecha concreta de celebración de los eventos debes consultar las herramientas de comunicación del aula vitual. Tu profesor y tu tutor personal te informarán de las novedades de la asignatura.

En el aula virtual del Curso de introducción al campus virtual encontrarás siempre disponible la documentación donde te explicamos cómo se estructuran los temas y qué podrás encontrar en cada una de sus secciones. Tambén puedes consulltar ahí el funcionamiento de las distintas herramientas del aula virtual: Correo, Foro, Clases en directo, Envío de actividades, etc.

Ten en cuenta estos consejos...

  • Sea cual sea tu plan de estudio, accede periódicamente al aula Virtual, ya que de esta forma estarás al día de las novedades del curso y en contacto con tu profesor y con tu tutor personal.
  • Recuerda que no estás solo: consulta todas tus dudas con tu tutor personal utilizando el correo electrónico. Además, siempre puedes consultar tus dudas sobre el temario en los foros que encontrarás en cada asignatura (Pregúntale al profesor).
  • ¡Participa! Siempre que te sea posible accede a los foros de debate. El intercambio de opiniones, materiales e ideas nos enriquece a todos.
  • Y ¡recuerda!, estás estudiando con metodología on line: tu esfuerzo y constancia son imprescindibles para conseguir buenos resultados. ¡No dejes todo para el último día!