prueba

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").