Ir al contenido principal

Catálogo de Atributos de Calidad

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
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
  1. 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.
  2. 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.
  3. Architect Enterprise Applications with Java EE. Volume 1 Student Guide. Último acceso Noviembre de 2014.
  4. Atributos de calidad comunes. MSDN. https://msdn.microsoft.com/en-us/library/ee658094.aspx. Consultado por última vez el mayo 24 de 2015.

Comentarios

Entradas populares de este blog

Proceso para la creación de la Arquitectura

Hoy quiero contarles acerca de un modelo que he adoptado para la construcción y entrega de la Arquitectura de Software, el cual lo he relacionado con éxito al interior de la compañía para la cual trabajo y que considero, bien puede adaptarse a cualquier tipo de especialidad de la Arquitectura Empresarial. Cuando era desarrollador escuchaba hablar constantemente acerca de varias metodologías de desarrollo. Durante mucho tiempo apliqué RUP, XP y metodologías AGILES, usé PSP y TSP como procesos de desarrollo. Pero durante todo ese tiempo nunca oí hablar de metodologías orientadas a la generación de la Arquitectura de Software, aún luego de comenzar a estudiar y al día de hoy he tenido muy pocas referencias. Quiero aclarar que existen varios modelos y  frameworks bastante conocidos para la Arquitectura Empresarial que son confrontados a profundidad en unas entregas muy completas de Microsoft, estas pueden estudiarse en este link . Pues bien, el método al que me refiero es ACDM, ...

Expandir espacio en disco duro en Virtual Box y con Partition Logic

Cuando nos quedamos sin espacio en nuestra máquina virtual, tenemos problemas para seguir usándola adecuadamente. Los siguientes son  los pasos que seguí para aumentar el espacio en disco duro, para la unidad principal de una máquina virtual de Windows XP instalada en mi Mac Book.  Probé una herramienta llamada Partition Logic   y, debido a que no la conocía, decidí documentarlo. Tenía asignadas 5GB a la unidad donde está instalado el sistema operativo, y se veía así: Mi máquina, con 5GB de tamaño en disco duro. 1. Redimensionar la unidad vdi. el siguiente es el comando que realiza toda la magia en VirtualBox: VBoxManage modifyhd "ruta/unidad.vdi" --resize [tamaño] En mi caso aumenté el tamaño a 20GB. VBoxManage modifyhd "/Users/oscar/VirtualBox VMs/WindowsXP/WindowsXPClone.vdi" --resize 20000 Como anotación,  debí clonar la unidad, pues había creado el disco de tamaño fijo en Virtual Box y no me permitía aumentarlo (generaba error...

Atributos de Calidad

¿Qué son los Atributos de Calidad? Los Arquitectos debemos participar en el entendimiento de las necesidades de los usuarios. Sí, esa es nuestra principal responsabilidad.  En mi experiencia he debido iniciar con leer términos de referencia para aplicar a licitaciones públicas y privadas y luego acompañar al equipo de análisis en el levantamiento de requerimientos. Los usuarios finales, a excepción de algunos muy técnicos, hablarán en el lenguaje del negocio, de otros sistemas que conocen, de lo que hace la competencia, de lo que otro proveedor les contó, de lo que alguno de sus más influyentes operarios conoce o del patrón de trabajo que ejecutan a diario. Muy pocas veces nos dirán exactamente lo que quieren y por eso debemos estar presentes; debemos ayudar a traducir esos relatos prosaicos de necesidades a requerimientos técnicos.  Los requerimientos técnicos se dividen principalmente en 2: los funcionales (functional requirements) y los no funcionales (Non-functi...