Articulo de referencia

Verificación de software

La verificación de software es una disciplina de ingeniería de software , lenguajes de programación y teoría de la computación cuyo objetivo es asegurar que el software satisfag...

La verificación de software es una disciplina de ingeniería de software , lenguajes de programación y teoría de la computación cuyo objetivo es asegurar que el software satisfaga los requisitos esperados.

Amplio alcance y clasificación

Una definición amplia de verificación la relaciona con las pruebas de software . En ese caso, existen dos enfoques fundamentales para la verificación:

  • Verificación dinámica , también conocida como experimentación , prueba dinámica o, simplemente, prueba. Esto es bueno para encontrar fallas ( errores de software ).
  • Verificación estática , también conocida como análisis o prueba estática : es útil para comprobar la corrección de un programa, aunque puede dar lugar a falsos positivos cuando existen uno o más conflictos entre el proceso que realmente realiza un software y lo que la verificación estática supone que hace.

En el Sistema de Clasificación Informática ACM , los temas de verificación de software aparecen en "Software y su ingeniería", dentro de "Creación de software", mientras que la verificación de programas también aparece en Teoría de la computación, dentro de Semántica y razonamiento, Razonamiento de programas.

Verificación dinámica (Prueba, experimentación)

La verificación dinámica se realiza durante la ejecución del software y comprueba dinámicamente su comportamiento; comúnmente se la conoce como fase de Prueba . La verificación es un proceso de revisión. Según el alcance de las pruebas, podemos categorizarlas en tres familias:

  • Prueba en pequeño : una prueba que verifica una sola función o clase ( prueba unitaria )
  • Prueba a gran escala : una prueba que verifica un grupo de clases, como
    • Prueba de módulo (un solo módulo)
    • Prueba de integración (más de un módulo)
    • Prueba del sistema (todo el sistema)
  • Prueba de aceptación : una prueba formal definida para verificar los criterios de aceptación de un software.

El objetivo de la verificación dinámica de software es encontrar los errores introducidos por una actividad (por ejemplo, tener un software médico para analizar datos bioquímicos); o por la ejecución repetitiva de una o más actividades (como una prueba de estrés para un servidor web, es decir, verificar si el producto actual de la actividad es tan correcto como lo era al inicio de la actividad).

Verificación estática (Análisis)

La verificación estática es el proceso de comprobar que el software cumple con los requisitos inspeccionando el código antes de ejecutarlo. Por ejemplo:

Verificación por análisis: el método de verificación por análisis se aplica a la verificación por investigación, cálculos matemáticos, evaluación lógica y cálculos que utilizan métodos clásicos de libros de texto o métodos informáticos de uso general aceptados. El análisis incluye el muestreo y la correlación de los datos medidos y los resultados de pruebas observados con los valores esperados calculados para establecer la conformidad con los requisitos.

Alcance limitado

Cuando se define de forma más estricta, la verificación es equivalente únicamente a las pruebas estáticas y está destinada a aplicarse a los artefactos. Y la validación (de todo el producto de software) sería equivalente a las pruebas dinámicas y está destinada a aplicarse al producto de software en ejecución (no a sus artefactos, excepto los requisitos). Tenga en cuenta que la validación de requisitos se puede realizar de forma estática y dinámica (consulte la validación de artefactos ).

Comparación con la validación

La verificación de software suele confundirse con la validación de software. La diferencia entre verificación y validación es la siguiente :

  • La verificación de software plantea la pregunta: "¿Estamos construyendo el producto correctamente?"; es decir, ¿el software se ajusta a sus especificaciones? (Como una casa se ajusta a sus planos).
  • La validación de software plantea la pregunta: "¿Estamos construyendo el producto correcto?"; es decir, ¿el software hace lo que el usuario realmente necesita? (Como una casa que se ajusta a lo que el propietario necesita y quiere).

Véase también

Referencias

  • IEEE : SWEBOK: Guía del cuerpo de conocimientos de ingeniería de software
  • Carlo Ghezzi , Mehdi Jazayeri , Dino Mandrioli: Fundamentos de ingeniería de software , Prentice Hall, ISBN  0-13-099183-X
  • Alan L. Breitler: Un procedimiento de verificación para software derivado de redes neuronales artificiales , Revista de la Asociación Internacional de Pruebas y Evaluación, enero de 2004, vol. 25, n.º 4.
  • Vijay D'Silva, Daniel Kroening , Georg Weissenbacher: Un estudio de técnicas automatizadas para la verificación formal de software. IEEE Trans. on CAD of Integrated Circuits and Systems 27(7): 1165-1178 (2008)
Retrieved from "https://en.wikipedia.org/w/index.php?title=Software_verification&oldid=1233521383"