6 de agosto de 2012

¿Qué es la Verificación y Validación de Software?

Verificación y Validación de Software
Entrada 1

Es un 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.


Los objetivos de las actividades de verificación y validación son valorar y mejorar la calidad de los productos del trabajo generados durante el desarrollo y modificación del software.

Los atributos de la calidad deben ser la corrección, la perfección, la consistencia, la confiabilidad, la utilidad, la eficacia, el apego a los estándares y la eficacia de los costos totales.

Hay dos tipos de verificación: formal y del ciclo de vida. Esta última consiste en el proceso de determinar el grado de los productos de trabajo de una fase dada del ciclo de desarrollo cumplen con las especificaciones establecidas durante las fases previas. La verificación formal es una rigurosa demostración matemática de la concordancia del código fuente con sus especificaciones.

La validación es la evaluación del software al final del proceso de desarrollo del software para determinar su conformidad con los requisitos IEEE.

La verificación y validación implican la valoración de los productos de trabajo para determinar el apego a las especificaciones, incluyen las especificaciones de requisitos, la documentación del diseño, diversos principios generales de estilo, estándares del lenguaje de instrumentación, estándares del proyecto, estándares organizacionales y expectativas del usuario, al igual que las meta especificaciones para los formatos y notaciones utilizadas en la especificación de productos diversos.

¿Qué es verificación?


La verificación se enfoca más al proceso de evaluación del sistema o componentes ya que permite determinar si los productos de una determinada fase del desarrollo satisfacen las condiciones impuestas en el inicio de la etapa.

¿Qué se debe tener en la verificación?
  • Consistencia: vigilar que la información sea coherente.
  • Precisión: corrección de la sintaxis.
  • Completitud: lagunas en capacidad deductiva.

Lo que se hace en la verificación:
  • Identifica desviaciones con estándares y requerimientos.
  • Recolecta datos para mejorar el proceso.
  • Verifica que el producto:
    - Cumpla con los requerimientos.
    - Cumpla con los atributos de calidad.
    - Se ajuste a las regulaciones, estándares y procedimientos definidos.

¿Qué es validación?


La validación también es una evaluación del sistema o de componentes, solo que es en el transcurso o al final del proceso del desarrollo, donde se determina si cumple con lo especificado.

Aspectos en la validación:
  • Construir el sistema correcto.
  • Evaluar la conformidad con la especificación de requisitos.

Métodos formales de verificación

Entre los métodos de verificación más utilizados, se encuentran:
  • Aserciones E/S: El programa, en lógica de Hoare, se especifica mediante aserciones que relacionan las entradas y salidas del programa. Se garantiza que si la entrada actual satisface las restricciones de entrada (precondiciones) la salida satisface las restricciones de salida (poscondiciones).
  • Precondición más débil: Consiste en dada una poscondición POST, encontrar, operando hacia atrás, un programa S tal que la precondición se satisfaga en un amplio conjunto de situaciones.
  • Inducción estructural: La inducción estructural es una técnica de verificación formal que se basa en el principio de inducción matemática.

Ejemplos de grandes pérdidas por errores de software


El desorbitado Mars Climate en 1998


Después de un viaje de 286 días desde la tierra, la nave "Mars Climate Orbiter" encendió sus motores para ponerse en órbita alrededor de Marte. Al llegar a Marte, la sonda debía modificar su trayectoria y reducir su velocidad, de forma que se mantuviera orbitando alrededor del planeta. Los motores arrancaron, pero el ingenio entró demasiado en la atmósfera del planeta, provocando que se estrellara en su superficie.

La causa fue que el software que controlaba los propulsores del Mars Orbiter usaban unidades imperiales (libras de fuerza) en lugar de unidades métricas (Newtons), como especificaba la NASA.

Pérdida: 125 millones de dólares.

Apagón de 2003 en Norteamérica

Privó de electricidad a un estimado de 50 millones de personas. El apagón se debió a un error en el software de monitoreo basado en Unix de General Electric, que impidió que los operadores se dieran cuenta de un corte local de energía. El efecto dominó de la falla afectó a ocho estados de Estados Unidos y a Ontario, en Canadá.

Problema del año 2000

El problema del año 2000, también conocido como efecto 2000 o por el numerónimo Y2K, es un bug o error de software causado por la costumbre que habían adoptado los programadores de omitir la centuria en el año para el almacenamiento de fechas, asumiendo que el software sólo funcionaría durante los años cuyos nombres comenzaran con 19. Lo anterior tendría como consecuencia que después del 31 de diciembre de 1999, sería el 1 de enero de 1900 en vez de 1 de enero de 2000.

Por ejemplo los programas que cuentan el número de años a través de la sustracción de las fechas, obtendrían una cantidad de años negativa. Si una persona nació en 1977, la edad de esta persona en 2000 sería: 00-77 = -77 años.

Y relacionado con este último ejemplo les dejo la primer parte del capítulo de Dilbert donde se enfrentan al problema del año 2000.


Fuentes consultadas:
Introducción a la verificación y validación
Métodos formales
Los errores informáticos más costosos
Problema del año 2000

1 comentario:

Nota: solo los miembros de este blog pueden publicar comentarios.