Dentro de las características de los desarrollos de software basados en metodologías agiles (Scrum, XP, Cristal) se considera como una buena practica la creación de ambientes de integración continua.
Dentro de una iteración o un Sprint (Scrum) se encuentran involucrados recursos de muy diversas áreas, ya sea en el mismo equipo de desarrollo, o en unos paralelos, la idea principal consiste en realizar la mayor cantidad de actividades en paralelo, lo cual permita sacar el producto con Calidad y en el menor tiempo posible ( hay que recordar que para la mayoría de los cliente el concepto de Market Time es fundamental).
En Ambiente de integración Continua funcionaría de la siguiente manera en una implementación de SCRUM:
Al momento que un programador sube sus cambios al sistema de versiones del equipo (Git, subversion,CVS,etc…) el sistema de Integración Continua, Baja los cambios e inicia el proceso de compilación, si el producto logra compilar, envía un mail al programador que subió los cambios y a los interesados, posteriormente, ejecuta una corrida de pruebas automáticas (adivinaron, aquí puede entrar TDD o en su caso, el garantizar que se creen los scripts de pruebas durante la fase de desarrollo con las reglas de negocio fundamentales ).
Si las pruebas automáticas falla (se prueban todos los módulos, no solo el que se haya tocado por el cambio 🙂 ) se envían nuevamente correos electrónicos al equipo para que estén enterados y procedan a validar que fue lo que ha fallado.
Si las pruebas automáticas son correctas, se envía un correo al equipo de testing, a fin de que realicen pruebas de GUI, y validen otros puntos del producto, incluso, en algún momento, puede ser enviado al equipo de traducción, en caso que la versión tenga que salir para mas de un idioma.
Como pueden darse cuenta, la integración continua dentro de un Sprint o iteración, permite reducir los tiempos muertos que se provocan al utilizar una metodología basada en una cascada, toda vez que esta se realiza cada vez que sube un cambio al repositorio central de fuentes.
Ventajas:
Permite identificar errores de compilación y dependencias con otras partes del proyecto de manera rápida y oportuna
Permite realizar la ejecución de pruebas unitarias automáticas y mantener al equipo informado del resultado de las mismas
Desventajas
La ya clásica resistencia al cambio, equipos que están acostumbrados a metodologías basadas en cascada, se les dificulta de manera enorme el tener que solucionar errores conforme actualizan su cambios en el repositorio de fuentes, y de hecho, tienden a no hacer las actualizaciones si no hasta el último momento, lo cual rompe el paradigma ágil de este técnica
Algunos productos que incorporan CI son :
Microsoft Fundation Team
CruiseControl ( Open source )