Vivimos en un entorno en el que cada vez hay más productos y servicios basados en software. Desgraciadamente, todos podemos contar experiencias sobre algún problema a la hora de utilizarlos, y un porcentaje altísimo de esos casos responde a una falta de calidad de su tecnología.
Si pensamos en la complejidad técnica en la que se basan los servicios actuales, en los que intervienen múltiples programas embebidos y conectados entre sí, no resulta extraño que se produzcan fallos. Sin embargo, hay que tener siempre presente que un error de programación, un error de cálculo de una aplicación o un error en el equipamiento de una red, puede ser suficiente para dar al traste con el negocio más atractivo y prometedor. La verdad es que resulta complicado demostrar que la calidad del software es un factor decisivo para el éxito, pero lo que sí está claro es que la falta de calidad es un factor decisivo para el fracaso, por lo que la responsabilidad que los equipos de desarrollo tienen sobre sus hombros es altísima.
Para lograrlo, se hace necesario plantearse la Calidad del Software desde una perspectiva global, que abarque el ciclo de vida completo del producto, teniendo en cuenta tanto la calidad final del mismo como la del proceso de su desarrollo. Así, contar con metodologías, estándares, buenas prácticas, normativas y directrices correctos resulta fundamental para construir el armazón que permita desarrollar y poner en producción un producto de software de calidad porque, de esta forma, los errores y los costes serán menores y la agilidad y eficacia crecerán. Es decir, no basta con probar y probar, sino con probar con criterio. Cuando se une un buen proceso con un buen producto, el éxito está prácticamente asegurado.
Con el fin de afrontar entornos de desarrollo complejos con garantías de calidad, MTP está proponiendo a sus clientes la implantación de procesos de Integración Continua. En pocas palabras, la integración continua es una práctica de desarrollo de software que consiste en llevar a cabo integraciones automáticas del proyecto lo más a menudo posible para, de esta forma, poder detectar fallos cuanto antes.
Es un proceso que tiene su origen en el inicio del proyecto y que se extiende a lo largo de todo el desarrollo, y en el que mediante la utilización de librerías comunes y el aseguramiento continuo y automático de los cambios generados por cada uno de los participantes en el desarrollo, eliminando problemas de integración, se evita dar margen a la generación y acumulación de código incorrecto.
En definitiva, la aplicación de un proceso de integración continua aporta sistematización a todo el ciclo de vida del producto, evitando sorpresas de última hora al mantener bajo control todo lo referente a la actividad de pruebas, verificación y construcción.
Más concretamente, la propuesta de Integración Continua se basa en un software especializado en automatizar tareas y en hacer que estas se ejecuten de forma automática cuando se produce un evento, por ejemplo, una nueva versión de código en el repositorio. Gracias a este software, es posible automatizar tareas como: compilación de los componentes; integración de todo el desarrollo; ejecución de pruebas unitarias; ejecución de pruebas de integración; ejecución de pruebas de aceptación; obtención de métricas de calidad de código y despliegues automáticos. De esta forma, la práctica de Integración Continua permite:
Mantener un único repositorio de código fuente.
Automatizar la construcción del proyecto.
Hacer que la construcción del proyecto ejecute sus propios tests.
Entregar los cambios a la línea principal todos los días.
Construir la línea principal en la máquina de integración.
Mantener una ejecución rápida de la construcción del proyecto.
Probar en una réplica del entorno de producción.
Hacer que todo el mundo pueda obtener el último ejecutable de forma fácil.
Publicar qué está pasando.
Automatizar el despliegue.
Jose Manuel López Torets, Consultor Senior Ingeniería y Calidad del Software MTP