Construcción y Calidad del Software
La construcción y la calidad del software se refieren a la creación disciplinada de código funcional y a las técnicas —pruebas, verificación, revisión y medición— que establecen y aseguran que el software cumple con sus requisitos y objetivos de calidad.
Definition
La construcción de software es la creación detallada de software funcional mediante codificación, verificación, pruebas unitarias y depuración, y la calidad del software es el grado en que el software satisface sus requisitos declarados e implícitos, asegurado por actividades de verificación, validación y gestión de la calidad.
Scope
Esta área abarca las prácticas de construcción de software, incluyendo estándares de codificación, programación defensiva y pruebas unitarias; los niveles y técnicas de prueba de software; la verificación y validación; el análisis estático y dinámico; la revisión y refactorización de código; los atributos y métricas de calidad del software; y los métodos formales para probar la corrección. Unifica las actividades que producen y aseguran un software fiable.
Sub-topics
Core questions
- ¿Qué prácticas producen código que es correcto, legible y mantenible?
- ¿Cómo se detectan los defectos mediante pruebas, revisión y análisis?
- ¿Cómo se define, mide y asegura la calidad del software?
- ¿Cuándo se puede establecer la corrección mediante una prueba formal en lugar de solo pruebas?
Key theories
- Las pruebas revelan la presencia, no la ausencia, de defectos
- Las pruebas pueden demostrar que existen defectos, pero no pueden probar su ausencia; por lo tanto, las pruebas efectivas tienen como objetivo maximizar la probabilidad de encontrar fallas mediante la selección sistemática de casos en lugar de una ejecución exhaustiva.
- Verificación y validación
- La verificación comprueba que el software se construye correctamente con respecto a su especificación, mientras que la validación comprueba que se construyó el software adecuado para satisfacer las necesidades del usuario; juntas abarcan revisiones, análisis y pruebas a lo largo del ciclo de vida.
- La calidad se incorpora, no se prueba
- La calidad es el resultado de las prácticas de construcción, el diseño y la disciplina del proceso, más que de la inspección al final; la prevención de defectos y la detección temprana son mucho más económicas que la corrección tardía.
Clinical relevance
Las actividades de construcción y calidad determinan la fiabilidad, seguridad y mantenibilidad de un sistema y dominan el costo de los defectos; la verificación temprana y sistemática reduce las fallas en el campo y el retrabajo, lo cual es fundamental para entregar software fiable.
Evidence & guidelines
ISO/IEC 25010 define un modelo de calidad de producto de software, y las áreas de conocimiento SWEBOK sobre Construcción de Software, Pruebas y Calidad proporcionan una guía de referencia consensuada.
History
Las pruebas sistemáticas fueron articuladas por Myers en la década de 1970, la programación estructurada y la verificación por Dijkstra y Hoare en la misma época, y la artesanía de la construcción por McConnell en la década de 1990; los modelos y estándares de calidad como ISO/IEC 25010 consolidaron los atributos y la medición de la calidad.
Debates
- Pruebas versus verificación formal
- Se debate si la confianza en la corrección debe basarse en pruebas exhaustivas o en pruebas formales; las pruebas se escalan a sistemas grandes pero no pueden garantizar la corrección, mientras que los métodos formales ofrecen fuertes garantías a un costo más alto y se reservan para componentes críticos.
Key figures
- Glenford Myers
- Steve McConnell
- C. A. R. Hoare
- Edsger Dijkstra
Related topics
Seminal works
- myers2011
- mcconnell2004
- swebok2014
Frequently asked questions
- ¿Pueden las pruebas demostrar que un programa es correcto?
- No. Las pruebas ejercitan un conjunto finito de entradas y pueden revelar defectos, pero no pueden demostrar su ausencia; probar la corrección para todas las entradas requiere verificación formal, lo cual es factible solo para partes restringidas o críticas de un sistema.
- ¿Es la calidad lo mismo que la ausencia de errores?
- No. La calidad del software es multidimensional, abarcando la corrección funcional más atributos como la fiabilidad, el rendimiento, la seguridad, la usabilidad y la mantenibilidad; un programa con pocos errores aún puede ser de mala calidad si no es mantenible o es inseguro.