Un acercamiento a la trazabilidad en el desarrollo ágil de software

Resumen

La trazabilidad de requisitos es una actividad importante dentro del proceso de gestión de la configuración, tanto para las posteriores etapas de mantenimiento como para analizar el impacto de cambios de requisitos por parte del cliente. Por otra parte constituye un elemento importante en el proceso de mejora continua de la organización y es vital para la gestión del conocimiento acumulado durante la ejecución del proyecto. No obstante, el mantenimiento de dicha práctica genera un costo adicional al proceso pues se carece de herramientas que automaticen las actividades de registro y seguimiento de las trazas. Los seguidores de metodologías ágiles consideran que las técnicas actuales como la matriz de trazabilidad es un lastre que nada aporta a la hora de entregar un software de valor al cliente.

El siguiente artículo es un trabajo preliminar sobre el empleo de una herramienta de gestión de proyectos ágiles y cómo su empleo ayuda a garantizar algún nivel de trazabilidad dentro del proceso de desarrollo mediante un modelo de trazabilidad centrada en la historia de usuario.

Palabras Clave: Metodologías ágiles, trazabilidad, gestión de configuración, cambios de requisitos, requisitos.

  1. INTRODUCCIÓN

Uno de los aspectos de mayor relevancia dentro del proceso de desarrollo de software lo constituye la adecuada obtención de los requisitos debido a que representa la descripción completa del comportamiento del software que se va a desarrollar e incluye el conjunto de interacciones que tendrán los usuarios con el software. De ahí que constituye uno de los aspectos por los que un proyecto de software se considera exitoso según muchas fuentes, es decir, si se completa dentro del cronograma y presupuesto previstos y con todos los requisitos especificados por el cliente. Pero sucede que solamente el 32% de los proyectos de software a nivel mundial son exitosos y de los que fracasan el 21,8 % corresponde a dificultades con la obtención de requisitos y al manejo apropiado de los cambios de estos durante el proceso de desarrollo. [1]. Lo que significa que algunos de los problemas que llevaron al anuncio de una crisis del software en el siglo pasado aún subyacen en el presente.

El autor estima que el problema no reside en el software como resultado concreto sino en el proceso que se emplea para construirlo. Sin un proceso de desarrollo de software que permita al equipo lidiar con la incertidumbre de los cambios de requisitos más que evitarlos como lo hacen las metodologías tradicionales, la aparición de estos cambios en etapas avanzadas del proyecto resulta en un problema muchas veces sin solución.

Fowler plantea que un proceso adaptativo es aquel que permite controlar la incertidumbre. Los métodos ágiles se basan en una planeación adaptativa. Aceptan y controlan el cambio, ya sea de requerimientos, tecnologías o incluso cambios en el propio método, a diferencia de las metodologías tradicionales que invierten gran cantidad de tiempo en planificar el proyecto antes de iniciarlo y hacen resistencia a cualquier cambio durante la ejecución del mismo. [2] Por otra parte, desde hace unos años ha habido un interés creciente  en las llamadas metodologías ágiles o livianas (Agile Software Development). Caracterizadas como una alternativa a la burocracia de las metodologías tradicionales, las metodologías ágiles centran sus propuestas en la entrega temprana de un producto funcional al cliente, atendiendo más a la interrelación entre los miembros del equipo de desarrollo, la colaboración con el cliente y brindando mecanismos para lidiar con el cambio de requisitos durante la ejecución del proyecto. [3]

El estado cubano ha desarrollado una estrategia de informatización de la sociedad que involucra a universidades y a empresas nacionales productoras de software. Para garantizar la normalización y coherencia con la práctica internacional, el país ha establecido la certificación de los procesos de desarrollo de software. Esta certificación está basada en la norma cubana NC ISO 9001:2008. [4]

La certificación de cualquier proceso, a partir de las normas ISO exige la existencia de evidencias documentales sobre el cumplimiento de cada etapa del desarrollo, de las revisiones del cumplimiento de los requisitos establecidos por el cliente y demás partes interesadas, y de la validación y verificación del diseño y desarrollo. Sin embargo, uno de los principios de las metodologías ágiles de software aborda que se prioriza la satisfacción del cliente y el cumplimiento de sus expectativas por encima de la documentación del proceso, lo cual afecta la certificación de los procesos ágiles.

Otra de las cuestiones que requiere las normas ISO es lo concerniente a la gestión de la configuración.  La gestión de la configuración documenta la configuración del producto. Proporciona identificación y trazabilidad, el estado de cumplimiento de sus requisitos físicos y funcionales, y acceso a información exacta en todas las fases del ciclo de vida. [5]

En el presente trabajo se hará un análisis preliminar de cómo un sistema para la gestión de un proyecto ágil, permite tener una trazabilidad del proyecto centrado en la historia de usuario.

