martes, 7 de agosto de 2012

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

¿Qué es una falla del Software?

Es cuando el software no hace lo que debería.

Razones por las que falla el Software
  • Las especificaciones del sistema no expresan correctamente lo que el cliente requiere
  • No fue posible implementar el requerimiento
  • El diseño no es amigable
  • El código tiene errores

¿Qué es la verificación y validación de software?


Verificación: Trata de comprobar que el sistema cumpla con los requerimientos especificados ya sean funcionales o no.
Verificando nuestros software nos podemos dar cuenta si se esta construyendo el producto correctamente.
Responde a la pregunta: "¿El software esta hecho de acuerdo con su especificación?"



Validación: Se encarga de comprobar que el software haga lo que el usuario necesita y espera.
Validando el software podemos saber si estamos construyendo el producto correcto.

Responde a la pregunta: "¿El software cumple las expectativas del cliente?"


Objetivos de la validación y verificación de software
  • Descubrir defectos en el sistema para corregirlo
    • Una manera de provocar defectos en provocando nosotros mismos las fallas.
    • Revisar el producto detalladamente.
  • Evaluar la calidad del producto o componente
    • Probar el software puede dar una idea de la calidad del mismo.

Identificar y corregir los defectos en el sistema
  • Identificar defectos
    • Es el proceso que identifica que defecto del sistema ocasionó la falla.
  • Corregir defectos
    • Es remover el código incorrecto y escribir el nuevo sin defectos.
Fallas comunes en el software

  • De datos: Un ejemplo de fallo de datos es cuando se inicializan las variables antes de que se utilicen los valores.
  • De de control: Cuando un ciclo nunca termina por error o si es correcta la condición que se emplea.
  • De entrada/salida: Por ejemplo que se usen todas las variables de entrada, o que exista el valor de salida.
  • De la interfaz: Si por ejemplo se utilizan los resultados de las funciones, si hay instrucciones no invocadas, etc.
  • De gestión de almacenamiento: Si se asigna correctamente espacio, o si se libera memoria, entre otras cosas.
  • De gestión de las excepciones: Tomar en cuenta las condiciones posibles de que ocurra un error.

Ejemplos de desastres Informáticos famosos

Problema del año 2000

Tambien llamado Y2K es un error de software causado porque los programadores omitieron la centuria en el año para almacenar las fechas (generalmente por economizar memoria), así asumieron que el software solo sería usado para años que comenzaran con 19xx, es así como el día después del 31 de diciembre de 1999 se convertiría en 1 de enero de 1900 en vez de ser el 1 de enero de 2000.
Problemas que causaron:

  • Los programas que determinan la edad a través de la resta de las fechas, tendrían una cantidad de años negativa. Por ejemplo si alguien nació en 1991, la edad de esta persona en el 2000 sería 00 - 91 = -91 años.
  • Los programas que mostraban el año 19XX, solo agarraban los últimos dos  dígitos y para mostrar los dos primeros digitos solo se agregaba 19, entonces al intentar mostrar el año después de 1999, el programa muestra 19 y luego el número que le sigue al 99, o sea 100, mostrando así 19100.


La corrección del problema costó miles de millones de dólares en el mundo entero.
Existen otros problemas parecidos relacionados con las fechas:
  • En UNIX, la fecha es representada por un número entero de 32 bits con signo, que cuenta de -2^(31) a 2^(31) - 1. Este número cuenta los segundos desde 1970, esto significaría que el año 2038 sería el último que el sistema pudiera representar.
  • En los antiguos sistemas de Windows, el problema era la omisión de los dígitos, entonces al cumplirse el primer segundo del año 2000, sería el 01/04/1980.
1 de enero de 2000
  • En Ishikawa, Japón, un equipo de supervisión de radiación falló en la media noche, afortunadamente esto no causo ningún riesgo para los habitantes.
  • En Onagawa, Japón, una alarma sonó en una planta de energía atómica dos minutos después de la medianoche.
  • En Australia, las máquinas validadoras de billetes de autobús de dos estados no funcionaron.
  • En Estados Unidos, el observatorio naval, en donde funciona el reloj principal que marca el tiempo oficial del país, tuvo interferencia de Y2K en su sitio web, y marcó que la fecha era 1 de enero de 1910.
  • En Pennsylvania, Estados Unidos, el sistema de una escuela marco a los estudiantes una deuda excesiva por tener libros prestados durante 100 años.
Máquina de radiación

Un error en el código de una máquina de radiación Therac-25 provocó la muerte de al menos 5 pacientes en sus terapias, por administrar cantidades excesivas de rayos-X. Esto sucedió en la década de 1980.

Apagón en Estados Unidos

En el 2003 ocurrió un apagón en Norteamérica, que dejó sin electricidad a almenos 50 millones de personas. Esto por un error de software de monitoreo basado en Unix de General Electric, que impidió que los operadores se dieran cuenta del corte de energía local.
El falló afecto a a ocho estados de Estados Unidos y a Ontario en Canadá. El costo de este error es de aproximadamente 6000 millones de dólares.

Knight Capital Group

El fallo informático que acabó con 440 millones de dólares de los fondos de Knight Capital Group. En menos de una hora, los ordenadores de Knight Capital ejecutaron muchas órdenes automáticas que supuestamente deberían hacerse en un período de días. Millones de acciones cambiaron de dueños. La pérdida resultante casi cuadruplicó las ganancias de la compañía en 2011 y la llevó al borde de la quiebra. Knight sólo sobrevivió después de que un grupo de inversionistas le ayudaran con 400 mdd. Deshacer las transacciones erróneas le costó casi 500 mdd.



Mars Climate Orbiter

En 1999, la sonda espacial Mars Climate Orbiter de la NASA se salió del objetivo cuando trató de orbitar alrededor del planeta rojo, se quemó en la atmósfera. Esto fue ocasionado por un el equipo que trabajó en la nave espacial en donde un grupo uso el sistema métrico y el otro equipo uso el sistema anglosajón de unidades imperiales.



Eve Online's

Un parche llamado Trinity borró el archivo boot.ini de los ordenadores de miles de usuarios, lo que provocó que el programa no pudiera arrancar. Esto se debió a la utilización de un archivo al que tambien le llamaron boot.ini.

Corrupted Blood

Es un error de software que ocurrió en World of Warcraft que provocó una epidemia en el mundo virtual que se suponía sería solo restringido a un nivel de juego sin embargo provocó enfermar a todos los jugadores en el mundo virtual como una epidemia en el mundo real, lo que convirtió esto en el centro de estudio de Investigaciones Académicas sobre la propagación de enfermedades infecciosas.




Glitch

Esta palabra se refiere comúnmente a los errores en informática o videojuegos que no afectan negativamente el rendimiento, juego o estabilidad del programa, no se consideran bugs si no mas bien una característica que no fue prevista.

En algunos videojuegos se pueden observar los glitches visuales debido a gráficos mal codificados o dañados  que cuando son leídos forman figuras o imágenes erróneas. Un caso muy conocido es el llamado "Glitch City" que aparece en un videojuego de Pokémon, y otro error conocido en el mismo juego es el llamado "MissingNo" este si puede alterar el juego llevándolo a la multiplicación de objetos.
Otro caso bien conocido es el de Gears of War 2 que contó con varios errores como poder usar armas y sostener el escudo, poder saltar a varios lugares inaccesibles también con el escudo, poder disparar balas infinitas.









Referencias

Errores informáticos más costosos

Presentación en PDF de Verificación y Validación de Software

Lista de errores de Software

Knight

1 comentario: