martes, 14 de agosto de 2012

Introducción de Verificación y Validación del Software

Verificación y validación del software, es el proceso de control que asegura que un determinado software cumple con su especificación y satisface las necesidades del usuario.

Verificación: Se ocupa de controlar si el producto satisface los requerimientos del usuario.
  • Construir el sistema correctamente
  • Descubrir  y corregir errores en el sistema
  • Criterios a verificar
  • Vereficar que la información sea coherente
  • Identifica desviaciones con éstandares y requerimientos
  • Recolecta datos para mejorar el proceso
  • Verifica que el producto cumpla: 
    • Cumplan con los requerimientos
    • Cumplan con los  atributos de calidad
    • Se ajuste a las regulaciones, estándares y procedimientos definidos.

Validación: Controla que el producto cumpla su especificación inicial, la diferencia de este a verificación  es el que éste evalúa al sistema en el trancurso o al final del proceso del desarrollo.
  • Construir el sistema correcto
  • Evaluar la conformidad con la especificación de requisitos
  • Casos de test
  • Pruebas unitarias

Técnicas de control: Se dividen en dos: dinámicas y estáticas.
  • Dinámicas: Éstas también son conocidas como  testing  o prueba, así que son únicamente aplicables cuando se tiene una version ejecutable u operativa.
  • Estáticas: Son las primeras pruebas que se aplican al software, tiene como objetivo mejorar la calidad del software ayudando a arreglar defectos en etapas  tempranas, sin codificar.
    • Se basan en revisiones del código o documentación.
    • La finalidad de éste es detectar la mayor cantidad de defectos posibles 
Tipos de Pruebas:
  • Pruebas de aceptación, son desarrolladas por el cliente
  • Pruebas alfa, son realizadas por el usuario con el desarrollador como observador de un entorno controlado
  • Pruebas beta, son realizadas por el usuario en su entorno de trabajo, generalmente son utilizadas como producto final. 
Niveles de Pruebas:
  •  Pruebas unitarias
  • Pruebas de integración
  • Pruebas de sistema
Pruebas funcionales: es una prueba basada en la ejecución, revisión y retroalimentación de las funcionalidades previamente diseñadas para el software.

Desarrollo guiado por pruebas: El objetivo de éste es lograr un código limpio que funcione, la idea  de éste es que los requisitos sea traducidos a pruebas.
 Ciclo:
  • Elegir un requisito
  • Escribir un prueba
  • Verificar que la prueba falla
  • Escribir la implementación
  • Ejecutar las pruebas automatizadas
  • Eliminación de duplicación
  • Actualización de la lista de requisitos

Fases del desarrollo del software: Expresa como a progresado el desarrollo del software y cuanto puede requerir, cada versión importante en la que se le agregan nuevas características o se corrigen errores.
  • Alpha: Es la primera versión del programa, también es enviada a los testers para verificarla, este generalmente es un producto inestable
  • Beta: Representa generalmente la primera versión del sistema, también en ésta fase también el producto es un poco inestable.
  • Version candidata a definitiva(RC): Comprende un producto final, listo para publicarse como version definitiva  al menos que aparezcan errores que lo impidan. También en ésta fase se le puede asociar como el producto final, pero que aún esta en pruebas.
  • Versión de disponibilidad general(RTM): Es un producto en versión final, normalmente es casi idéntica a la version candidata, a diferencia que en ésta hay cambios de último minuto, ésta versión también es tomada como libre de errores y estable..
 
Análisis estático:
Su función es analizar sintácticamente el texto del progrma y tratar de descubrir posibles condiciones erróneas

Defectos: Es un procedimiento de un determinado producto en el cuál son incorrectos

Fallos: Es la imposibilidad de realizar determinada acción de parte del producto

Importancia:
La importancia del hacer uso de verificación y validación es el ahorro de costs y tiempo, que son vitáles en el desarrollo de un determinado producto.
Mensionando algunos ejemplos de casos donde se puede aplicar o donde se han aplicado son los siguientes:
    • Una determinada empresa, firmo un importante convenio en la cual se le pidio elaborar 850,000 piezas de un mecánismo para un nuevo modelo de un carro. Ya obteniendo el producto final con las 850,000 piezas la empresa se da cuenta que la pieza no coincidían con la especificación dada.
      • Problema: La posible falla de ésto pudo ser que al personal que se le pidio elaborar el producto en el software que lo desarrolla, tomaron diferentes las coordenadas o las medidas no fueron las indicadas.
    • Otro de los problemas comunes podemos encontrarlo en los bugs de los videojuegos, alguno de los casos famosos es el videojuego para gameboy, pokemon donde en un nivel más avanzado aparecía un personaje llamado missingNo, el cuál éste era producto de un error de programación donde al momento de buscar un determinado personaje no era encontrado en el arreglo, devolviendo ésto como un missing number.
    • Prototipos nazis, una de los acontecimientos mas mencionados podría ser la fascinación de los nazis por hacer pruebas con los prototipos finales físicos, algunos ejemplos a mencionar podrían ser los prototipos de aeronaves, como supuestos platillos voladores, en las cuales verificaban la aerodinámica del producto entonces hacían pruebas fisicas con la aeronave, pero al final había un fallo por la estabilidad de éste por diferentes condiciones climáticas, volteando la aeronave o haciendo que se golpeara bruscamente que en ocasiones producía la perdida total o perdida del piloto.

Tips o Datos de interés:
Generalmente los desarolladores usan nombre claves para los nombres de las versiones de un producto, con el fin de no confundir el producto o que se tenga un poco más de incógnito del producto para otros usuarios.

Link:
http://www.slideshare.net/FARIDROJAS/validacion-y-verificacion-presentation-632946
http://clases3gingsof.wetpaint.com/page/Verificaci%C3%B3n+y+Validaci%C3%B3n
http://es.wikipedia.org/wiki/Pruebas_de_validaci%C3%B3n
http://www.sqs.es/es/services/validation.php

1 comentario: