Nuevos Pensamientos y Soluciones para mantener una Trazabilidad Completa, Consistente y Confiable en el Desarrollo del Software (Parte I)

Resumen Ejecutivo

La trazabilidad no es un concepto nuevo en la sociedad humana. Es una disciplina que se encuentra a lo largo de múltiples industrias, y en muchos procesos de desarrollo de producto como las industrias automovilística, aeroespacial, farmacéutica y producción de alimentos. Después de que se han definido los requisitos de negocio, funcionales y de pruebas, comienza la tarea de gestionar los requisitos a lo largo del ciclo de vida. Tradicionalmente, la trazabilidad ha sido un esfuerzo de escribir en papel extendido posteriormente al teclado, con la información de trazabilidad capturada en documentos. Pero mantener la trazabilidad de esta forma es complicada, no confiable y está sujeta al error humano.
Las técnicas y herramientas existentes para la trazabilidad han hecho muy poco para resolver el reto del mantenimiento en las organizaciones de ingeniería del software. Las herramientas de gestión de requisitos exclusivamente, que se utilizan normalmente para la trazabilidad, son meras islas de datos, dependientes de integraciones frágiles, proporcionando un intercambio de datos incompleto, gran redundancia de información, junto con una gran intrusión y disgusto para los usuarios. Debido a que las herramientas actuales para la gestión de requisitos están separadas del proceso y no tienen noción de la gestión del cambio, el mantenimiento de la trazabilidad continúa siendo complicada, no confiable y sujeta al error humano.
Hay una forma mejor: La Gestión de Requisitos realizada mediante “trazabilidad dirigida por proceso”. La trazabilidad  gestionada por proceso forja vínculos o relaciones entre los artefactos, absorbiendo los cambiosen elmomento que ocurren a lo largo el todo el proceso (junto con todas sus actividades y artefactos relacionados), y conectando la función de gestión de requerimientos al más amplio ciclo de vida dela aplicación.
Este documento define y desmenuza el concepto de trazabilidad; discute el rol vital que juega el proceso en el mantenimiento de la trazabilidad;  define las opciones de herramientas que existen en la actualidad, y mira las aproximaciones progresivas que llevan el proceso al esfuerzo de trazabilidad para proporcionar una respuesta al gran desafío del mantenimiento de la trazabilidad.
La trazabilidad dirigida por proceso proporciona una trazabilidad completa y omnipresente que va a mejorar la contabilidad, minimizar los riesgos, y decrementar los costes de diseño y desarrollo.

¿Qué es la Trazabilidad?

Definición: La trazabilidad se define como la capacidad de mantener artefactos que son el resultado de varias actividades.y la capacidad de relacionar esos artefactos, actividades y los resultados finales de uno a otro en una secuencia de tiempo.

La trazabilidad se mueve hacia adelante y hacia atrás
a lo largo de la historia del artefacto

 

En el contexto de la gestión de requisitos, la trazabilidad esencialmente describe la cronología de un requisito particular de negocio. La trazabilidad muestra los orígenes de ese requisito y/o una especificación; el hilo de actividades que tienen lugar para satisfacer el requisito, los procesos de pruebas y el plan relacionado al requisito, hasta el resultado final de negocio. La trazabilidad también muestra el impacto de los cambios a este flujo de actividades y las relaciones entre los requisitos y otros artefactos de desarrollo, y el proceso que maneja ese cambio. Idealmente un usuario de una gestión de requisitos debería ser capaz de usar la trazabilidad para moverse adelante y atrás en el tiempo para entender tanto los orígenes como los resultados de un requisito específico o de un grupo de requisitos.
La trazabilidad no es exclusivamente un concepto técnico. Se originó actualmente en la industria de la alimentación como una forma de seguir la calidad y salubridad de la comida para el consumo humano. En la industria de la alimentación, los conceptos gemelos de trazabilidad y origen permiten a los consumidores y a las agencias de gobierno seguir las comidas como la leche, carne o aceite de oliva a través de toda la cadena de producción alimentaria, mirando el empaquetado, transporte, procesado, gestión en la granja y ganadería, junto con todas las aprobaciones relacionadas y las especificaciones asociadas. La industria del software ha adoptado el concepto de trazabilidad para tener el registro del historial de los requisitos de negocio junto con otras entradas dentro del desarrollo del software y las aplicaciones de sistemas.
Más recientemente, los ejecutivos de negocio han traído la trazabilidad como requisito clave para asegurar el cumplimiento de los procesos y el ajuste a los mandatos regulatorios.

 Caso de Uso Típico

