Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Descripción general
Los atributos de calidad son los factores generales que afectan el comportamiento en tiempo
de ejecución, el diseño del sistema y la experiencia del usuario. Representan áreas de
preocupación que tienen el potencial de tener un impacto amplio en la aplicación a través de
capas y niveles. Algunos de estos atributos están relacionados con el diseño general del
sistema, mientras que otros son específicos del tiempo de ejecución, el tiempo de diseño o
cuestiones centradas en el usuario. La medida en que la aplicación posee una combinación
deseada de atributos de calidad como usabilidad, rendimiento, confiabilidad y seguridad
indica el éxito del diseño y la calidad general de la aplicación de software.
Este capítulo enumera y describe los atributos de calidad que debe considerar al diseñar su
aplicación. Para aprovechar al máximo este capítulo, utilice la tabla de las páginas siguientes
para comprender cómo los atributos de calidad se relacionan con los factores de calidad del
sistema y de la aplicación, y lea la descripción de cada uno de los atributos de calidad.
Luego utilice las secciones que contienen pautas clave para cada uno de los atributos de
calidad para comprender cómo ese atributo tiene un impacto en su diseño y determinar las
decisiones que debe tomar para abordar estos problemas. Tenga en cuenta que la lista de
atributos de calidad de este capítulo no es exhaustiva, pero proporciona un buen punto de
partida para hacer preguntas apropiadas sobre su arquitectura.
Atributo de
Categoría Descripción
Calidad
Cualidades de Integridad La integridad conceptual define la consistencia y
diseño conceptual coherencia del diseño general. Esto incluye la
forma en que se diseñan los componentes o
módulos, así como factores como el estilo de
codificación y la denominación de variables.
Mantenibilidad La mantenibilidad es la capacidad del sistema
para sufrir cambios con cierta facilidad. Estos
cambios podrían afectar los componentes,
servicios, características e interfaces al agregar o
cambiar la funcionalidad, corregir errores y
cumplir con nuevos requisitos comerciales.
Reusabilidad La reutilización define la capacidad de los
componentes y subsistemas de ser adecuados
para su uso en otras aplicaciones y en otros
escenarios. La reutilización minimiza la
duplicación de componentes y también el tiempo
de implementación.
Cualidades en Disponibilidad La disponibilidad define la proporción de tiempo
tiempo de que el sistema está funcional y funcionando. Se
ejecución puede medir como un porcentaje del tiempo de
inactividad total del sistema durante un período
predefinido. La disponibilidad se verá afectada
por errores del sistema, problemas de
infraestructura, ataques maliciosos y carga del
sistema.
Interoperabilidad La interoperabilidad es la capacidad de un
sistema o diferentes sistemas para operar
exitosamente comunicándose e intercambiando
información con otros sistemas externos escritos y
administrados por partes externas. Un sistema
interoperable facilita el intercambio y la
reutilización de información tanto interna como
externamente.
Manejabilidad La manejabilidad define qué tan fácil es para los
administradores de sistemas administrar la
aplicación, generalmente a través de
instrumentación suficiente y útil expuesta para su
uso en sistemas de monitoreo y para depuración
y ajuste del rendimiento.
Desempeño El desempeño es una indicación de la capacidad
de respuesta de un sistema para ejecutar
cualquier acción dentro de un intervalo de tiempo
determinado. Se puede medir en términos de
latencia o rendimiento. La latencia es el tiempo
necesario para responder a cualquier evento. El
rendimiento es la cantidad de eventos que tienen
lugar en un período de tiempo determinado.
Fiabilidad La confiabilidad es la capacidad de un sistema
para permanecer operativo a lo largo del tiempo.
La confiabilidad se mide como la probabilidad de
que un sistema no deje de realizar las funciones
previstas durante un intervalo de tiempo
específico.
Escalabilidad La escalabilidad es la capacidad de un sistema
para manejar aumentos de carga sin impacto en el
rendimiento del sistema o la capacidad de
ampliarse fácilmente.
Seguridad La seguridad es la capacidad de un sistema para
evitar acciones maliciosas o accidentales fuera del
uso diseñado y para evitar la divulgación o
pérdida de información. Un sistema seguro tiene
como objetivo proteger los activos y evitar
modificaciones no autorizadas de la información.
Cualidades del Soportabilidad La soportabilidad es la capacidad del sistema para
sistema proporcionar información útil para identificar y
resolver problemas cuando no funciona
correctamente.
Capacidad de La capacidad de prueba es una medida de qué tan
pruebas fácil es crear criterios de prueba para el sistema y
sus componentes, y ejecutar estas pruebas para
determinar si se cumplen los criterios. Una buena
capacidad de prueba hace que sea más probable
que las fallas en un sistema puedan aislarse de
manera oportuna y efectiva.
Cualidades de Usabilidad La usabilidad define qué tan bien la aplicación
usuario cumple con los requisitos del usuario y del
consumidor al ser intuitiva, fácil de localizar y
globalizar, brindar un buen acceso para usuarios
discapacitados y dar como resultado una buena
experiencia de usuario general.
Las siguientes secciones describen cada uno de los atributos de calidad con más detalle y
brindan orientación sobre los temas clave y las decisiones que debe tomar para cada uno:
• Disponibilidad
• integridad conceptual
• Interoperabilidad
• Mantenibilidad
• Manejabilidad
• Rendimiento
• Fiabilidad
• Reusabilidad
• Escalabilidad
• Seguridad
• Soportabilidad
• Capacidad de pruebas
• Experiencia de usuario/Usabilidad
Disponibilidad (Availability)
La disponibilidad define la proporción de tiempo que el sistema está funcional y
funcionando. Se puede medir como un porcentaje del tiempo de inactividad total del sistema
durante un período predefinido. La disponibilidad se verá afectada por errores del sistema,
problemas de infraestructura, ataques maliciosos y carga del sistema. Las cuestiones clave
para la disponibilidad son:
Interoperabilidad (Interoperability)
La interoperabilidad es la capacidad de un sistema o diferentes sistemas para operar
exitosamente comunicándose e intercambiando información con otros sistemas externos
escritos y administrados por partes externas. Un sistema interoperable facilita el intercambio
y la reutilización de información tanto interna como externamente. Los protocolos de
comunicación, las interfaces y los formatos de datos son las consideraciones clave para la
interoperabilidad. La estandarización también es un aspecto importante a considerar al
diseñar un sistema interoperable.
• Interacción con sistemas externos o heredados que utilizan diferentes formatos de datos.
Considere cómo puede permitir que los sistemas interoperen, mientras evolucionan por
separado o incluso son reemplazados. Por ejemplo, utilice la orquestación con
adaptadores para conectarse con sistemas externos o heredados y traducir datos entre
sistemas; o utilice un modelo de datos canónico para manejar la interacción con una gran
cantidad de formatos de datos diferentes.
• Desenfoque de límites, que permite que los artefactos de un sistema se desactiven en
otro. Considere cómo puede aislar sistemas mediante el uso de interfaces de servicio y/o
capas de mapeo. Por ejemplo, exponer servicios utilizando interfaces basadas en XML o
tipos estándar para admitir la interoperabilidad con otros sistemas. Diseñe los
componentes para que sean cohesivos y tengan un bajo acoplamiento para maximizar la
flexibilidad y facilitar el reemplazo y la reutilización.
• Falta de cumplimiento de las normas. Tenga en cuenta los estándares formales y de facto
para el dominio en el que está trabajando y considere utilizar uno de ellos en lugar de
crear algo nuevo y propietario.
Mantenibilidad (Maintainability)
La mantenibilidad es la capacidad del sistema para sufrir cambios con cierta facilidad. Estos
cambios podrían afectar los componentes, servicios, características e interfaces al agregar o
cambiar la funcionalidad de la aplicación para corregir errores o cumplir con nuevos
requisitos comerciales. La mantenibilidad también puede afectar el tiempo que lleva
restaurar el sistema a su estado operativo después de una falla o de su eliminación para una
actualización. Mejorar la capacidad de mantenimiento del sistema puede aumentar la
disponibilidad y reducir los efectos de los defectos en tiempo de ejecución. La
mantenibilidad de una aplicación suele ser función de sus atributos de calidad generales,
pero existen una serie de cuestiones clave que pueden afectar directamente la
mantenibilidad:
Manejabilidad (Manageability)
La manejabilidad define qué tan fácil es para los administradores de sistemas administrar la
aplicación, generalmente a través de instrumentación suficiente y útil expuesta para su uso
en sistemas de monitoreo y para depuración y ajuste del rendimiento. Diseñe su aplicación
para que sea fácil de administrar, exponiendo suficiente y útil instrumentación para su uso
en sistemas de monitoreo y para depuración y ajuste del rendimiento. Las cuestiones clave
para la manejabilidad son:
Fiabilidad (Reliability)
La confiabilidad es la capacidad de un sistema para continuar operando de la manera
esperada a lo largo del tiempo. La confiabilidad se mide como la probabilidad de que un
sistema no falle y de que realice su función prevista durante un intervalo de tiempo
específico. Las cuestiones clave para la confiabilidad son:
Reusabilidad (Reusability)
La reutilización es la probabilidad de que un componente se utilice en otros componentes o
escenarios para agregar nuevas funciones con pocos o ningún cambio. La reutilización
minimiza la duplicación de componentes y el tiempo de implementación. Identificar los
atributos comunes entre varios componentes es el primer paso en la construcción de
pequeños componentes reutilizables para su uso en un sistema más grande. Las cuestiones
clave para la reutilización son:
• Las aplicaciones no pueden soportar una carga cada vez mayor. Considere cómo puede
diseñar capas y niveles para la escalabilidad, y cómo esto afecta la capacidad de ampliar
o ampliar la aplicación y la base de datos cuando sea necesario. Puede decidir ubicar
capas lógicas en el mismo nivel físico para reducir la cantidad de servidores necesarios
y al mismo tiempo maximizar las capacidades de carga compartida y conmutación por
error. Considere dividir los datos en más de un servidor de bases de datos para
maximizar las oportunidades de ampliación y permitir una ubicación flexible de los
subconjuntos de datos. Evite componentes y subsistemas con estado siempre que sea
posible para reducir la afinidad del servidor.
• Los usuarios sufren retrasos en la respuesta y tiempos de finalización más prolongados.
Considere cómo manejará los picos de tráfico y carga. Considere implementar código
que utilice sistemas adicionales o alternativos cuando detecte una carga de servicio
predefinida o una cantidad de solicitudes pendientes a un sistema existente.
• El sistema no puede poner en cola el exceso de trabajo y procesarlo durante períodos de
carga reducida. Implemente sistemas de comunicación basados en mensajes
almacenados y reenviados o en caché que permitan almacenar las solicitudes cuando el
sistema de destino no esté disponible y reproducirlas cuando esté en línea.
Seguridad (Security)
La seguridad es la capacidad de un sistema para reducir la posibilidad de que acciones
maliciosas o accidentales fuera del uso diseñado afecten al sistema y evitar la divulgación o
pérdida de información. Mejorar la seguridad también puede aumentar la confiabilidad del
sistema al reducir las posibilidades de que un ataque tenga éxito y perjudique el
funcionamiento del sistema. Asegurar un sistema debe proteger los activos y evitar el acceso
no autorizado o la modificación de la información. Los factores que afectan la seguridad del
sistema son la confidencialidad, la integridad y la disponibilidad. Las funciones utilizadas
para proteger los sistemas son autenticación, cifrado, auditoría y registro. Las cuestiones
clave para la seguridad son:
Soportabilidad (Supportability)
La soportabilidad es la capacidad del sistema para proporcionar información útil para
identificar y resolver problemas cuando no funciona correctamente. Las cuestiones clave
para la compatibilidad son:
• Se requiere demasiada interacción (un número excesivo de clics) para una tarea.
Asegúrese de diseñar la pantalla, los flujos de entrada y los patrones de interacción del
usuario para maximizar la facilidad de uso.
• Flujo incorrecto de pasos en interfaces de varios pasos. Considere incorporar flujos de
trabajo cuando corresponda para simplificar las operaciones de varios pasos.
• Los elementos de datos y los controles están mal agrupados. Elija los tipos de control
adecuados (como grupos de opciones y casillas de verificación) y diseñe los controles y
el contenido utilizando los patrones de diseño de interfaz de usuario aceptados.
• La retroalimentación al usuario es deficiente, especialmente en el caso de errores y
excepciones, y la aplicación no responde. Considere implementar tecnologías y técnicas
que proporcionen la máxima interactividad del usuario, como JavaScript asincrónico y
XML (AJAX) en páginas web y validación de entradas del lado del cliente. Utilice técnicas
asincrónicas para tareas en segundo plano y tareas como completar controles o realizar
tareas de larga duración.