Integración Continua en Proyectos Ágiles de Software

¿Han oído hablar de Maven, Subversion, Jenkis, Hudson, Sonar, Nexus?, bien entonces se preguntarán y estas herramientas para que sirven o porqué lo están utilizando en las consultorías de software, áreas de tecnología de las multinacionales o bancos.

Entonces hablemos un poco de un concepto que paulatinamente se va implementando como una de las buenas prácticas de desarrollo de proyectos ágiles, se trata entonces de Integración Continua.

En un proyecto de software involucra una cantidad finita de archivos y que necesitan ser unidos, integrados para construir un solo producto de software.

Este proceso de juntar o integrar los archivos nos puede tomar tiempo valioso en el cronograma del proyecto, teniendo en cuenta los cambios que se realizarán y que nuevamente tendremos que juntar (integrar) todos los archivos. Luego de tener esta integración y que un nuevo programador quiera agregar algún incremento en el código fuente, esto puede generar conflictos con el código que ya se tiene implementado.

El objetivo de la Integración Continua es de automatizar todas las tareas que son repetitivas (compilar, ejecución de pruebas, construcción, deployar, documentación). Y que estas tareas sean ejecutadas lo más a menudo posible y de manera automática para así poder detectar fallos cuanto antes.

Podemos visualizar el siguiente gráfico para tener una mejor idea de lo que encierra la Integración Continua en el desarrollo de proyectos ágiles.

Figura 1: Flujo de la Integración Continua

Entre las características de la Integración Continua podemos citar las siguientes:

  • Nos permite estar siempre informado sobre el estado de nuestro proyecto.
  • La Integración Continua está asociado con las metodologías de programación extrema (XP) y desarrollo ágil.
  • Es una metodología centrada en disminuir la carga de trabajo a los programadores y la utilización de una mayor potencia del servidor.

Entre las ventajas de la Integración Continua podemos citar las siguientes:

  • Reducción del tiempo de integración.
  • Detección de errores lo más pronto posible.
  • Pruebas inmediatas tras un cambio en el código.
  • Disponibilidad del código para test, demos, etc.

Herramientas que se utilizan para realizar la Integración Continua
Veamos el siguiente gráfico:


Figura 2: Herramientas utilizadas para la Integración Continua

Descripción de las herramientas utilizadas en el gráfico (Figura 2)
  1. Subversion, sistema de control de versiones que administra y guarda cualquier fichero,mantiene un historial de cambios realizados.Nos permitirá tener nuestro código centralizado, descargar, actualizar y subir código que se encuentra en este repositorio.Hacer frecuentes commits acelerará la construcción del proyecto, además de encontrar rápido errores.
  2. Maven, herramienta para la gestión y construcción de proyectos Java.Es la Base que se tiene para trabajar para la IC (con proyectos Java), ya que cuenta con comandos de compilación, deploy, test, etc. Con un solo comando puede construir un proyecto.
  3. Nexus, es un administrador visual de repositorios para Maven.Nexus actúa como un repositorio de Maven público. Esto significa que los artefactos (jars) y sus dependencias, sólo tienen que descargar una vez, y después se descargan del Nexus.
  4. Hudson, herramienta open source que nos ayuda a monitorizar la ejecución de tareas repetitivas como el compilar un proyecto cada cierto tiempo.Además se enfoca en la construcción y prueba de los proyectos de software de forma continua y en monitorizar la ejecución de tareas ejecutadas externamente.Se integra fácilmente con Maven y tiene un sin número de plugin que se pueden utilizar.
  5. Sonar, podemos controlar lo que podemos medir. Permite la verificación de la calidad del código java, calcula y muestra en formato web las métricas de nuestros proyecto. Herramientas como PMD, CheckStyle, FindBugs, Cobertura, etc; ya vienen embebidas en Sonar.

Entre las desventajas de la Integración Continua podemos citar las siguientes:

  • Necesidad de un servidor dedicado para IC.
  • El impacto inmediato al subir código erróneo provoca que los desarrolladores no hagan tantos commits como sería conveniente como copia de seguridad.

Conclusiones:

  • La IC está enfocada a disminuir el riesgo y a la detención y solución temprana de problemas.
  • La IC nos brindará información en todo momento.
  • El éxito de la IC está fuertemente ligada con las serie de pruebas (Cobertura) que se tiene en el proyecto.
  • Permite una rápida retroalimentación de nuestro proyecto.

Fuente: http://mikeciblogs.wordpress.com/2010/06/15/continuous-integration-for-agile-project-managers-part-3/

 

, , , , , ,

post-author