
Verificación y Validación
La importancia de este tema se viene dando desde hace ya más de 30 años por Michael S.Deutsch [DEUT79] en su estudio de "Verification and Validation" dice que:
"El desarrollo de sistemas de software implica una serie de actividades de producción en las que las posibilidades de que aparezca el fallo humano son enormes. Los errores pueden empezar a darse desde el primer momento del proceso, en el que los objetivos pueden estar especificados de forma errónea o imperfecta, así como en posteriores pasos de diseño y de desarrollo. Debido a la imposibilidad humana de trabajar y comunicar de forma perfecta, el desarrollo de software ha de ir acompañado de una actividad que garantice la calidad."[1]
Los proyectos de desarrollo de software han padecido tradicionalmente problemas de calidad, tanto en el propio proceso de desarrollo como en los productos de entrega. Esta problemática tiene su origen en las habituales desviaciones sobre los plazos y esfuerzos previstos y en la frecuente aparición durante la implantación y operaciones de los productos resultantes.
El proceso de desarrollo adoptado por un proyecto dependerá de los objetivos y metas que tenga el mismo. Para poder alcanzar dichos objetivos se han desarrollado distintos modelos de ciclo de vida, pero en cualquiera de ellos será necesario un proceso que asegure la calidad del producto durante su desarrollo. Para ello, al final de cada fase del ciclo de vida debería comprobarse que el trabajo realizado hasta ese momento cumple con los objetivos previstos. Este es el punto clave, en el que tiene lugar la evaluación del producto, donde se decide si está o no preparado para pasar a la siguiente fase. De esta forma, si hay errores y son detectados, será más eficiente corregirlos que si se descubriesen en etapas avanzadas.[2]
El objetivo final del proceso de verificación y validación es comprobar que el sistema está hecho para un propósito, al cual intenta llegar aplicando técnicas específicas conocidas como: las pruebas y las revisiones.
El proceso de Verificación y Validación es un conjunto de procedimientos, actividades, técnicas y herramientas que se utilizan paralelamente al desarrollo de software, con el fin de asegurar que un producto resuelve el problema inicialmente planteado.
La Verificación
La verificación comprueba la consistencia del software con respecto a especificaciones y requisitos, es decir, si responde a la pregunta: ¿Se ha construido correctamente el software?
- El proceso determina si los productos resultantes de una fase del ciclo de vida del software cumple los requisitos establecidos en la fase anterior.
- El proceso determina si el producto resultante es completo, consistente y correcto para comenzar la siguiente fase.
La Validación
La validación comprueba si lo que se ha especificado e implementado es lo que el usuario realmente desea, es decir, si responde a la pregunta: ¿Se ha construido el software correcto?
- El proceso determina si el software cumple su especificación.
- El proceso asegura que el software fabricado se comporta como se espera y de acuerdo a las expectativas del cliente.
Las tareas V&V no solo se aplican a productos de software, sino que también a los resultantes del proceso de desarrollo, como el análisis y a la especificación de requisitos, por ejemplo. De esta forma, se comprueba que el proyecto es viable y que las especificaciones documentadas son completas, correctas, precisas, legibles, evaluables, y que, en general, responden a las expectativas del cliente. La V&V del diseño debe garantizar que los requisitos no se encuentran incompletos o incorrectamente diseñados. En el caso de la implementación y la codificación, la V&V del software es comúnmente conocida como las pruebas de software.
Técnicas de verificación y validación
Existen dos paradigmas principales que permiten la aplicación de estas en un proyecto, las cuales son el análisis estático y el análisis dinámico.
El análisis estático necesita de la ayuda de una herramienta que analice la representación estática del sistema con el propósito de descubrir errores. Trata de la verificación de "productos" obtenidos durante el desarrollo del software.
Por lo contrario, el análisis dinámico implica normalmente la ejecución del código fuente del software con los datos de prueba, con el fin de evaluar en tiempo real los diferentes escenarios soportados por el programa. [2]
Las técnicas son las siguientes:
- Técnicas estáticas: comprende de las revisiones informales que son:
- Revisión del código.
- Programación en parejas.
y revisiones formales:
- Planificación.
- Familiarización.
- Preparación.
- Examen.
- Rehacer.
- Seguimiento.
- Técnicas dinámicas.
- Caja Negra y Caja Blanca.
- Las pruebas del sistema:
- Pruebas de integración.
- Pruebas de entregas.
- Pruebas de rendimiento.
- Las pruebas de componentes:
- Métodos o funciones individuales.
- Clases de objeto.
Referencias
[1] Ton van Schijndel, Dré Robben, “TPI, CMMI and Testing”, Sogeti
Nederland B.V.
[2] Hernández, J. Z. (2011). Análisis de los procesos de verificación y validación en las organizaciones software.