martes, 14 de agosto de 2012

Introducción a la validación y verificación de software

Como una pequeña introducción para la materia, estuve investigando sobre la validación y verificación de software para así comprender para que sirven estos métodos formales y en el futuro comprenderlos para implementarlos en sistemas que lo requieran.

Para empezar, podemos decir que la validación de software es el saber si nuestro sistema hace lo que nosotros buscamos que haga, esto quiere decir que si construimos el sistema de manera correcta, no es simplemente ver el código, si no que existen métodos formales que tiene cierta dificultad para determinar si se hace lo correcto, según lo que el usuario o el cliente en realidad necesita o requiere, podemos decir que contesta a la pregunta ¿Estamos haciendo el sistema correcto? [1].


Por otra parte, podemos decir que la verificación de software es saber si el sistema que estamos desarrollando hace de manera funcional y no funcional lo que nosotros especificamos en algún análisis previo a implementarlo y compararlo utilizando métodos formales, podemos decir que contesta a la pregunta ¿Estamos haciendo el sistema correctamente? [1].



Por lo tanto, podemos decir que cuando nosotros tenemos un sistema, por ejemplo, que involucre conceptos de sistemas distribuidos, paralelos, necesitemos entradas o salidas de sensores, no existe una manera sencilla de saber que todas las combinaciones posibles funcionen correctamente dependiendo de los eventos ocurridos, la unica manera de poder realizar esto es con métodos formales, expresando toda la especificación del sistema en un lenguaje matemático lógico, examinando que no existan cuestiones en el sistema que no deberían de pasar, esto quiere decir que no vamos a correr el sistema en sí, si no que se va  estudiar con estos métodos para saber si la especificación es correcta.


Es importante recalcar que nunca vamos a tener un sistema el cual no tenga errores o defectos, pero este tipo de métodos nos sirven para reducir el porcentaje de defectos y tener un producto mejor al momento de usarlo.

En conjunto, podemos utilizar la validación y la verifiación del software como un proceso para analizar si el sistema en desarrollo o final, cumple con los requisitos del cliente y se encuentra conforme con la especificación del mismo.


Buscando en la web, encontré algunas empresas en México que se dedican o manejan como alguno de sus servicios la verificación y validación de software, entre ellas se encuentran: IRQADNV, Epicor, entre otras.

La razón por la que esta materia es importante es que estudios como por ejemplo de la empresa Compuware, en donde revela que después de un análisis, las empresas que tienen un fallo por medio de software alcanzan hasta los 7.5 millones de euros en una hora [2], este sector, incluyendo por ejemplo a los trabajadores sin actividad de hasta 140 horas anuales o suspension de total de ventas.

Por listar algunos errores de software [3] que se pudieron haber evitado con una buena implementación de validación y verificación son:

  • Un error en el código de control del producto Therac-25 fue la responsable de al menos 5 muertes en la decada de los 80, produciendo cantidades exageradas de rayos X [4].
  • El Ariane 5 fue destruido 40 segundos después del despegue debido a un error de software a borde, causando perdidas de millones de dólares [5].
  • El error de software de MIM-104 Patriot hacia que su reloj del sistema estuviera a la deriva en un tercio de segundo, llevando al fracaso el interceptar un misil [6].

Bibliografía

[1]  Software Engineering: A Practitioner’s Approach, 7/e  (McGraw-Hill 2009).
[2]  Los fallos informáticos suponen pérdidas, Computing.es (2012) Liga.
[3]  List of software bugs, Wikipedia Liga.
[4]  An investigation of the Therac-25 Accidents, Nancy Leveson, University of Washington (1993) Liga
[5]  ARIANE 5 Report, Inquiry Board (1996) Liga.
[6]  Patriot Missile Software Failure, Aly Farahat, Slides (2009) Liga.

1 comentario: