Calidades sistémicas


Las calidades sistémicas pueden ser:

  • Funcionales: Referidas a lo que el sistema hace, es decir, aquellas funciones que los usuarios del sistema pueden observar.
  • No funcionales: Definen cómo de bien funciona el sistema, como son la Disponibilidad, Usabilidad, etc.

Están definidas por Sun Microsystems de la siguiente manera:

  • Son propiedades que establecen la calidad de servicio (QoS) que un sistema expone.
  • Son globales a toda la arquitectura e influencian el diseño.
  • Son no-funcionales pero observables.
  • No se pueden satisfacer completamente por un componente.



Las calidades sistémicas se descomponen en las siguientes familias:

  1. Manifiestas (Manifiest) u obvias para el usuario:
    • Rendimiento (Performance): La rapidez y eficacia con la cual el sistema cumple la petición. Es decir, determina el tiempo de respuesta desde el punto de vista del usuario.
    • Fiabilidad (Reliability): El sistema debe ser exacto y fiable. Esta calidad se preocupa por el grado de probabilidad de que las operaciones se realicen correctamente.
    • Disponibilidad (Availability): Cantidad de tiempo en línea en el que el sistema puede procesar solicitudes. Este es asunto más complejo puesto que determina el porcentaje de tiempo que un sistema puede usar para procesar dichas solicitudes.
    • Usabilidad (Usability): El grado de facilidad o dificultad en el manejo del sistema.
  2. Operacionales (Operational) que están ligadas al sistema en ejecución:
    • Volúmen de trabajo (Throughput): Cantidad de trabajo hecho por el sistema medido en operaciones por unidad de tiempo.
    • Posibilidad de ser Administrado (Manageability).
    • Seguridad (Security): Prevención de uso no autorizado del sistema y su información.
    • Soporte (Serviceability/Supportability): Esfuerzo necesario para actualizar o reparar el sistema.
    • Facilidad de hacer pruebas (Testeability): Esfuerzo requerido para identificar y aislar una falla en el sistema.
  3. Evolutivas (Evolutionary) vinculadas a cómo se comporta el sistema cuando es modificado o actualizado:
    • Escalabilidad (Scalability): La habilidad para mantener la calidad de servicio requerida conforme la carga aumenta. Es decir, implica conocer la capacidad de crecer y mantener buenos niveles de operación ante un incremento en el número de usuarios o peticiones.
    • Mantenibilidad (Maintainability): La facilidad con la que la aplicación será susceptible de ser corregida o reparada. Así, como determinar el esfuerzo ahorrado cuando se hacen dichos cambios de configuración.
    • Extensibilidad (Extensibility): Posibilidad de agregar funcionalidad nueva. Supone, por tanto, determinar el esfuerzo ahorrado para añadir nuevas funcionalidades.
    • Flexibilidad (Flexibility): Costo de implementar una corrección o una funcionalidad nueva.
    • Reusabilidad (Reusability): Esfuerzo ahorrado cuando empleamos o apoyamos en nuestro proyecto componentes preexistentes.
    • Portabilidad (Portability): Esfuerzo ahorrado cuando se migra a una infraestructura diferente.
  4. Desarrollo (Developmental) que afectan en la manera en la cual se está construyendo el sitema:
    • Fiabilidad (Reliability): Probabilidad o confianza en que el sistema puede desarrollarse, se ve reflejado en la facilidad de estimación, planeación y construcción.
    • Planeabilidad (Serviceability): Confianza en que el sistema puede ser planeado en costo y esfuerzo.

Algunas cualidades sistémicas son excluyentes entre sí, por ejemplo Desempeño frente a Seguridad: el cumplimiento de una minimiza a otra por lo que resulta necesaria una priorización en las cualidades sistémicas para poder decidir de entre varias opciones de solución más adecuada y que no comprometa el cumplimiento de una o varias cualidades.