martes, 7 de agosto de 2012

Verificación y validación de software

Definicion
 
Es el proceso de control que asegura que el software cumple con su especificación y satisface las necesidades del usuario.
Muchas veces se confunde “verificación” con validación”. Boehm (1979) puso en claro con pocas palabras la diferencia:
 

Validación: ¿Estamos construyendo el producto correcto? 
Es el proceso de revisión al que se somete un programa informático para comprobar que cumple con sus especificaciones. Dicho proceso, que suele tener lugar al final de la etapa de desarrollo, se realiza principalmente con la intención de confirmar que el software esté en condiciones de desarrollar las tareas que el usuario que lo adquiere planea llevar a cabo. Las pruebas de validación también se llevan a cabo para determinar si la licencia de un software es legal o si se trata de una falsificación (una copia pirata).

Verificación: ¿Estamos construyendo correctamente el producto?
 
Es una parte importante del proceso de localización y un paso fundamental previo a la comercialización de cualquier producto de software. Esta fase se centra en dos aspectos distintos, la verificación funcional y la verificación lingüística, en que se tienen en cuenta los aspectos que no se pudieron abordar durante la fase de traducción, o incluso durante la fase de desarrollo del producto.

Tecnicas
Dentro del proceso de Verificación y validación se utilizan dos técnicas de comprobación y análisis de sistemas:

* 1. 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.


* 2. 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.


Con estas pruebas lo que se busca encontrar son fallos que dan la incapacidad a un sistema o alguno de sus componentes para realizar funciones requeridas dentro de los requisitos de rendimiento especificados. La lista de errores debe ser función del lenguaje de programación que se utilice.

Algunos de los fallos son:
*Fallos de datos:
  • ¿Las variables se inicializan antes que de que se utilicen los valores?.
  • ¿Todas las constantes tienen nombre?
  • ¿El límite superior de los arrays es igual al tamaño de los mismos?
  • Las cadenas de caracteres tienen delimitadores explícitos.
  • ¿Existe posibilidad que el buffer se desborde?
*Fallos de control:
  • Para cada instrucción condicional ¿Es correcta la condición?
  • ¿Todos los ciclo terminan?
  • ¿Los bloques están delimitados correctamente?
  • En las instrucciones case ¿Se han tomado en cuenta todos los casos?
  • Si se requiere un break ¿Se ha incluido?
  • ¿Existe código no alcanzable?
*Fallos de entrada/salida:
  • ¿Se utilizan todas las variables de entrada?
  • Antes de que salgan ¿Se le han asignado valores a las variables de salida?
  • ¿Provocan corrupción de los datos las entradas no esperadas?
Pero 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.
Estos fallos deben ser localizados y reparados por lo tanto se realiza algo llamado depuración. Las herramientas de depuración son habitualmente parte de las herramientas de apoyo al lenguaje y que sirven de base al compilador. Proporcionan un entorno especial de ejecución que permiten acceder a las tablas de símbolos del compilador, a través de ella a los valores de las variables del programa.

Nivel de importancia:
Realizar estó, ayuda mucho para todo tipo de producto que se realice ya que asi se evitaria un mayor gasto para la empresa en reparaciones y devuluciones por fallos.
 
Problema:
El Mars Climate Observer se estrella por el sistema métrico (1998). Se perdió una nave de 125 millones de dólares que iba a estudiar el clima de Marte, cuando hubo un fallo en el cálculo de aterrizaje y terminó por quemarse en la  atmósfera. El problema fue que una compañía subcontratada por la NASA utilizó el sistema anglosajón en lugar del sistema métrico decimal, normalmente utilizado por la agencia.



Bibliografia:
http://www.slideshare.net/FARIDROJAS/validacion-y-verificacion-presentation-632946
http://www.monografias.com/trabajos83/modelos-y-estandares-validacion-software/modelos-y-estandares-validacion-software.shtml
http://www.oscargallardo.com/wp-content/uploads/2011/04/CIISA_IS2_V_V2.ppt

1 comentario:

  1. Del ejemplo no queda claro si era de software o de por ejemplo tamaños de componentes.

    ResponderEliminar