11 agosto 2012

Importancia de la verificación y validación de software

La verificación y validación de software son dos procesos relacionados y enfocados en el análisis y comprobación del correcto desarrollo de software de acuerdo a los requerimientos y especificaciones del cliente.

Específicamente, la verificación de software se enfoca en la manera en como se codifica o construye el software, mientras que la validación revisa que el software realice lo especificado por el cliente y de una manera correcta.

Desde un principio las computadoras se han utilizado para aplicaciones militares y con el tiempo se han llevado a campos como la medicina, generación de energía y gobierno, donde se requieren alto grado de confiabilidad y la revisión de código y las pruebas son una parte fundamental en el desarrollo por lo que adopción de la verificación y validación del software utilizado en estas áreas comenzó desde muy temprano en la historia de la computación.



Para resaltar la importancia de que estos procesos estén presentes en el desarrollo de software solo hay que recordar el reciente caso de los sistemas SCADA que permitieron la instalación y ejecución del virus Stuxnet, que presuntuosamente tenia como objetivo las plantas de enriquecimiento de uranio.

A continuación un extracto de un articulo de la revista Wired (History's Worst Software Bugs):

15 de Junio de 1990 - Corte en la red de AT&T:
Un bug que apareció con un nuevo software que controlaba los switches de AT&T de larga distancia causaba que las computadoras fallaran cuando recibían un mensaje especifico de alguna de las maquinas vecinas. El mensaje que provocaba la falla en el sistema era el que se desplegaba después de que el sistema se recuperaba de un fallo.
Un día un switch de Nueva York tuvo una falla y reinició causando que los switches vecinos fallaran también y después los vecinos de los vecinos y así sucesivamente. Pronto 114 switches fallaban y reiniciaban cada seis segundos dejando alrededor de 60mil personas sin el servicio de larga distancia por 9 horas, la solucion que se empleó fue el regresar a la version de software anterior.

1993 - Division de punto flotante en procesadores Intel Pentium:

Un error en los muy promocionados Intel Pentium provocaba que al momento de realizar divisiones de punto decimal arrojara resultados erróneos para cierto rango de valores. Por ejemplo dividiendo 4195835.0/3145727.0 daba como resultado 1.33374 en lugar de 1.33382. A pesar de que el bug solo afectaba a unos cuantos usuarios, el problema se convirtió en una pesadilla de relaciones publicas para Intel. En un principio la compañía solo ofrecía reemplazos a los compradores que comprobaran que requerían alta precisión, esto debido a que había entre 3 y 5 millones de chips defectuosos en circulación. Con el tiempo Intel accedió a remplazar el producto a cualquier persona que presentara una queja. Este error le costó a Intel $475 millones de dolares

1995/1996 - El ping de la muerte:


Una falta de chequeo y manejo de errores en códigos de rensamblado de fragmentación IP hacia posible que ocurriera un fallo a una variedad de sistemas operativos al mandar un paquete “ping” mal formado desde cualquier lugar de la Internet. Los sistemas afectados obviamente corrían Windows que al ser provocado el fallo mostraba la famosa pantalla azul de la muerte. Además este tipo de ataques afectaba a algunos sistemas Macintosh y Unix

4 de Junio de 1996 - Vuelo 501 del cohete Ariane 5:
El código que previamente se usaba en el cohete Ariane 4 fue reutilizado en el Ariane 5 pero en el nuevo cohete los motores eran mas rápidos lo que provocaba un error en una rutina aritmética en la computadora de vuelo del cohete. El error se encontraba en el código que convertía un numero de punto flotante de  64bits a un entero con signo de 16bits. Los motores siendo mas rápidos provocaban que los números de 64bits fueran mas grandes en el Ariane 5 que en el Ariane 4.




Noviembre del 2000 - Instituto Oncológico Nacional, Ciudad de Panamá:
En una serie de accidentes, el software de planeacion de terapias creado por Multidata Systems International calculaba erróneamente la dosis apropiada de radiacion para pacientes bajo terapias de radiación.
El software permitia a un radioterapista el dibujar en una pantalla de computadora el posicionamiento de unos escudos metálicos llamados "bloques" diseñados para proteger los tejidos sanos de la radiación. El software solo permitia el usar cuatro bloques pero los doctores querían usar cinco. Los doctores descubrieron que podían engañar al software dibujando los cinco bloques como uno solo de gran tamaño con un agujero en medio, pero lo que los doctores no sabían era que el software daba diferentes respuestas en esta configuración dependiendo en como estaba dibujado el agujero: si se dibujaba en una dirección se calculaba correctamente la dosis, pero si se dibujaba en otra dirección se recomendaba una exposición el doble de lo necesaria.
Por lo menos 8 pacientes murieron, mientras que otros 20 recibieron las suficientes sobredosis como para sufrir problemas de salud muy serios.
Los físicos encargados de checar los cálculos de la computadora a mano están culpados de asesinato.

Recientemente en otro articulo publicado por el blog ALT1040 se habla sobre como una empresa de inversiones (Knight Capital) perdió mas de 440 millones de dolares por un fallo en el software que manejaba las transacciones en la bolsa, bastaron solo 45 minutos para que la compañia estubiera a un paso de la bancarrota llevando sus acciones de $4 a $1.
Al igual que en los otros casos, era la primera vez que el software entraba en operación en un ambiente real, por lo que resalta la importancia de una correcta fase de pruebas, verificación y validación.

Ligas de interes:
Software Verificationand Validation:An Overview
Software Verification & Validation Model - An Introduction
Software Verification vs. Validation

SCADA Security and the Broken Business Model for Software Testing
History's Worst Software Bugs
Of Aviation Crashes and Software Bugs
Knight Capital: el bug de los 440 millones de dólares

2 comments:

Elisa dijo...

Muy bien.

Hazael Fernando dijo...

Excelente,,, me quedo con la boca abierta....

Ya me paso algo así... pufffff
Bendito punto flotante