Trazabilidad de requisitos

Trazabilidad de requerimientos se refiere a la posibilidad de describir y seguir la vida de un requerimiento hacia delante y hacia atrás. [6]

Gotel y Finkelstein muestran que mientras muchas técnicas se han presentando para resolver problemas de trazabilidad, el problema en si mismo tiene diferentes definiciones y conflictos fundamentales entre equipos. La aplicación de prácticas de trazabilidad de requerimientos en las metodologías ágiles debe comenzar con un esfuerzo inicial para capturar conversaciones críticas entre desarrolladores y clientes mediante la creación de relaciones entre el diseño y los requerimientos.

Trazabilidad de los requerimientos se refiere a la habilidad de definir, capturar y seguir las trazas dejadas por los requerimientos sobre otros elementos en el ambiente de desarrollo de software y las trazas dejadas por esos elementos sobre los requerimientos. [7]

Importancia de la trazabilidad

La trazabilidad de los requerimientos ha demostrado que brinda beneficios para las organizaciones que hacen un uso apropiado de esta técnica. Es por ello que representa un componente importante en muchos estándares de software como CMMI e ISO 9001:2006. Los beneficios más importantes de la trazabilidad puede encontrarse en las siguientes áreas: gestión del proyecto, visibilidad del proceso, verificación y validación y mantenimiento [8]

Gestión del proyecto.

Facilita la estimación del proyecto debido a que siguiendo los enlaces de las trazas, el gerente de proyecto puede fácilmente ver cuántos artefactos se afectarán con un determinado cambio. Puede emplearse además para medir el progreso del proyecto mediante la revisión de los artefactos creados a partir de requerimientos. Toda esa información también es útil para gestionar posibles riesgos.

Visibilidad del proceso.

Mejora la visibilidad del proceso para los ingenieros y clientes. A través de la trazabilidad, cada programador puede determinar de dónde viene un requerimiento, su importancia y cómo fue implementado y probado. Puede comprobarse además cuestiones referidas a la satisfacción del cliente. Si el proyecto se audita por cualquier razón, la trazabilidad puede emplearse para demostrar que un requerimiento en particular fue implementado y probado.

Verificación and validación.

Los beneficios más significativos que brinda la trazabilidad pueden notarse en este proceso de verificación and validación de un proyecto de software. La trazabilidad brinda la posibilidad de evaluar la funcionalidad del sistema por requisitos, desde el origen a través de la prueba de cada uno. Implementada de manera apropiada, la trazabilidad puede emplearse para probar que un sistema cumple con sus requisitos y que se han implementado correctamente. Si se puede rastrear un requisito y encontrarse un artefacto de diseño, esto valida que ha sido diseñado. De igual modo si la traza de este requisito nos lleva al código, esto valida que ha sido implementado. De manera similar si llegamos a su caso de prueba, podemos demostrar que el requisito ha sido verificado a través de una prueba.

Mantenimiento

La trazabilidad es una herramienta invaluable durante la fase de mantenimiento ya que nos permite determinar qué requisito, diseño, código y caso de prueba se necesita actualizar para llevar a cambio un cambio que proponga el cliente durante la ejecución del proyecto.

Retos para uso de la trazabilidad de los requisitos.

A pesar de los beneficios antes expuestos la trazabilidad encierra un costo adicional. A medida que el sistema crece en tamaño y complejidad este proceso se vuelve más caro y complejo. Existen sugerencias que plantean no hacer una trazabilidad en todos los requisitos sino solamente en aquellos más importantes. Otro de los desafíos para el uso de la trazabilidad lo es la gestión de cambios, debido a que requiere disciplina para actualizar los datos de trazas lo cual tiene un costo en términos de tiempo y esfuerzo. Los problemas organizacionales también pueden atentar contra el proceso de trazabilidad. Muchas organizaciones ven la trazabilidad como una herramienta de conformidad con los estándares, por lo que no existe un compromiso para llevar esta práctica de manera consciente. Por otra parte los miembros del equipo pueden ver la trazabilidad como algo que se puede usar para medir su rendimiento y ver afectado su pago. Otro de los retos más grandes para el empleo de esta técnica es el pobre soporte de herramientas que existe. Aunque existe algo más que 31 herramientas diferentes que se dice brindan un soporte de trazabilidad completo, el uso en la industria del software es muy bajo. La mayoría de las empresas se mantienen utilizando métodos manuales como la matriz de trazabilidad. [9]

El empleo de la matriz de trazabilidad genera una fuerte controversia en los seguidores de los métodos ágiles debido al costo en tiempo y esfuerzo que demanda mantenerla actualizada. Scott Amber cuestiona en uno de sus artículos la necesidad de su empleo planteando que se ha sobrevalorado porque su alto costo de mantenimiento supera los beneficios. [10]