Veamos un caso de uso típico para describir la trazabilidad de la industria automotriz. Utilizaremos este caso para mostrar cómo se construye la trazabilidad, y cómo los cambios en los requisitos afectan a la mantenibilidad de la trazabilidad.
Empezaremos por un requisito de usuario: “el coche debe ir a 160 Mph”
Este requisito es implementado en requisitos de subsistema incluyendo los siguientes: “el motor debe tener al menos 200Hp” y “el coeficiente de penetración (Cx) debe ser menor a 0,9”.
Estos requisitos de subsistema mismos se descomponen en unas especificaciones muy detalladas que definen cada parte del motor y cada parte de la forma del coche y su diseño externo. Además de esto está la complejidad añadida de que cada fabricante de componentes tiene su propia especificación. La compañía que proporciona las manillas de las puertas, por ejemplo, sabe que las manillas deben tener una forma determinada. La compañía que proporciona el hierro para los cilindros sabe que el hierro debe soportar ciertas temperaturas.
¿Pero qué ocurriría si cambian los requisitos de usuario en este delicado modelo de requisitos y especificaciones relacionados y descendentes?¿Cómo impacta ese cambio al proceso de fabricación?¿Cómo se afecta el time to market del fabricante? ¿Que pasaría si hay un fallo durante una prueba de conducción y se necesita identificar qué requisito de usuario permanece sin completar? ¿Y cumple el cambio en el requisito las regulaciones puestas por la industria?
Ahora apliquémoslo a un caso de uso similar en la industria del software. ¿Cómo impacta un cambio en un requisito de usuario al proceso de desarrollo de software? ¿Al esfuerzo de pruebas? ¿Al alcance del proyecto y del tiempo) La trazabilidad como concepto es algo vital de entender el el mundo del desarrollo del software: Es más, como en la construcción de vehículos, el desarrollo de software es en su esencia un proceso de manufactura.
Veamos un flujo de proceso típico y mostremos cómo funciona la trazabilidad dentro de un proceso de desarrollo de software. Típicamente, el inicio de una petición de cambio el el punto de inicio de cualquier modificación de producto o de sistema. La petición de cambio lanza la generación de un caso de uso, lo que además crea un requisito. El caso de uso se formaliza en una orden de trabajo para la aprobación del cliente. Los datos de diseño se derivan de los requisitos, y el código fuente se genera desde el diseño. Los casos de prueba se generan desde los requisitos, y a su vez se generan los resultados de las pruebas cuando se ejecutan las mismas. Se hacen revisiones de los requisitos, diseño, casos de prueba y código fuente, lo que puede resultar en elementos adicionales de acción. Dentro de este sistema complejo, la trazabilidad permite que se creen enlaces con las relaciones necesarias para facilitar el seguimiento del proceso completo y todas las actividades y artefactos relacionados.

¿Por qué es importante la Trazabilidad?

Es fácilmente entendible por qué se necesita la trazabilidad en la industria de la alimentación. Muy sencillamente, la gente quiere saber los orígenes de la comida que están comiendo, y asegurarse de que es saludable para el consumo. Es igualmente posible entender por qué la trazabilidad es importante en la industria automotriz. En el evento de un problema obligue a hacer un cambio de piezas, el fabricante querrá conocer el origen de la pieza, entender su proceso de fabricación y el alcance de su distribución.
Entonces, ¿por qué es importante en el proceso de desarrollo de software?
¿Ha leído alguna vez un documento de requisitos y se ha dado cuenta de que su contenido no está actualizado incluso sabiendo que es la última versión en el control de versiones? Todos sabemos que la información de los proyectos de software comprende múltiples artefactos que se relacionan entre ellos, y sólo la combinación de los diferentes documentos de requisitos te darán la imagen completa. Por tanto tu documento de especificación de requisitos se ha quedado desfasado porque su contenido no se ha actualizado para reflejar los cambios de los otros documentos relacionados.
Puede ser que haya cambiado un requisito de usuario pero la especificación técnica no se ha actualizado. O ha cambiado un requisito, pero el caso de prueba asociado no se ha actualizado. La trazabilidad es mantener la información completa, consistente, confiable y auditable.

 Demostrar Completitud y Contabilidad

 
La trazabilidad sirve para demostrar y asegurar el tiempo y completitud del producto finalizado. Los “enlaces” de la trazabilidad ayuda a las organizaciones “seguir la cadena” y contabilizar el identificar cualquier requisito no cumplimentado que pueda existir.
Esto es especialmente crítico para las empresas que sigan SOA.

