martes, 7 de agosto de 2012

Reporte 1 - Verificación y Validación de Software


Verificación y Validación de Software

Conjunto de procesos de comprobación y análisis que aseguran que el software que se desarrolla está acorde a su especificación y cumple las necesidades de los clientes. 
Existen actividades de Verificación y Validación en cada etapa del proceso de desarrollo del software.
Verificación:

La Verificación de Software se hace la pregunta: ¿Estamos construyendo el producto correctamente?
En ella se comprueba que el software cumple los requisitos funcionales y no funcionales de su especificación.

La verificación de software es una disciplina más estrecha y compleja de la ingeniería de software cuyo objetivo es asegurar que el software pueda satisfacer completamente todos los requerimientos esperados.

Hay dos acercamientos fundamentales en la verificación de software:

  • Verificación dinámica, también conocida como Prueba de Experimentación, útil para encontrar bugs.
  • Verificación estática, tambíen conocida como análisis. Ésta es útil para provar si un programa es correcto aunque puede resultar en falsos positivos.
Validación:

La Validación de Software se hace la pregunta: ¿Estamos construyendo el producto correcto?

Comprueba que el software cumple las expectativas que el cliente espera. Nunca se va a poder demostrar que el software está completamente libre de defectos.
Existen actividades de Verificación y Validación en cada etapa del proceso de desarrollo del software.

Diferencia entre ambas

La verificación y la validación no son la misma cosa:
  • Verificación: ¿Estamos construyendo el producto correctamente?
El papel de la verificación comprende comprobar que el software está de acuerdo con su especificación. Se comprueba que el sistema cumple los requerimientos funcionales y no funcionales que se le han especificado.
  • Validación: ¿Estamos construyendo el producto concreto?
La validación es un proceso mas general. Se debe asegurar que el software cumple las expectativas del cliente. Va mas allá de comprobar si el sistema está acorde con su especificación, para probar que el software hace lo que el usuario espera a diferencia de lo que se ha especificado.

Es importante llevar a cabo la validación de los requerimientos del sistema de forma inicial. 

Es fácil cometer errores y omisiones durante la fase de análisis de requerimientos del sistema y, en tales casos, el software final no cumplirá la expectativas de los clientes. Sin embargo, en la realidad, la validación de los requerimientos no puede descubrir todos los problemas que presenta la aplicación. Algunos defectos en los requerimientos solo pueden descubrirse cuando la implementación del sistema es completa.  


Técnicas de comprobación y análisis
  • Las inspecciones del software analizan y comprueban las representaciones del sistema como el documento de requerimientos, los diagramas de diseño y y el código fuente del programa. Se aplica a todas las etapas del proceso de desarrollo. Las inspecciones se complementan  con algún tipo de análisis automático del texto fuente o de los documentos asociados. Las inspecciones del software y los análisis automatizados son técnicas de verificación y validación estáticas puesto que no requieren que el sistema se ejecute.
  • Las pruebas del software consiste en contrastar las respuestas de una implementación del software a series de datos de prueba y examinar las respuestas del software y su comportamiento operacional, para comprobar que se desempeñe conforme a lo requerido. Llevar a cabo las pruebas es una técnica dinámica de la verificación y validación ya que requiere disponer de un prototipo ejecutable del sistema.
Debug


Al proceso de eliminación de los errores que se descubren durante las fases de prueba se denomina 
depuración. Entonoces, sí la verificación y validación establece la existencia de defectos en el programa,la depuración es el proceso que localiza el origen y corrige estos defectos.

Los mejores depuradores buscan patrones en los resultados de las pruebas donde el defecto se detecta, y para localizar el defecto utilizan el conocimiento que tienen sobre el tipo de defecto, el patrón de salida, así como del lenguaje y proceso de programación. El conocimiento del proceso es importante. Los depuradores conocen los errores de los programadores comunes (como olvidad incrementar un contador, errores de direccionamiento de punteros) y los comparan contra los patrones observados.

Localizar los fallos es un proceso complejo porque los fallos no necesariamente se localizan cerca del punto en que se detectan. Para localizar un fallo de un programa el programador responsable de la depuración tiene que diseñar programas de prueba  adicionales que repitan el fallo original y que ayudan a descubrir el origen del fallo.

Las herramientas de depuración son habitualmente parte de las herramientas de apoyo al lenguaje y que sirven de base al compilador. 

¿Por qué existe la Verificación y Validación de Software?

Para un sistema de gran importancia, como uno de votación electrónica, es conveniente que una autoridad independiente lleve a cabo las pruebas de verificación. Para sistemas de menor importancia, la verificación puede realizarse internamente.

Las pruebas de verificación de los programas pueden comprender lo siguiente:
  • Probar los programas para asegurar que reúnen los estándares exigidos y ejecutan las tareas esperadas, incluyendo auditorías de código (ver infra). 
  • Asegurar que la documentación del sistema es la adecuada y esté completa. 
  • Verificar que el sistema es capaz de funcionar bajo las condiciones normales esperadas y potenciales condiciones adversas. 
  • Garantizar que se cuenta con medidas de seguridad y que estas se ajustan a los estándares establecidos. 
  • Asegurar que se cuenta con las debidas medidas de control de calidad. 
Referencia:

1 comentario: