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

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:

  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