Skip to content
IRC-CodingIRC-Coding
Calidad de SoftwareCaracterísticas de CalidadTestabilidadMantenibilidadSeguridadPerformanceClean Code

Calidad de Software: Fundamentos y Guía Práctica

Aprende los fundamentos de calidad de software: definición, características, testabilidad, mantenibilidad, seguridad y performance.

S

schutzgeist

4 min read
Calidad de Software: Fundamentos y Guía Práctica

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:

  1. Calidad funcional: Corrección, completitud, adecuación de las funciones.
  2. Calidad no funcional: Desempeño, seguridad, confiabilidad, usabilidad.
  3. Calidad estructural: Mantenibilidad, testabilidad, extensibilidad, calidad de código.

Componentes Clave de la Calidad de Software

  1. Corrección funcional: El software cumple las especificaciones requeridas sin errores.
  2. Confiabilidad: El sistema permanece estable bajo carga y ante fallos.
  3. Desempeño: Los tiempos de respuesta, el rendimiento y la eficiencia de recursos están dentro del rango objetivo.
  4. Seguridad: Protección contra acceso no autorizado, fugas de datos y manipulación.
  5. Mantenibilidad: El código es legible, modular y fácil de modificar.
  6. Testabilidad: Los componentes se pueden probar de forma aislada y automatizada.
  7. Usabilidad: Los usuarios pueden operar el software de forma intuitiva y eficiente.
  8. 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)

  1. ¿Qué es la calidad de software? La medida en que el software cumple los requisitos especificados e implícitos.

  2. Menciona tres características de calidad no funcionales. Desempeño, Seguridad, Confiabilidad.

  3. ¿Qué significa mantenibilidad? La capacidad de adaptar, corregir o extender el software con esfuerzo razonable.

  4. ¿Por qué es importante la testabilidad? Permite pruebas automatizadas y repetibles, facilitando la detección temprana de errores.

  5. ¿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

  1. https://iso25000.com
  2. https://www.iso.org/standard/35733.html
  3. https://en.wikipedia.org/wiki/ISO/IEC_25010
Volver al blog
Share:

Entradas relacionadas