Fundamentos de Calidad de Software
La calidad de software va mucho más allá de la ausencia de errores. Describe cuán bien un programa satisface los requisitos de sus usuarios y qué tan eficientemente puede mantenerse a lo largo de su ciclo de vida. Este artículo explica los fundamentos de la calidad de software y muestra cómo implementarla de manera medible en el desarrollo diario.
En tiempos de Vibecoding, escribimos código tan rápidamente que a menudo descuidamos la calidad.
Los temas de AP1 y AP2 requieren que ya conozcas ISO 25010 en AP1 y, más adelante, cuando tu proyecto inicie, también debas dominar los requisitos funcionales y no funcionales. Generalmente esto se puede aprender y aplicar muy bien. Además, es importante conocer la diferencia entre ISO 9126 e ISO 25010, es decir, viejo versus nuevo, al final es solo una extensión.
En resumen: Calidad de Software - Desarrollo de Aplicaciones
- La calidad de software abarca requisitos funcionales y no funcionales.
- ISO 25010 define ocho características principales: Functional Suitability, Performance Efficiency, Compatibility, Usability, Reliability, Security, Maintainability, Portability.
- Una calidad alta reduce costos de errores, acelera el desarrollo y aumenta la satisfacción del usuario.
- La calidad surge a través de pruebas, Clean Code, arquitectura clara, revisiones y métricas continuas.
La calidad de software mide si un programa hace lo que debe hacer y cuán bien lo hace. No es un estado binario, sino una relación de propiedades que se ponderan diferente según el contexto. Una aplicación médica, por ejemplo, requiere alta confiabilidad y seguridad, mientras que una plataforma de streaming necesita principalmente Performance Efficiency y escalabilidad.
Las dimensiones más importantes se dividen en tres grupos:
- Calidad funcional: Corrección, completitud, adecuación de las funciones.
- Calidad no funcional: Desempeño, seguridad, confiabilidad, usabilidad.
- Calidad estructural: Mantenibilidad, testabilidad, extensibilidad, calidad de código.
Componentes Clave de la Calidad de Software
- Corrección funcional: El software cumple las especificaciones requeridas sin errores.
- Confiabilidad: El sistema permanece estable bajo carga y ante fallos.
- Desempeño: Los tiempos de respuesta, el rendimiento y la eficiencia de recursos están dentro del rango objetivo.
- Seguridad: Protección contra acceso no autorizado, fugas de datos y manipulación.
- Mantenibilidad: El código es legible, modular y fácil de modificar.
- Testabilidad: Los componentes se pueden probar de forma aislada y automatizada.
- Usabilidad: Los usuarios pueden operar el software de forma intuitiva y eficiente.
- Compatibilidad: Interoperabilidad con otros sistemas, navegadores y dispositivos.
Ejemplo Práctico: Objetivos de Calidad para una API Web
Objetivo: Una API de pedidos para una tienda en línea
Functional Suitability:
- Todos los endpuntos de casos de uso están presentes y documentados correctamente.
- El precio, impuesto y descuento se calculan correctamente en el 100 por ciento de los casos.
Performance Efficiency:
- Percentil 95 del tiempo de respuesta por debajo de 200 milisegundos con 100 usuarios simultáneos.
- Rendimiento de al menos 500 solicitudes por segundo sin incumplimiento de SLA.
Reliability:
- Disponibilidad del 99,9 por ciento mensualmente.
- MTTR menor a 30 minutos en caso de interrupciones.
Security:
- Cifrado de transporte con TLS 1.3.
- Autenticación a través de OIDC con MFA para administradores.
- Registro de auditoría inmutable para todos los cambios críticos.
Maintainability:
- Cobertura de código de al menos el 70 por ciento en pruebas unitarias.
- Sin dependencias cíclicas entre módulos.
- Feature Flags para permitir lanzamientos controlados.
Ventajas y Desventajas
Ventajas
- Costos totales más bajos: Encontrar errores temprano es mucho más económico que las correcciones posteriores en producción.
- Mayor velocidad de desarrollo: El código limpio y las pruebas sólidas permiten iteraciones más rápidas.
- Mejor satisfacción del cliente: El software estable, eficiente e intuitivo se utiliza con gusto.
- Menor riesgo: Las vulnerabilidades de seguridad y las interrupciones se pueden minimizar de forma proactiva.
Desventajas
- Mayor esfuerzo inicial: Las pruebas, revisiones y métricas consumen tiempo al inicio del proyecto.
- Conflictos de objetivos: La seguridad máxima puede reducir el desempeño, la máxima flexibilidad puede aumentar la complejidad.
- Esfuerzo de medición: La calidad debe definirse, medirse y monitorearse para ser efectiva.
Puntos Relevantes para el Examen
- Definición de calidad de software según ISO 25010.
- Distinción entre requisitos funcionales y no funcionales.
- Ocho características principales de ISO 25010 y su importancia.
- Relación entre calidad, pruebas y mantenibilidad.
- Costos de corrección de errores en diferentes fases del ciclo de vida.
- Importancia de Clean Code, revisiones y análisis estático.
Preguntas Típicas del Examen (con Respuesta Breve)
-
¿Qué es la calidad de software? La medida en que el software cumple los requisitos especificados e implícitos.
-
Menciona tres características de calidad no funcionales. Desempeño, Seguridad, Confiabilidad.
-
¿Qué significa mantenibilidad? La capacidad de adaptar, corregir o extender el software con esfuerzo razonable.
-
¿Por qué es importante la testabilidad? Permite pruebas automatizadas y repetibles, facilitando la detección temprana de errores.
-
¿Cuál es la diferencia entre ISO 9126 e ISO 25010? ISO 25010 amplía las seis características de ISO 9126 a ocho y añade Seguridad y Compatibilidad.
Continúa en la Ruta de Aprendizaje de Calidad de Software
El siguiente artículo en la ruta de aprendizaje de Calidad de Software trata Calidad de Software e ISO 25010 — las ocho características de calidad según el estándar internacional.
Fuentes Principales
- https://iso25000.com
- https://www.iso.org/standard/35733.html
- https://en.wikipedia.org/wiki/ISO/IEC_25010



