Tema 44
La Garantía de Calidad en el Proceso de Producción del Software (SQA). Métricas y Evaluación de la Calidad del Software. La Implantación de la Función de Calidad. Estándares Nacionales e Internacionales. Pruebas Tempranas. Norma ISO 29119
Oposición Técnico/a de Función Administrativa – Opción Sistemas y Tecnología de la Información (TFA-STI) del Servicio Andaluz de Salud
Introducción
La garantía de calidad del software (SQA) es un aspecto crítico en la producción de sistemas de información que asegura que los productos de software cumplan con los requisitos y estándares especificados. Este tema aborda los conceptos fundamentales de SQA, las métricas utilizadas para evaluar la calidad, la implantación de la función de calidad en las organizaciones, los estándares internacionales como ISO 29119 e ISO 9001, el concepto de pruebas tempranas y la importancia de los quality gates. La implementación efectiva de SQA reduce costos, mejora la confiabilidad del software y aumenta la satisfacción del cliente, siendo fundamental en el desarrollo de sistemas para organizaciones sanitarias como el Servicio Andaluz de Salud.
1. Conceptos Fundamentales de SQA
1.1 Definición de Garantía de Calidad del Software (SQA)
La Garantía de Calidad del Software (SQA) es un conjunto sistemático de actividades planificadas y realizadas para asegurar que los productos y procesos de software se conforman con los estándares, procedimientos y requisitos especificados. SQA envuelve la auditoría y reporte de actividades de ingeniería de software para asegurar que el software producido sea de alta calidad y cumpla con las expectativas del cliente.
- SQA (Garantía): Enfoque proactivo orientado a PROCESOS. Previene defectos mediante planificación y auditoría de procesos
- QC (Control): Enfoque reactivo orientado a PRODUCTOS. Detecta defectos mediante pruebas del producto final
1.2 Objetivos Principales de SQA
- Prevención de defectos: Detectar y eliminar problemas antes de que se conviertan en errores costosos
- Mejora continua: Identificar oportunidades de mejora en procesos de desarrollo
- Cumplimiento de estándares: Asegurar conformidad con normas industri ales y organizacionales
- Satisfacción del cliente: Entregar software que cumpla requisitos y expectativas
- Reducción de riesgos: Minimizar riesgos técnicos, operativos y de cumplimiento
- Documentación y trazabilidad: Mantener registros completos de calidad y decisiones
1.3 Actividades Principales de SQA
| Actividad | Descripción | Responsabilidad |
|---|---|---|
| Planificación | Preparar plan SQA con objetivos, métricas y actividades | Equipo SQA / Gestión |
| Revisión | Examinar productos y actividades contra estándares | Equipo SQA |
| Auditoría | Verificación formal independiente de conformidad | Equipo Auditoría / SQA |
| Reporte | Comunicar resultados a gestión y stakeholders | Equipo SQA |
| Análisis de Problemas | Investigar raíz de defectos y desviaciones | Equipo SQA / Ingeniería |
2. Métricas y Evaluación de Calidad del Software
2.1 Concepto de Métricas de Software
Las métricas de software son medidas cuantitativas de atributos observables de productos o procesos de software que proporcionan información útil sobre el estado de calidad del producto o progreso del proyecto. Permiten evaluar objetivamente si los objetivos de calidad se están cumpliendo.
2.2 Clasificación de Métricas
Métricas de Producto
Miden características del software entregado:
- Densidad de Defectos: Número de defectos por línea de código (defectos/KLOC)
- Confiabilidad: MTBF (Tiempo Medio Entre Fallos) y MTTR (Tiempo Medio de Reparación)
- Complejidad Ciclomática: Medida de complejidad del código (rango: 1-50)
- Cobertura de Código: Porcentaje de código ejecutado en pruebas (objetivo: >80%)
- Disponibilidad: Porcentaje de tiempo operativo del sistema
Métricas de Proceso
Miden características del proceso de desarrollo:
- Costo de Calidad: COQ = Prevención + Evaluación + Fallo (interno + externo)
- Eficiencia de Pruebas: Defectos detectados / Total defectos
- Tiempo de Ciclo: Tiempo desde requisito hasta entrega
- Rotación de Código: Líneas añadidas/modificadas/eliminadas por período
- Tasa de Cambios: Número de solicitudes de cambio por fase
2.3 Métricas Clave Principales
Defectos encontrados por cada 1000 líneas de código (KLOC) o por componente
Fórmula: Densidad = (Defectos encontrados / KLOC) × 1000
Benchmark: Industria: 2-8 defectos/KLOC; Objetivo: <2
Tiempo promedio entre fallos del software en producción
Importancia: Mayor MTBF = Mayor confiabilidad y disponibilidad
Cálculo: MTBF = Tiempo total / Número de fallos
Tiempo promedio para reparar un defecto tras detectarlo
Importancia: Menor MTTR = Recuperación más rápida de fallos
Cálculo: MTTR = Tiempo total reparación / Número de reparaciones
Porcentaje de líneas de código ejecutadas durante pruebas
Tipos: Cobertura de líneas, ramas, caminos
Objetivo: >80% cobertura de líneas, >70% ramas
Suma de costos de prevención, evaluación y fallos
Fórmula: CoQ = Prevención + Evaluación + Fallos
Defectos tempranos: $1, En desarrollo: $5, En QA: $10, En producción: $100+
Proporción de defectos detectados antes de producción
Fórmula: Eficiencia = Defectos detectados / Total defectos
Objetivo: >95% de defectos detectados antes de producción
3. Implantación de la Función de Calidad en Organizaciones
3.1 Estructura Organizacional de SQA
| Rol | Responsabilidades | Requisitos |
|---|---|---|
| Responsable SQA | Dirección general de programa SQA, reportes a dirección | Experiencia en gestión, conocimiento de SQA |
| Auditor SQA | Auditorías independientes, verificación de conformidad | Experiencia auditoría, independencia |
| Ingeniero de Calidad | Revisiones, análisis de problemas, métricas | Conocimiento técnico, análisis |
| Especialista de Pruebas | Diseño e implementación de pruebas | Experiencia en testing, automatización |
3.2 Plan de Implementación de SQA
- Evaluación Inicial: Diagnosticar estado actual de calidad
- Diseño: Crear plan SQA, definir estándares y métricas
- Comunicación: Informar a equipo sobre objetivos SQA
- Formación: Capacitar en procesos y herramientas SQA
- Piloto: Implementar en proyecto pequeño primero
- Despliegue: Expandir a todos los proyectos
- Monitoreo: Medir y ajustar continuamente
4. Estándares Nacionales e Internacionales
4.1 ISO 9001:2015 – Sistema de Gestión de Calidad
ISO 9001:2015 es el estándar internacional más reconocido para sistemas de gestión de calidad aplicable a organizaciones de cualquier tipo y tamaño, incluyendo desarrollo de software.
Principios Clave de ISO 9001:2015:
- Enfoque al cliente: Comprender y satisfacer necesidades del cliente
- Liderazgo: Establecer dirección clara y crear ambiente para alcanzar objetivos
- Participación del personal: Involucrar personas competentes y comprometidas
- Enfoque basado en procesos: Estructurar actividades como procesos interconectados
- Mejora continua: Mejorar consistentemente el desempeño global
- Toma de decisiones basada en datos: Usar análisis factual para decisiones
- Gestión de relaciones: Colaborar con proveedores
Requisitos de ISO 9001:2015 para Desarrollo de Software:
- Documentación de procesos y procedimientos
- Planificación y control de proyectos
- Gestión de requisitos del cliente
- Revisión y validación de diseño
- Compras y gestión de proveedores
- Producción controlada
- Control de cambios
- Trazabilidad completa
- Auditorías internas periódicas
- Análisis de no conformidades y acciones correctivas
4.2 ISO/IEC/IEEE 29119:2013 – Estándar de Pruebas de Software
ISO/IEC/IEEE 29119 es un estándar internacional que define procesos, documentación y técnicas de pruebas de software aplicables a cualquier ciclo de vida de desarrollo.
Estructura de ISO 29119 (5 Partes):
| Parte | Título | Contenido Principal |
|---|---|---|
| Parte 1:2013 | Conceptos y Definiciones | Vocabulario, términos, conceptos fundamentales de pruebas |
| Parte 2:2013 | Procesos de Prueba | Procesos de prueba: planificación, especificación, ejecución, análisis |
| Parte 3:2013 | Documentación de Prueba | Documentos de prueba: planes, especificaciones, reportes |
| Parte 4:2015 | Técnicas de Prueba | Técnicas basadas en especificación y estructura |
| Parte 5:2016 | Pruebas Dirigidas por Palabras Clave | Framework de automatización basado en palabras clave |
Procesos Principales de ISO 29119 Parte 2:
- Proceso de Planificación de Pruebas (TP): Definir estrategia y plan de pruebas
- Proceso de Análisis de Pruebas (TA): Analizar requisitos y crear especificaciones
- Proceso de Diseño de Pruebas (TD): Diseñar casos de prueba y procedimientos
- Proceso de Implementación de Pruebas (TI): Implementar y preparar ambiente de pruebas
- Proceso de Ejecución de Pruebas (TE): Ejecutar pruebas y registrar resultados
- Proceso de Conclusión de Pruebas (TC): Consolidar datos y reportar resultados finales
4.3 CMMI (Capability Maturity Model Integration)
CMMI es un modelo de referencia que describe prácticas para mejorar procesos de desarrollo de software en organizaciones.
Niveles de Madurez CMMI:
- Nivel 1 (Inicial): Procesos impredecibles, poco controlados
- Nivel 2 (Gestionado): Procesos planificados, ejecutados bajo control
- Nivel 3 (Definido): Procesos caracterizados, documentados, estandarizados
- Nivel 4 (Cuantitativamente Gestionado): Procesos medidos y controlados
- Nivel 5 (Optimizado): Enfoque en mejora continua e innovación
5. Pruebas Tempranas (Early Testing)
5.1 Concepto y Principios
Early Testing (Pruebas Tempranas) es un principio de calidad que enfatiza la importancia de comenzar actividades de pruebas y validación lo más temprano posible en el ciclo de vida del software, incluso antes de que el desarrollo esté completo. Esto contrasta con el modelo tradicional donde las pruebas se realizan solo al final.
- Reducción de costos: Un defecto en diseño cuesta $1, en desarrollo $5, en QA $10, en producción $100+
- Calidad mejorada: Más tiempo para pruebas profundas y cobertura completa
- Tiempo reducido: Menos rework y revisiones al final
- Mejor comunicación: QA participa desde inicio, comprende mejor requisitos
- Menos sorpresas: Identifica problemas antes de inversión significativa
5.2 Implementación de Early Testing
Pruebas Estáticas Tempranas:
- Revisión de Requisitos: Analizar documentación de requisitos para completitud y claridad
- Revisión de Diseño: Examinar arquitectura y diseño antes de codificación
- Walkthrough del Código: Presentación de código con equipo antes de pruebas formales
- Inspecciones: Revisión formal por pares para encontrar defectos
Pruebas Dinámicas Tempranas:
- Pruebas Unitarias en Desarrollo: Desarrolladores escriben y ejecutan pruebas mientras codifican
- TDD (Test-Driven Development): Escribir pruebas antes del código
- BDD (Behavior-Driven Development): Escribir especificaciones ejecutables desde requisitos
- Pruebas de Integración Tempranas: Integrar y probar componentes tan pronto estén disponibles
6. Quality Gates (Puertas de Calidad)
6.1 Concepto de Quality Gates
Los Quality Gates son puntos de control en el ciclo de vida del software donde se evalúan criterios específicos de calidad antes de permitir que el proyecto progrese a la siguiente fase. Actúan como «filtros» para asegurar que solo código de calidad aceptable avance.
6.2 Ejemplos de Quality Gates Típicas
- Gate de Requisitos: Requisitos aprobados, completos, trazables
- Gate de Diseño: Diseño revisado, riesgos identificados, arquitectura validada
- Gate de Código: Cobertura >80%, sin violaciones de estándares, code review pasado
- Gate de Pruebas: Pruebas unitarias >80%, cobertura>70%, sin defectos críticos
- Gate de Sistema: Pruebas sistema pasadas, requisitos cumplidos, performance OK
- Gate de Producción: Todos defectos P1/P2 resueltos, backup, rollback plans listos
6.3 Beneficios de Quality Gates
- Identificación temprana de problemas costosos
- Prevención de avance de código deficiente
- Decisiones informadas basadas en datos objetivos
- Transparencia y documentación completa
- Contribución a mejora continua
- Equilibrio entre velocidad y calidad
7. Integración en MÉTRICA Versión 3 y Contexto del SAS
MÉTRICA versión 3 integra principios de SQA en todos sus procesos. En particular:
- Proceso Aseguramiento de Calidad (CAL): Responsable de auditoría y aseguramiento
- Proceso Construcción (CSI): Incluye pruebas en cada nivel (unitarias, integración, sistema)
- Proceso Implantación (IMP): Validación final y aprobación para producción
- Métricas de Calidad: Medición continua de calidad con indicadores clave
8. Cuestionario de Evaluación (20 Preguntas)
Pregunta 1: ¿Cuál es la principal diferencia entre SQA y QC (Control de Calidad)?
SQA previene defectos mediante auditoría y mejora de procesos. QC detecta defectos mediante pruebas del producto final. SQA es preventivo; QC es correctivo.
Pregunta 2: ¿Cuál es el objetivo principal de Early Testing?
Early Testing busca detectar defectos en fases tempranas (requisitos, diseño) cuando son más económicos de resolver, reduciendo significativamente el costo total de calidad.
Pregunta 3: ¿Qué es la densidad de defectos en métricas de software?
Densidad de defectos = (Defectos / KLOC) × 1000. Es una métrica de producto que mide cuántos defectos existen por cada mil líneas de código.
Pregunta 4: ¿Cuál es el costo relativo de corregir un defecto según su fase de detección?
Según IBM System Science Institute, el costo de reparación aumenta exponencialmente conforme avanza el ciclo de vida. Corregir temprano es mucho más económico.
Pregunta 5: ¿Qué es ISO/IEC/IEEE 29119?
ISO/IEC/IEEE 29119 es un estándar internacional que define procesos, documentación y técnicas de pruebas de software aplicables a cualquier ciclo de vida.
Pregunta 6: ¿Cuántas partes comprende el estándar ISO/IEC/IEEE 29119?
ISO/IEC/IEEE 29119 consta de 5 partes: Conceptos (1), Procesos (2), Documentación (3), Técnicas (4), Pruebas por Palabras Clave (5).
Pregunta 7: ¿Cuál es el principal objetivo de ISO 9001:2015 en desarrollo de software?
ISO 9001:2015 establece requisitos para un sistema de gestión de calidad orientado al cliente, enfatizando procesos, mejora continua y satisfacción.
Pregunta 8: ¿Qué es MTBF en métricas de confiabilidad?
MTBF (Mean Time Between Failures) mide el tiempo promedio que un sistema opera sin fallos. Mayor MTBF indica mayor confiabilidad y disponibilidad.
Pregunta 9: ¿Qué es una Quality Gate o Puerta de Calidad?
Quality Gates son puntos de decisión donde se verifican criterios específicos de calidad. Solo si se cumplen los criterios, el proyecto puede avanzar.
Pregunta 10: ¿Cuál de los siguientes NO es un nivel de madurez CMMI?
CMMI tiene 5 niveles: Inicial, Gestionado, Definido, Cuantitativamente Gestionado, Optimizado. «Perfecto» no es un nivel reconocido.
Pregunta 11: ¿Qué es el Costo de Calidad (CoQ)?
CoQ = Costos de Prevención (procesos, formación) + Evaluación (pruebas, auditorías) + Fallos (reparaciones, reputación).
Pregunta 12: ¿Cuál es el objetivo del Análisis de Raíz (Root Cause Analysis) en SQA?
El Análisis de Raíz busca identificar la causa fundamental de defectos para implementar acciones correctivas que prevengan que vuelva a ocurrir.
Pregunta 13: ¿Qué métricas forman parte de las métricas de PRODUCTO?
Métricas de producto miden características del software entregado: densidad de defectos, MTBF, MTTR, complejidad, cobertura de código, disponibilidad.
Pregunta 14: ¿Cuál es la principal ventaja de TDD (Test-Driven Development)?
TDD escribe pruebas primero (ciclo Red-Green-Refactor), asegurando cobertura completa y código probado desde el inicio del desarrollo.
Pregunta 15: ¿Qué es la cobertura de código (Code Coverage)?
Code Coverage mide el porcentaje de líneas de código ejecutadas en pruebas. Objetivo: >80% cobertura de líneas, >70% de ramas.
Pregunta 16: ¿Cuál de las siguientes es una actividad principal de SQA?
Actividades clave de SQA: Planificación, Revisión, Auditoría, Reporte y Análisis de Problemas. SQA revisa y audita productos y procesos.
Pregunta 17: ¿Qué parte de ISO 29119 define los procesos de prueba?
ISO/IEC/IEEE 29119-2 define los procesos de prueba: Planificación, Análisis, Diseño, Implementación, Ejecución, Conclusión.
Pregunta 18: ¿Cuál es la importancia de las pruebas ESTÁTICAS tempranas?
Pruebas estáticas tempranas (revisión de requisitos, inspecciones de diseño) detectan problemas sin código ejecutable, aprovechando el principio de Early Testing.
Pregunta 19: ¿Qué significa MTTR en métricas de confiabilidad?
MTTR (Mean Time To Repair) mide el tiempo promedio para reparar un defecto tras detectarlo. Menor MTTR = recuperación más rápida.
Pregunta 20: ¿Cuál es el principal requisito de ISO 9001:2015 para desarrollo de software?
ISO 9001:2015 requiere: Documentación clara, cumplimiento consistente, mejora continua, enfoque al cliente y decisiones basadas en datos.
9. Referencias Bibliográficas
Estándares Internacionales de Calidad
- ISO/IEC/IEEE 29119:2013. Software and Systems Engineering – Software Testing. Part 1-5
- ISO 9001:2015. Quality Management Systems – Requirements
- ISO/IEC 27001:2013. Information Security Management Systems
- ISO 90003:2022. Software Engineering – Guidelines for the Application of ISO 9001:2015 to Software
Marcos de Referencia (CMMI)
- SEI (Software Engineering Institute). CMMI for Development (CMMI-DEV) v1.3
- Chrissis, M. B., Konrad, M., & Shrum, S. (2011). CMMI for Development: Guidelines for Process Integration and Product Improvement
Textos sobre SQA y Métricas
- Pressman, R. S. (2021). Software Engineering: A Practitioner’s Approach. 9ª edición. McGraw-Hill
- Sommerville, I. (2020). Software Engineering. 10ª edición. Addison-Wesley
- Kan, S. H. (2002). Metrics and Models in Software Quality Engineering. 2ª edición. Addison-Wesley
- Wheeler, D. A., Brykczynski, B., & Meeson, R. N. (1996). Software Inspection: An Industry Best Practice
Pruebas Tempranas y Quality Gates
- Tricentis. Early Testing in Software Development: Best Practices
- MTP. Early QA: Calidad de Software Desde el Primer Paso
- IBM System Science Institute. Software Quality Assurance Economics
Sector Público y SAS
- Ministerio de Administraciones Públicas. MÉTRICA Versión 3. Metodología de Planificación, Desarrollo y Mantenimiento de Sistemas de Información
- Junta de Andalucía. Servicio Andaluz de Salud. Políticas de Tecnología de la Información y Estándares de Calidad
- Agencia para la Defensa de la Seguridad Informática (CCN-CERT). Guías de Seguridad en Sistemas Sanitarios