Trazabilidad centrada en la historia de usuario

Las historias de usuario constituyen el artefacto de desarrollo primario para metodologías como Scrum y Programación Extrema. Es una definición de requisito a muy alto nivel escrita por el cliente, que contiene suficiente información para que los programadores puedan determinar un estimado razonable de esfuerzo para implementarla.[10]

Son el vehículo que conduce la conversación y el intercambio entre el equipo y el cliente para descubrir detalles sobre la historia y dividirla en tareas, evaluar el riesgo, los costos y su prioridad, además de las cuestiones técnicas o de diseño. [11]

AgilePro es una herramienta desarrollada por HavaSoft para la gestión de proyectos ágiles. Esta casa de desarrollo de software lleva más de cuatro años practicando métodos ágiles en sus proyectos y emplea dicha herramienta para el control, la visibilidad y la gestión de sus proyectos de software. Ha sido concebida para que sirva al equipo de desarrollo para controlar los artefactos del proyecto, obtener las gráficas y métricas que necesitan para comprobar su desempeño y accionar cuando algo no funciona bien dentro del equipo. Aunque pudiera no considerarse adecuado para sustituir los irradiadores de información clásicos de los métodos ágiles como las pizarras, las notas adhesivas, CRC, etc.; su formato web nos permite el acceso y uso de cualquier miembro del equipo y recibir la misma información.

Su arquitectura centrada en la historia de usuario nos permite navegar o recuperar información relacionada con un requisito del cliente, incluso obtener la conversación efectuada en el proceso de elicitación. Esta conversación puede adjuntarse a la historia de usuario como un archivo de audio, documento de texto o diseños y esquemas previamente digitalizados.

Modelo de trazabilidad

Un modelo de trazabilidad debe cubrir tres aspectos: la definición, la producción y la extracción.

La definición se relaciona con la especificación de los objetos auditables y sus trazas.

La producción se refiere a la captura de las trazas, usualmente mediante un registro explícito de los objetos y sus relaciones y la extracción se relaciona con el proceso actual de la traza, la recuperación de información y auditorías. [12]

Arquitectura centrada en la historia de usuario.

Modelo de trazabilidad centrada en la historia de usuario

El empleo de AgilePro con su arquitectura centrada en la historia de usuario nos permite definir un modelo de trazabilidad con la misma estructura.

Definición

Los requisitos del cliente, expresados en historias de usuario, son el eje conductor donde confluyen todas facilidades del sistema.

Se auditan proyectos y estado de los proyectos, así como las personas responsables de las diferentes tareas.

hu2.png

Se almacena y recupera información respecto a la planificación del proyecto y las iteraciones, así como los objetivos y el alcance de cada iteración previo análisis con el cliente sobre los requisitos a implementar.

hu.png

Es posible asociar documentos a las historias de usuario, artefactos de diseño, codificación y pruebas.

hu3.png

Permite relacionar con la historia de usuario, impedimentos o riesgos, casos de prueba y la auditoría de las pruebas, las incidencias y bugs detectados por controles de calidad y el usuario final.

Tiene opciones de búsquedas y consultas sobre los elementos de trazas. Obtención de indicadores del proceso para la evaluación del equipo de desarrollo durante la iteración y el proyecto. Ejemplo: re-trabajo.

Producción

Este aspecto incluye la percepción, registro y mantenimiento de la traza [13]

Para no sobrecargar el proceso de desarrollo en la generación de documentos adicionales y el mantenimiento de los mismos, este modelo se apoya en el sistema AgilePro para obtener los elementos de trazas necesarios.

En la etapa de planificación del producto y/o la iteración se definen y escriben las historias de usuario en el sistema en la medida que la reunión transcurre. Existen mecanismos para grabar los intercambios con el cliente, fotografiar las pizarras, escanear los modelos y diagramas que luego se adjuntan al nivel de proyecto, iteración o historia de usuario en dependencia del nivel o grado de abstracción del artefacto.

Durante el proceso de planificación además, se fragmentan las historias en tareas, se estiman y se asignan los responsables (programadores). Los testers escriben los casos de prueba que también se asocian a cada historia de usuario. Estos casos de prueba se obtienen a partir de los criterios de aceptación dados por el cliente y especificados en la historia de usuario también.

En el transcurso de la iteración, cualquier miembro del equipo puede incorporar impedimentos en la historia de usuario y que deben ser resueltos por el líder del proyecto o en conjunto.

De igual forma el equipo de control de calidad de la institución puede incorporar incidencias o no conformidades del producto a nivel de historia de usuario.

Actualmente la trazabilidad hasta el código se hace a través de la incorporación manual del identificador de la historia de usuario en las actualizaciones que se hacen hacia el control de versiones. Se trabaja en el sistema para futura comunicación interna con Subversion.

