Como comentaba en Qué son los atributos de Calidad, existen un conjunto reconocido de características que se atribuyen a los sistemas en construcción a través de lo que todos conocemos como requerimientos no funcionales. Si bien es cierto que cada aplicación a desarrollar es totalmente diferente e independiente de otra, es posible usar un catálogo de estas características o atributos para ayudar a definir los requerimientos. Veamos entonces los conjuntos de atributos de calidad que han sido definidos a través de los principales estándares o proveedores de tecnología quienes los agrupan de acuerdo a ciertas preocupaciones
Personalmente me alineo con el agrupamiento propuesto por la IEEE. En todo caso, aunque en los documentos de Arquitectura siempre hago referencia al SEI, es importante contar con un catálogo base de atributos de calidad que le permita a uno esbozar cuáles necesidades pueden ser importantes para la aplicación bajo construcción.
Cada uno de los atributos mencionados tienen métricas y tácticas asociadas. Las métricas son importantes para entender cómo deberían medirse objetivamente los atributos y determinar si el sistema cumple o no los requerimientos no funcionales establecidos. Las tácticas, por otro lado, proporcionan estrategias para cumplir estos requerimientos minimizando o evaluando el trade-off.
Durante las siguientes entradas usaré este catalogo como base para registrar las métricas y tácticas más usadas de la mayoría de los atributos; Una tarea bastante extensa pero que es útil como material de consulta y referencia.
Referencias
Estándar internacional sugerido para la evaluación de la calidad del software. Se clasifica en 6 grupos principales de características. | |
FUNCIONALIDAD | |
---|---|
Adecuación | Capacidad del software de satisfacer las necesidades de funciones especificadas. |
Exactitud | Característica relacionada con los resultados esperados. |
Interoperabilidad | Cualidad del software para interactuar con otros sistemas acordados. |
Seguridad | Capacidad del sistema de garantizar el acceso correcto a los recursos expuestos. |
Cumplimiento funcionalidad | Se asemeja a la adecuación. |
CONFIABILIDAD | |
Maduréz | Indica la frecuencia de las fallas del software en un periodo de tiempo. |
Recuperabilidad | Tiempo y esfuerzo relacionado con la capacidad de recuperar el sistema luego de una falla. |
Tolerancia a Fallos | Característica relacionada a proveer un nivel de servicio acordado en caso de falla de software o de la interfaz humana. |
USABILIDAD | |
Aprendizaje | Mide el esfuerzo de los usuarios por hacer instintivo el uso del software. |
Comprensión | Mide el esfuerzo de los usuarios para reconocer el concepto logíco y sus aplicaciones, lo que les permite sugerir mejoras. |
Operatividad | Capacidad del sistema para lograr que la operación del usuario sea fluida. |
Atractividad | Mide la percepción por parte de los usuarios de la correcta y llamativa disposción de los elementos que componen el sistema. |
EFICIENCIA | |
Comportamiento en el tiempo | Indica los atributos relacionados con el tiempos de respuesta y procesamiento de funciones específicas. |
Comportamiento de recursos | Característica de emplear los recursos acordados para funciones específicas. |
MANTENIBILIDAD | |
Estabilidad | Capacidad de predecir, a través de los riesgos, los efectos en el sistema por controles de cambio efectuados |
Facilidad de análisis | Característica relacionada con la posibilidad de identificar la necesidad de los cambios. |
Facilidad de cambio | Característica relacionada con la posibilidad de identificar el impacto de los cambios. |
Facilidad de pruebas | Esfuerzo requerido para verificar y validar las modificaciones en el sistema. |
PORTABILIDAD | |
Capacidad de instalación | Tiempo y esfuerzo requerido para instalar el producto de software construido. |
Adaptabilidad | Al cambiar los escenarios acordados mide el esfuerzo necesario por la continua ejecución de funcionalidades. |
Co-Existencia | Capacidad de compartir recursos de hardware y software con sistemas heterogéneos sin afectar su función. |
Estándar establecido entre 1992 y 1993 por la IEEE que sugiere un conjunto de métricas de calidad para evaluar un sistema de software. Indica que depende de quien desarrolla el sistema seleccionar los atributos y métricas adecuadas pues estas no son obligatorias ni existe consenso para su uso. | |
DESEMPEÑO | |
---|---|
Latencia | Se refiere al intervalo del tiempo durante el cual una respuesta debe ser recibida por el usuario. |
Rendimiento | Se relaciona con la latencia e indica la cantidad de transacciones que pueden ser completadas en un intervalo de observación. |
Capacidad | Cantidad máxima del trabajo que un sistema puede realizar en términos de rendimiento y sin afectar la latencia. |
Modos | Capacidad de sacrificar características de tiempo a eventos menos importantes en etapas, fases o escenarios en los que el sistema tiene sobrecarga. |
CONFIABILIDAD | |
Disponibilidad | Mide la probabilidad de que un sistema este listo para su uso en todo momento. Mezcla la confianza, la capacidad y la recuperabilidad. |
Confianza | Permite establecer la habilidad de un sistema para mantenerse operando. Generalmente se refiere al tiempo que tarde el sistema para generar una posible falla. |
Mantener a salvo | Capacidad del sistema para mantenerse aislado de consecuencias catastróficas en el entorno. |
Confidencialidad | Capacidad del sistema de garantizar el acceso correcto a los recursos expuestos |
Integridad | Caracterísitca enfocada en la no ocurrencia de alteración inapropiada o descontrolada de la información. |
Mantenibilidad | Capacidad del sistema de someterse a la reparación y la evolución comparado contra la capacidad de mantenerse disponible. |
SEGURIDAD | |
Condidencialidad | Propiedad del sistema que garantiza que los datos solo sean accedidos por los usuarios autorizados. |
Integridad | Mide, generalmente, los tiempos y recursos requeridos para alterar los datos o procesos sin autorización. |
Disponibilidad | Cantidad de tiempo y recursos que toma a un atacante generar denegación de servicios, afectando la confiabilidad. |
MANTENER A SALVO | |
Complejidad de interacción | Medida en la que un componente puede afectar el comportamiento de otros. Existen interacciones lineales y complejas. |
Fuerza de acoplamiento | Mide la flexibilidad del sistema para permitir eventos no planeados. Se categoriza entre el bajo y el fuerte acoplamiento. |
De acuerdo a las memorias de la certificación para Arquitecto de aplicaciones empresariales con Java, Oracle agrupa los requerimientos no funcionales en 4 familias: Manifiesto son aquellos requerimientos obvios para el usuario; Operacionales son aquellos que se perciben durante el uso del sistema; Desarrollo son importantes durante el diseño y construcción y Evolucionario se refieren a la capacidad de cambiar y adaptarse. | |
MANIFIESTO | |
---|---|
Desempeño | Mide el tiempo de respuesta de las peticiones recibidas por el usuario |
Confianza | Mide la probabilidad de que los datos son correctos tanto en el almacenamiento como en el procesamiento y visualización. |
Disponibilidad | Mide la probabilidad de que el sistema esté operando en el momento en que el usuario intenta usarlo y hasta finalizar de requerirlo. |
Usabilidad | Mide la habilidad que proporciona el sistema al usuario para que pueda aprender y usarlo para lograr ejecutar sus tareas |
OPERACIONAL | |
Rendimiento | Mide la cantidad total de trabajo que puede ser ejecutado en un periodo de tiempo. |
Gestionabilidad | Mide la cantidad de intervención humana requerido para mantener el sistema funcionando. Ejemplo los backups. |
Seguridad | Capacidad de garantizar que los datos están protegidos contra su divulgación o modificación no autorizada. |
Facilidad de pruebas | Indica la cantidad de trabajo que es requerido para identificar y aislar una falla o error en el sistema. |
Capacidad de Servicio | Mide la capacidad de trabajo necesario requerido para ejecutar mantenimiento no rutinario, como remplazar un disco duro. |
DESARROLLO | |
Capacidad de planeacíon | Característica que mide la confianza en las estimaciones de esfuerzo y costo. |
Capacidad de Construcción | Indica la probabilidad de una implementación exitosa de una característica o un producto. |
EVOLUTIVO | |
Escalabilidad | Indica el esfuerzo y costo requerido para modificar el sistema para proveer alto rendimiento. |
Mantenibilidad | Indica la medida de trabajo requerido para realizar rutinas de reparación de errores o gestión de la deuda técnica. |
Flexibilidad | Mide la cantidad de trabajo y costo requerido para realizar cambios al sistema. |
Reusabilidad | Capacidad del sistema bajo desarrollo que, dado un nuevo proyecto con requerimientos similares, puede integrarse a otro exitosamente. |
Portabilidad | Mide la cantidad de trabajo y costo de migrar componentes del sistema o de su plataforma a un entorno distinto. |
Microsoft cuenta con una librería muy completa para la Arquitectura de Software. En uno de sus apartados establece un listado no exhaustivo de atributos de calidad. Están categorizadas en 4 áreas específicas. | |
CUALIDADES DE DISEÑO | |
---|---|
Integridad Conceptual | Define la consistencia y coherencia del diseño en general. Mide la calidad del diseño y del código. |
Mantenibilidad | Capacidad del sistema de aceptar cambios con cierto grado de facilidad. Es medido en términos del impacto. |
Reusabilidad | Define la capacidad de los componentes y subsistemas para usarlos en otras aplicaciones y escenarios. |
CUALIDADES EN TIEMPO DE EJECUCIÓN | |
Disponibilidad | Define la proporción del tiempo durante el cual el sistema es funcional y permanece trabajando. |
Interoperabilidad | Característica de un sistema para operar e intercambiar información entre otros sistemas. |
Gestionabilidad | Capacidad del sistema de permitir a los administradores monitorizar y optimizar la aplicación. |
Desempeño | Indica la respuesta del sistema al ejecutar una acción en un periodo de tiempo. Puede ser medido a través de la latencia y el rendimiento. |
Confiabilidad | Es la medida de la probabilidad de que el sistema no fallará al ejecutar sus funciones establecidas durante el tiempo. |
Escalabilidad | Capacidad del sistema de aumentar la carga de las peticiones sin afectar su desempeño. |
Seguridad | Es la habilidad del sistema para prevenir acciones accidentales o maliciosas fuera del uso para el que el sistema fue diseñado. |
CUALIDADES DEL SISTEMA | |
Soportabilidad | Capacidad del sistema de ofrecer información útil para identificar y resolver problemas cuando falla. |
Facilidad de pruebas | Característica del sistema de permitir diseñar y ejecutar casos de prueba así como identificar y aislar las fallas efectivamente. |
CUALIDADES DEL USO | |
Usabilidad | Define qué tan bien el sistema cumple los requerimientos del uso y consumo de los servicios expuestos. Todo relacionado a ser intuitivo, fácil de localizar y globalizar. |
Personalmente me alineo con el agrupamiento propuesto por la IEEE. En todo caso, aunque en los documentos de Arquitectura siempre hago referencia al SEI, es importante contar con un catálogo base de atributos de calidad que le permita a uno esbozar cuáles necesidades pueden ser importantes para la aplicación bajo construcción.
Cada uno de los atributos mencionados tienen métricas y tácticas asociadas. Las métricas son importantes para entender cómo deberían medirse objetivamente los atributos y determinar si el sistema cumple o no los requerimientos no funcionales establecidos. Las tácticas, por otro lado, proporcionan estrategias para cumplir estos requerimientos minimizando o evaluando el trade-off.
Durante las siguientes entradas usaré este catalogo como base para registrar las métricas y tácticas más usadas de la mayoría de los atributos; Una tarea bastante extensa pero que es útil como material de consulta y referencia.
Referencias
- Explorador del Estándar. ISO/IEC TR 9126-2:2003(en). https://www.iso.org/obp/ui/#iso:std:iso-iec:tr:9126:-2:ed-2:v1:en. Consultado por última vez el mayo 24 de 2015.
- IEEE 1061-1998.pdf - COW - Middle East Technical University. https://cow.ceng.metu.edu.tr/Courses/download_courseFile.php?id=2681. Consultado por última vez el mayo 24 de 2015.
- Architect Enterprise Applications with Java EE. Volume 1 Student Guide. Último acceso Noviembre de 2014.
- Atributos de calidad comunes. MSDN. https://msdn.microsoft.com/en-us/library/ee658094.aspx. Consultado por última vez el mayo 24 de 2015.
Comentarios
Publicar un comentario
Comenta, pregunta u orienta constructivamente.