Fundamentos
La calidad de software es término con el que nos encontramos a lo largo de nuestra carrera como ingenieros de sistemas, y dado a que su significado es bastante amplio es difícil tener una definición concisa de lo que realmente es. Por lo que para adentrarnos más a fondo en este tópico deberemos definirlo acorde al manual SWEBOK V3.
1.1 El Alcance de la Calidad (Producto y Proceso)
La calidad no se limita al código final; es un concepto multidimensional que abarca:
- Naturaleza del producto: Se refiere a las características deseables del software (confiabilidad, mantenibilidad, usabilidad).
- Conformidad con los requisitos: El grado en que el producto final se alinea con lo que el cliente pidió y lo que realmente necesita.
- Enfoque en procesos: La premisa de que procesos de ingeniería bien definidos y ejecutados tienden a generar productos de mayor calidad.
1.2 Cultura y Ética en la Ingeniería de Software
El SWEBOK enfatiza que la calidad empieza con la actitud del profesional:
- Responsabilidad compartida: Todos los miembros del equipo son responsables de la calidad, no solo los "testers".
- Integridad: Los ingenieros deben informar objetivamente sobre los defectos y no ocultar riesgos.
- Compromiso con el usuario: La ética profesional exige que el software sea seguro y cumpla su propósito sin causar daños.
1.3 El Valor y los Costos de la Calidad (CoSQ)
Para entender la calidad desde una perspectiva económica se utiliza el modelo Cost of Software Quality (CoSQ) para justificar inversiones:
- Costos de Conformidad (Inversión preventiva):
- Prevención: Dinero gastado para evitar que ocurran errores (ej. capacitación, diseño de estándares, selección de herramientas).
- Evaluación: Costos para detectar errores antes de que avancen (ej. revisiones de código, inspecciones, pruebas unitarias).
- Costos de No Conformidad (Costo del error):
- Fallas Internas: Errores detectados por el equipo antes de entregar el software (ej. rework, retest).
- Fallas Externas: El peor escenario; errores encontrados por el usuario (ej. soporte técnico, parches de emergencia, pérdida de reputación, demandas legales).
1.4 Modelos y Características de la Calidad
La calidad no es subjetiva; se mide a través de modelos estandarizados:
- Atributos de Calidad: Se dividen en internos (legibilidad del código) y externos (facilidad de uso).
- Estándares ISO/IEC: El SWEBOK cita la norma ISO/IEC 25010 (que reemplazó a la 9126), la cual clasifica la calidad en categorías como Funcionalidad, Eficiencia de Desempeño, Compatibilidad, Usabilidad, Fiabilidad, Seguridad, Mantenibilidad y Portabilidad.
1.5 Calidad en el Uso
Este concepto diferencia la calidad "técnica" de la "experiencia real":
- Se evalúa qué tan bien el usuario puede lograr sus objetivos en un entorno real.
- Incluye métricas de efectividad, eficiencia y satisfacción del cliente final.
1.6 Seguridad del Software (Software Safety)
En sistemas críticos (médicos, aviación, energía), la calidad se vuelve un tema de seguridad física:
- Análisis de peligros: Identificar condiciones del software que podrían llevar a un accidente.
- Reducción de riesgos: Implementar salvaguardas para que, incluso si el software falla, el sistema entre en un estado seguro ("fail-safe").