Extracción

La auditoría selectiva, interactiva y no guiada son los tres mecanismos de recuperación de información en un modelo de trazabilidad. [14]

AgilePro propone el empleo de una vista al estilo Kanban board que permite ver los elementos (historias de usuario, tareas y programadores) que están actuando en el proceso de desarrollo de un proyecto en específico.

hu4.png

Desde aquí se puede comprobar, estado de las tareas de la historia de usuario, % de completamiento de la historia de usuario y cuál es el nivel de cobertura que tienen las pruebas dentro de la iteración. Permite comprobar además dónde están las principales restricciones del proceso y analizar qué requisitos están provocando demoras en el avance de la iteración.

El cuadro de mando principal contiene en forma de gráficos las principales métricas del proceso de desarrollo, que incluye:

–      Gráfico de Esfuerzo pendiente

–      Velocidad del equipo

–      Pruebas realizadas vs pruebas exitosas.

otro.png

Se puede navegar a través del mecanismo de drill-down o barrenado, desde la historia de usuario hasta descargar el código fuente del sistema de control de versiones. Obtener el número de cambios realizados, las fechas y el mapa de las relaciones entre las versiones del código.

Se puede auditar cambios en los requisitos por parte del cliente mediante la búsqueda de dependencias entre historias de usuario. En los métodos ágiles es muy usual crear una nueva historia de usuario cuando un requisito se cambia. En AgilePro ocurre lo mismo pero la nueva historia lleva marcada la razón de su creación. Lo mismo ocurre para el caso de las historias que fueron rechazadas por el cliente o por bugs que fueron detectados en el proceso de calidad.

Se puede obtener un informe de los requisitos que cumplen o no las expectativas del cliente mediante su decisión sobre el completamiento de la historia de usuario o mediante los resultados negativos de las pruebas de aceptación.

CONCLUSIONES

 La trazabilidad es muy útil para el desarrollo de software. Aún cuando los promotores de los métodos ágiles plantean que más que ayudar entorpecen el avance del proyecto, se pueden emplear herramientas de gestión de proyectos ágiles, se puede, si no obtener una trazabilidad total, al menos un espacio para obtener resultados importantes que permitan gestionar un poco el conocimiento que en este tipo de metodologías queda tácito y en la memoria colectiva del equipo de desarrollo y que. sin embargo, es una experiencia acumulada que permite a otros equipos reutilizarla en pos de hacer más efectivo el trabajo de una organización productora de software. Lo fundamental está en emplear los mismos recursos que el equipo necesita para su trabajo (modelos, diagramas, conversaciones, requisitos), lograr clasificarlos y organizarlos de manera tal que se puedan recuperar, consultar y analizar para una mejor y efectiva toma de decisiones.

  • REFERENCIAS BIBLIOGRÁFICAS
  1. STANDISH GROUP, R. Standish Group Report CHAOS. [S.l.]. 2009
  2. Fowler, M. “The New Methodology”, 2005; Disponible en: http://www.martinfowler.com
  3. Larman, C. Agile and Iterative Development: A Manager’s Guide. USA:  Addison-Wesley, 2003.
  4. PCC, Resolución Económica del V Congreso del Partido Comunista de Cuba. 1997
  5. ONN, “Sistema de gestión de la calidad – Directrices para la gestión de la configuración”, 2009
  6. Gotel, O., Finkelstein, A., “An Analysis of the Requirements Traceability Problem”, Proceedings of the IEEE International Conference on Requirements Engineering, 1994 Apr, pp 94-101
  7. Pinheiro F.A.C., Goguen J.A., «An object-oriented tool for tracing requirements», IEEE Software, 1996, vol,13, (2), pp. 52-64
  8. Richard H., Merlin D, “Traceability.” Software Requirements Engineering. IEEE Computer Society Press, 1997
  9. Kannenberg  A., Saiedian  H. “Why Software Requirements Traceability Remains a Challenge” jul/ago 2009: http://www.stsc.hill.af.mil/crosstalk/2009/07/0907KannenbergSaiedian.html
  10. W. Ambler S. “Agile Requirements Best Practices” 2009: http://www.agilemodeling.com/essays/agileRequirementsBestPractices.htm
  11. Beck, K, “Extreme Programming Explained: Embrace Change”, 2001, Addison Wesley.
  12. Pinheiro F.A.C., “Requirements traceability”. Universidad de Brasilia.
  13. Ebner G., Kaindl H. “Tracing all around in reengineering”. IEEE Software, 2002 May; pp 70-77.
  14. Pinheiro F.A.C., Goguen J.A. “An object-oriented tool for tracing requirements”, IEEE Software, vol 13. (2). Pp. 52-64, 1996

.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

16 + 7 =