En el ámbito de la gestión de proyectos, las pruebas y la ingeniería de software, la verificación y validación (V&V) es el proceso fundamental de comprobar que un sistema de software cumple con las especificaciones y requisitos establecidos para alcanzar su propósito previsto. Este proceso, a menudo denominado control de calidad de software, es generalmente responsabilidad de los evaluadores de software como parte integral del ciclo de vida de desarrollo de software (SDLC).
Definiciones Fundamentales
Aunque a menudo se confunden, la verificación y la validación son conceptos distintos. Barry Boehm resumió la diferencia de manera sucinta:
- Verificación: ¿Estamos construyendo el producto correctamente?
- Validación: ¿Estamos construyendo el producto correcto?
"Construir el producto correctamente" implica comprobar que las especificaciones se han implementado correctamente en el sistema, mientras que "construir el producto correcto" se refiere a satisfacer las necesidades reales del usuario final.
Software Verificación
La verificación se centra en asegurar que el producto cumple con las especificaciones técnicas. No es posible verificar si las especificaciones se cumplen simplemente ejecutando el software; es necesario revisar los artefactos asociados (diseño, arquitectura, código) para concluir si se han respetado los requisitos.
Verificación de Artefactos o Especificaciones
Cada etapa del proceso de desarrollo de software puede ser verificada comparando su salida contra la especificación de entrada. Algunos ejemplos incluyen:
- Especificación de diseño frente a especificación de requisitos: ¿El diseño arquitectónico y el modelo lógico de la base de datos implementan correctamente los requisitos funcionales y no funcionales?
- Artefactos de construcción frente a especificación de diseño: ¿El código fuente, las interfaces de usuario y el modelo físico de la base de datos implementan correctamente el diseño?
Software Validación
La validación de software comprueba que el producto final satisface el uso previsto y cumple con las necesidades de todas las partes interesadas (stakeholders), incluyendo usuarios, administradores, inversores y gerentes.
Tipos de Validación
Existen dos enfoques principales para realizar la validación:
- Validación Interna: Se asume que los objetivos de los stakeholders fueron comprendidos correctamente y expresados con precisión en los artefactos de requisitos. Si el software cumple con la especificación de requisitos, se considera validado internamente.
- Validación Externa: Se realiza consultando directamente a los stakeholders para confirmar si el software satisface sus necesidades. Esto puede ocurrir de forma discreta o continua, dependiendo de la metodología de desarrollo. La validación externa final suele requerir una prueba de aceptación, que es una prueba dinámica.
Validación de Artefactos o Especificaciones
Los requisitos deben validarse antes de que el producto de software esté terminado. Ejemplos de esto incluyen:
- Validación de la Especificación de Requisitos de Usuario: Verificar si los requisitos representan la voluntad de los stakeholders mediante entrevistas (pruebas estáticas) o prototipos (pruebas dinámicas).
- Validación de Entrada de Usuario: Comprobar que los datos ingresados por el operador cumplen con las reglas y restricciones del dominio (tipo de dato, rango y formato).
Comparativa: Validación vs. Verificación
| Característica | Verificación | Validación |
|---|---|---|
| Pregunta Clave | ¿Estamos construyendo el producto correctamente? | ¿Estamos construyendo el producto correcto? |
| Foco | Especificaciones Técnicas | Necesidades del Usuario / Stakeholders |
| Método | Revisión de artefactos, análisis estático | |
| Resultado | Cumplimiento de especificaciones | Satisfacción del usuario final |