Articulo de referencia

Indicador luminoso de construcción

Una serie de luces de compilación aplicadas a procesos como las pruebas unitarias además de una compilación real Un indicador luminoso de compilación es un sencillo indicador vi...

Una serie de luces de compilación aplicadas a procesos como las pruebas unitarias además de una compilación real

Un indicador luminoso de compilación es un sencillo indicador visual que se utiliza en el desarrollo ágil de software para informar a un equipo de desarrolladores sobre el estado actual de su proyecto. El objeto utilizado puede variar desde un manómetro hasta una lámpara de lava , pero su propósito sigue siendo el mismo: comunicar rápidamente si un proceso de software (como una compilación ) se ha realizado correctamente o no.

Historia

El indicador de compilación se originó en CruiseControl , una herramienta de integración continua creada por empleados de ThoughtWorks . Aunque funcionaba principalmente como un panel de control web que podía informar información más detallada sobre una compilación, el software también podía controlar dispositivos externos para generar informes más sencillos. [ 1 ]

Usar

El uso tradicional de una luz de compilación es determinar el éxito de una compilación de software en un sistema de integración continua (CI). [ 2 ] Diferentes equipos de desarrollo han utilizado diferentes indicadores, pero una opción popular es la lámpara de lava verde y roja : verde cuando la compilación es exitosa y roja cuando algo falla. [ 3 ] Las luces de compilación incluso pueden ser accesibles de forma remota a través de una cámara web u otros medios. [ 4 ] Sin embargo, dado que muchas de las pruebas en oficinas de desarrollo con mucho trabajo siempre estarán en estado de repetición después de los últimos cambios, algunos indicadores tienen una visualización de tres estados [ 2 ] : aprobado , fallido y en repetición , para proporcionar un indicador más preciso para el personal y los gerentes. [ 5 ]

Más allá de los indicadores individuales

Con el crecimiento de la integración continua a las pruebas continuas , el número de objetivos de compilación simultáneos puede aumentar, incluso para una sola base de código. Además de un objetivo de compilación simple, ahora habrá pruebas unitarias y varios niveles de pruebas de sistema. Como las pruebas extensas son lentas y es deseable mantener las pruebas rápidas ejecutándose en un ciclo rápido para brindar retroalimentación rápida a los desarrolladores, el número de objetivos de compilación puede aumentar a cincuenta o más. Esto es demasiado para mostrarlo con una simple pantalla de lámpara de lava. Los servidores de integración como Jenkins ofrecen un panel de control accesible a través de la web, que puede mostrarse permanentemente en un monitor de pantalla plana montado en la pared. Los detalles de dicho panel son demasiado pequeños para leerse desde el otro lado de la oficina, pero los cambios de color presentan una visión general del estado.

Con una metodología de desarrollo continuo guiado por pruebas , se publican nuevas pruebas antes de que se desarrolle el código funcional para superarlas. Por lo tanto, existe un período en el que se sabe, e incluso se requiere, que algunas pruebas fallen. [ 6 ] Las pruebas fallidas son necesarias, ya que demuestran la capacidad de las nuevas pruebas para detectar la situación problemática. Una vez que el nuevo código se desarrolla y funciona, estas pruebas comienzan a pasar. Un entorno de pruebas continuas en el que se publican nuevas pruebas antes que su código requiere, por lo tanto, dos objetivos de compilación: uno que rastrea el código y las pruebas más recientes, y otro "candidato a lanzamiento" que solo se actualiza en incrementos cuando todas las pruebas se cumplen con el código que las supera. Para el indicador de compilación, esto también implica que uno de esos objetivos se mostrará frecuentemente como "fallando" sus pruebas. Como este "fallo" anticipado podría ser engañoso para observadores ingenuos, el indicador de compilación debería ocultarlo o presentarlo claramente.

Cuando varios objetivos de código, como versiones antiguas de productos, aún son compatibles con la integración continua (CI), pero no se encuentran en un desarrollo activo, un panel de control completo puede verse dominado por objetivos obsoletos que rara vez cambian. En este caso, un panel de control selectivo puede ser más apropiado, donde solo se muestran los objetivos que están fallando o que han estado activos recientemente. El panel de control completo está disponible en los escritorios de los desarrolladores, pero la pantalla principal muestra solo los aspectos más destacados. Estos paneles de control suelen codificarse localmente extrayendo información del panel principal y aplicándole filtros locales relevantes, según las necesidades locales. Una desventaja de un panel de control con filtros dinámicos, en comparación con uno estático, es que la posición de los iconos de un objetivo específico puede cambiar en la pantalla, lo que dificulta su lectura desde cualquier punto de la oficina. En este caso, se pueden mostrar iconos distintivos, como el logotipo del producto, en lugar de simples bloques de color.

Referencias

  1. Mike Cohn (10 de julio de 2009). Éxito con Agile: Desarrollo de software con Scrum . Pearson Education. págs.  245–. ISBN 978-0-321-57936-2Consultado el 23 de agosto de 2011 .
  2. 1 2 "The Orb - Lámpara indicadora de construcción" . agileskunkworks.org . Archivado del original el 11 de junio de 2010.
  3. Ken W. Collier (27 de julio de 2011). Agile Analytics: A Value-Driven Approach to Business Intelligence and Data Warehousing . Addison-Wesley. pp. 281–. ISBN  978-0-321-50481-4Consultado el 23 de agosto de 2011 .
  4. Karsten, Paul; Cannizzo, Fabrizzio (2007). "La creación de un equipo ágil distribuido" . Procesos ágiles en ingeniería de software y programación extrema . Lecture Notes in Computer Science. Vol. 4536. Association for Computing Machinery . pp. 235–239 . doi : 10.1007/978-3-540-73101-6_44 . ISBN   978-3-540-73100-9.
  5. Build Light: la entrega continua se une a la reingeniería de controladores USB. Archivado el 15 de septiembre de 2013 en Wayback Machine - Bernd Zuther, comSysto GmbH, 2013
  6. Madeyski, L.; Kawalerowicz, M. (4–6 de julio de 2013). Desarrollo continuo guiado por pruebas: una nueva práctica de desarrollo de software ágil y una herramienta de apoyo . Actas de la 8.ª Conferencia Internacional sobre Evaluación de Nuevos Enfoques para la Ingeniería de Software (ENASE). Angers, Francia. pág. 262.