Gestionar el Cambio de una forma Efectiva y Asegurar el Entendimiento

 
La trazabilidad puede ayudar a propagar el cambio, de nuevo identificando los elementos relacionados o dependientes (como subrequisitos, documentos de especificación, planes de prueba) que pueden verse afectados por el cambio. La trazabilidad también ayuda a a asegurarse de que hay un entendimiento común entre los diversos participantes en el proceso revelando los enlaces y relaciones entre sus acciones respectivas. Esto es especialmente crítico para los equipos de desarrollo distribuidos o externalizados.

Gestión de Bienes de Información

 
La trazabilidad ayuda a las organizaciones a gestionar el volumen de información que se genera en un desarrollo de un sistema complejo. Las empresas mayores con una inversión estratégica en un software propietario tienen sus sistemas de software como  bienes corporativos. La trazabilidad a lo largo del proceso de desarrollo, permite a las empresas preservar, proteger, mejorar y mantener mejor esos sistemas de software como una ventaja competitiva.

Mantener Controles Internos para el Cumplimiento Regulatorio

 
La trazabilidad es un factor esencial para proporcionar en una organización de IT o de Ingeniería del Software la capacidad de prescribir y seguir el proceso. La trazabilidad es particularmente esencial para empresas con industrias altamente reguladas como las aeroespaciales o farmacéuticas donde los procesos y procedimientos de la organización están sujetas al escrutinio de auditorías externas. Una organización de desarrollo de software en una industria regulada debe ser capaz de trazar un cambio de software hasta el requisito o al conjunto de especificaciones y de ahí a los requisitos regulatorios, y mostrar la trazabilidadal auditor. Si no se puede demostrar pueden enfrentarse a multas o incluso a parar el proceso de fabricación.

Alcanzar la Certificación de la Industria y la Calidad

 
Los sistemas de gestión de la calidad como ISO 9000 se han estado utilizando por las compañías fabricantes durante años como una forma de identificar el ajuste a unos altos estándares de calidad. Cuando se fabrican productos relativos a la seguridad en unos ambientes “just in time” es crítico para los fabricantes garantizar la calidad de los productos y una trazabilidad del 100%.
 
Dentro de la Industria del software, existe el Capability Maturity Model (CMMI), un framework que esboza la capacidad de la organización de desarrollo, para adherirse a unos altos estándares de calidad. En este contexto la trazabilidad mostrará a un asesor de calidad el hilo de las conexiones, relaciones y artefactos relacionados a lo largo del proceso completo de desarrollo. Ayuda a determinar que los requisitos se han cumplimentado, probado y cómo los cambios a ese requisito impactan en los varios elementos que constituyen el proceso y sus esfuerzos de trabajo.. CMMI dice que la trazabilidad es una práctica efectiva y una buena práctica de la industria. La conformidad al CMMI demanda que la trazabilidad bidireccional se debe mantener entre los requisitos, planes de proyecto y productos del trabajo, y que las inconsistencias entre los requisitos y el trabajo del proyecto deben ser fácilmente identificadas.

Permitir la Reutilización 

Los requisitos que contribuyen al desarrollo de estos sistemas de software son en sí mismos, bienes estratégicos. Como em proverbio del niño y la bañera, muy a menudo,  los requisitos de sistema son abandonados u olvidados tan pronto como el software se ha desarrollado y puesto en producción. La trazabilidad permite que la empresa mantenga el enlace entre el sistema de software y su conjunto de requisitos, y manejar ese trabajo en el futuro o empezar rápidamente nuevos proyectos y construir nuevos sistemas más rápidamente y a un menos coste.

Incremementar la Productividad

Otro beneficio normalmente escondido de la trazabilidad en el mundo del desarrollo del software es la contribución a la productividad y eficiencia de un equipo. Volvamos por un momento a un método inmaduro, basado en papel para gestionar la trazabilidad. Si el beneficio de las herramientas – o mejor – una única solución que gestione el proceso y mantenga todas las relaciones y artefactos juntos, la información fácilmente va por mal camino, se omiten pasos vitales y se pierden documentos. El personal gasta tiempo persiguiendo la información perdida, escribiendo informes de seguimiento de estado y en reuniones para compartir el conocimiento – tiempo mucho mejor gastado en desarrollar nuevos servicios estratégicos y productos que hagan avanzar el negocio. Una solución única para la trazabilidad que incluya el conocimiento del proceso, y guarde las actividades y artefactos puede acelerar la efectividad de un equipo significativamente.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *