domingo, 3 de septiembre de 2017

Validación y Verificación de Software

La validacion y verificacion de software son actividades de aseguranza de calidad que estan dirigidas a asegurar que el sistema es desarrollado de acuerdo al proceso de desarrollo y que satisface las necesidades del clientes.  En otras palabras, la verificacion trata en saber: "Estamos desarrollando el producto de forma correcta".

La validacion trata sobre: "Estamos construyendo el producto correcto". La validacion se divide en validacion estatica y dinamica. La validacion estatica verifica la exactitud del producto del software sin ejecutar el sistema o prototipo mientras que la verificacion dinamica ejecuta el sistema de software o un prototipo: las pruebas de software son una forma de validacion de software.

En detalle, la verificacion se interesa en el proceso para producir el producto. Esto es, estamos desarrollando el producto de forma correcta? Esto incluye 2 aspectos: el proceso correcto y sigue correctamente el proceso correcto. Como condicion minima, el "proceso correcto" debe requerir que un artefacto de nivel bajo satisfaga los requerimientos establecidos en el artefacto de nivel alto. A diferencia de la verificacion la cual se preocupa por la "exactitud" del proceso, validacion se preocupa en la exactitud del producto. Esto es,  "Estamos construyendo el producto correcto". Necesitamos ambas validacion y verificacion porque ninguna de ellas sola es suficiente. Por ejemplo una implementacion puede satisfacer la especificacion pero la especificacion en si misma puede estar incorrecta. Mas aun, la implementacion puede satisfacer la especificacion y que la especificacion este correcta pero el codigo sea dificil de entender, probar y mantener. La revision del cliente(customer review) y/o revision de expertos (expert review) de los requerimientos especificaciones detectarian el actual mientras que el code review y el code inspection detectan lo ultimo. Por lo tanto "un correcto" (el cual significa el preferido) proceso de desarrollo de software debe incluir estas actividades de verificacion y validacion.

Porque es importante la validacion y verificacion de software?
Porque los sitemas estan en todos lados y procesan informacion muy importante, muy personal y a vees muy peligrosa si esta en manos equivocadas. Por lo tanto, que un sistema falle ahora significa un coste muy alto pues puede afectar en vidas humanas, daños en propiedades, e incluso en perdidas humanas.

Definiciones utilizadas
BUG: Un defecto en el codigo del programa.
Desk Checking: Examinar un artefacto de software, tipicamente un codigo fuente, ya sea por el desarrollador para detectar bugs, anomalias y otros problemas potenciales.
Error: Una condicion no anticipada que pone al sistema en un estado incorrecto.
Failure: Es un resultado producido por el software bajo prueba que no satisface la salida esperada.

Verificación y Validación para la Fase de Diseño

  1. Revisiones  
    1. Peer Reviews
    2. Cliente
    3. Experts
  2. Inspecciones
  3. Walkthrough
  4. Prototipado
  5. Verificación formal
    • Uso correcto del lenguaje de diseño
    • Adecuación (Cumplimiento de principios de diseño
    •  No redundancia
    • Consistencia
    • Si esta completo internamente

Verificación y Validación para la Fase deImplementación

Su proposito es
  • Estandares
  • Requisitos
  • Desempeño
  • Desk Checking
  • Code Review
  • Inspección
  • Walkthrough
  • Testing 
    • Funcionalidad inadecuada
    • Diseño mal implementado
    • No seguir estandares
    • Pobre calidad de codigo

No hay comentarios:

Publicar un comentario