Agilidad y calidad en el desarrollo de software, la importancia de un buen sistema de integración continua

Un proyecto de desarrollo software, persigue, o debe perseguir siempre generar como resultado un producto sin errores y que cumpla las expectativas de los usuarios. Esto que puede parecer sencillo, encierra multitud de variables que debemos tener en cuenta para obtener el resultado esperado. Si queremos que no se nos escape nada, es fundamental tener en cuenta tres aspectos básicos:

  • ¿De qué manera estamos haciendo las cosas o vamos a hacerlas a partir de ahora? Definir procedimientos de trabajo que determinen como debe funcionar el equipo en sus tareas cotidianas es algo fundamental para la buena marcha de los proyectos, así como delimitar las funciones de cada miembro del mismo y sus responsabilidades. Sin estos procedimientos claramente establecidos, puede que algunas tareas no estén bien definidas o simplemente haya “puntos muertos” en los que no tengamos criterio para actuar de manera consensuada.
  • ¿Nuestro trabajo está vinculado a uno o varios proyectos? ¿Suelen ser nuestros proyectos grandes o pequeños? ¿Quiénes son nuestros stackeholders? Estas son solo algunas de las preguntas que deberemos hacernos, pero que condicionarán la metodología de desarrollo a aplicar en nuestros proyectos.
  • ¿Tenemos herramientas que hagan verdaderamente ágil y cómodo el trabajo del equipo de desarrollo de producto? Muchas veces nos vemos condicionados a hacer las cosas de determinada forma por el software del que disponemos, e incluso a hacer algunas tareas de una manera muy “manual” o repetitiva porque simplemente desconocemos que pueden hacerse de otra y el día a día nos come el tiempo que debemos invertir en intentar mejorar nuestros procesos. En el mercado existen multitud de herramientas para agilizar y automatizar las fases y tareas de desarrollo y testeo, pero encontrar aquellas que nos permitirán trabajar de una manera organizada, eficiente, medible y que nos den feedback sobre nuestro progreso en todo momento no es para nada algo elemental. De hecho la complejidad va en aumento cuantas más fases del desarrollo software queremos cubrir y mayor número de perfiles de nuestra organización se ven implicados en la utilización de estas herramientas.

SISTEMAS DE INTEGRACIÓN CONTINUA

Dejando un poco al margen los dos primeros puntos, de suma importancia en cualquier organización, me gustaría poner el foco en la importancia de tener un buen sistema de integración continua que nos hará la vida más fácil y nos ayudará a cometer menos errores. Según Wikipedia un sistema de integración continua es “… un modelo informático propuesto inicialmente por Martin Fowler que consiste en hacer integraciones automáticas de un proyecto lo más a menudo posible para así poder detectar fallos cuanto antes…”. Básicamente, estos sistemas permiten realizar procesos automatizados, como puedan ser: compilaciones, despliegues, tests, etc.

Son muchas las ventajas que pueden intuirse en este tipo de herramientas, pero fundamentalmente sirven para prevenir el error humano en tareas críticas o repetitivas, lo que nos permitirá un aseguramiento de la calidad y reducción de los riesgos de nuestro proyecto.

Próximamente publicaré otro artículo en el que explicaré las 11 herramientas que debes tener en cuenta si quieres montar un sistema de integración continua para desarrollar aplicaciones móviles multiplataforma.

imagen: Luis de Anda C.