Universidad Nacional de General Sarmiento Ingeniería de Software Atributos de Calidad. Atributos de Calidad 8La funcionalidad es sólo una parte de lo que un sistema debe hacer. 8Además, están los atributos de calidad (“ilities”), que hablan de características específicas que debe tener el sistema. Necesitamos conocerlos para definir una arquitectura. 0Ejemplo: portabilidad, flexibilidad, usabilidad. 8Es una forma alternativa (más reciente) de llamar a los requerimientos no funcionales 8En muchos casos, los atributos de calidad se afectan entre si. Por ejemplo, portabilidad vs. performance o flexibilidad vs. performance 8La importancia de estos atributos varía con el dominio para el cual se construye el software. Ingeniería de Requerimientos 8Requerimientos Funcionales “de negocio” 8Atributos de Calidad Requeridos 8Restricciones. Distintas clasificaciones de atributos de calidad 8IEEE Std 1061 / ISO 9126 0Efficiency 0Functionality 0Maintainability 0Portability 0Reliability 0Usability 8MITRE Efficiency Reliability Maintainability Interoperability Integrity Correctness Flexibility Usability Expandability Reusability Survivability Verifiability Portability Atributos de calidad: Apertura en ISO 9126 8Funcionalidad 0Adecuación – Corrección – Interoperabilidad – Seguridad – Conformidad 8Fiabilidad (Reliability) 0Madurez – Tolerancia a Fallas – Recuperabilidad 8Usabilidad 0Aprendibilidad – Comprensibilidad – Operabilidad – Atractividad 8Eficiencia 0Comportamiento Temporal – Utilización de Recursos 8Mantenibilidad 0Analizabilidad – Cambiabilidad – Estabilidad – Facilidad de Prueba 8Portabilidad 0Adaptabilidad – Instalabilidad – Coexistencia – Reemplazabilidad Atributos de Calidad 8Vamos a revisar los siguientes: 8Disponibilidad 8Facilidad de cambios 8Performance 8Escalabilidad 8Seguridad 8Facilidad de testeo 8Usabilidad Atributos de Calidad - Disponibilidad 8Relacionada con fallas (“failures”) en el sistema y sus consecuencias asociadas. 8Un “failure” ocurre cuando un sistema no entrega más un servicio de acuerdo con su especificación. 8Esas “failures” son observables por los usuarios (personas u otros sistemas). 8Error <> Defecto (defect) <> Fault <> Failure 8Tiempo de reparación = tiempo hasta que la falla no es más observable 8Disponibilidad = probabilidad de que un sistema esté disponible cuando se lo necesite 0D = Mean Time to Failure / (Mean Time to Failure + Mean Time to Repair) 8Los “downtimes” programados no se consideran 8Relativamente fácil de especificar, difícil de verificar Atributos de Calidad - Facilidad de cambios 8Relacionado con el costo de los cambios. Uno de los atributos de calidad más difíciles de expresar. 8Temas importantes: 0¿Qué puede cambiar? 0Funcionalidad 0Plataforma 0Otros atributos de calidad 0Interfaces 8¿Quién y dónde se hace el cambio? 0Usuarios, desarrolladores, administradores 0Código, configuración, parametrización 8Una vez que un cambio se especifica, debe ser diseñado, implementado, probado y liberado. Atributos de Calidad - Performance 8Relacionado con el tiempo que le lleva al sistema responder a un evento que ocurre (interrupciones, mensajes, pedidos de usuarios o paso del tiempo). 0Latencia: tiempo entre la llegada del estímulo y el inicio de la respuesta del sistema 0“Jitter”: variación en la latencia 0Deadlines: límites de tiempo para un proceso 0Throughput: cantidad de transacciones que el sistema puede procesar en un período de tiempo 0Eventos no procesados 8Difícil de expresar. Depende de volúmenes del sistema, equipamiento en uso y versiones de sistema operativo y otros software de base. Atributos de Calidad - Seguridad 8Habilidad de un sistema para resistir usos no autorizados y seguir proveyendo sus servicios a usuarios legítimos. Incluye: 0Nonrepudiation: mecanismos para asegurar que quienes hicieron algo no puedan negarlo 0Condifencialidad: propiedad por la cual datos o servicios son protegidos de accesos no autorizados 0Integridad: propiedad por la cual datos o servicios se brindan como fue previsto. 0Disponibilidad (en el contexto de seguridad): que un sistema esté disponible para su uso legítimo 0Auditabilidad: habilidad de un sistema para hacer un seguimiento de actividades realizadas Atributos de Calidad - Facilidad de testeo 8Facilidad que presenta un sistema para que se ejecuten sobre él actividades de testing. 8Para eso se debe poder controlar el estado interno de un componente y poder ver sus outputs. Normalmente se utilizan los llamados “test harness” (hay herramientas comerciales que los implementan). Atributos de Calidad – Otros Atributos 8Usabilidad: Relacionada con la facilidad con la cual un usuario puede cumplir una tarea o utilizar un servicio ofrecido por el sistema y el tipo de soporte que provee el sistema. 0Aprender la funcionalidad del sistema 0Usar el sistema eficientemente 0Minimizar el impacto de los errores 0Adaptar el sistema a las necesidades de los usuarios 0Aumentar confianza y satisfacción 8Escalabilidad: una medida de qué tan bien una solución sigue cumpliendo con sus requerimientos al cambiar los volúmenes del problema que resuelve 8Portabilidad: facilidad de un sistema para poder ser operado en distintas plataformas. Especificación de Atributos de Calidad (SEI) 8Quality Attribute Scenario, formado por: 0Fuente del estímulo: Interna o externa 0Estímulo: condición que debe ser tenida en cuenta al llegar al sistema 0Entorno: condiciones en las cuales ocurre el estímulo 0Artifact: el sistema o partes de él afectadas por el estímulo 0Response: qué hace el sistema ante la llegada del estímulo 0Resonse measure: cuantificación de un atributo de la respuesta Fuente: Software Architectures in Practice, 2ndEdition. Bass, Clements y Kazman. SEI Series in Software Engineering, Addison Wesley, 2003.