atributos de Calidad en Arquitectura de Software

Imagen 1. Juego Monument Valley

Continuemos investigando la Arquitectura de software. Consideramos quién es un Arquitecto de Software, qué tipos de Arquitectos de Software existen y qué debe hacer el arquitecto al comienzo de un proyecto. Cuando se identifican las partes interesadas y se recopilan los requisitos, surge la pregunta de qué hacer a continuación. Una vez que se formulan los requisitos funcionales, o se encuentra la respuesta a la pregunta «QUÉ debe hacer el sistema», el arquitecto de software comienza a buscar la respuesta a la pregunta «CÓMO debe funcionar el sistema».»Los requisitos no funcionales ayudan en ese caso.

  1. El Camino para Convertirse en Arquitecto de Software
  2. Partes interesadas en Arquitectura de Software
  3. Tipos de Arquitectos de Software
  4. Atributos de calidad en Arquitectura de Software
  5. Documentación en Arquitectura de Software
  6. Certificados en Arquitectura de Software
  7. Libros en Arquitectura de Software
  8. Hoja de trucos para el diseño del sistema

¿Cuáles son los requisitos no funcionales?

Los requisitos no funcionales (NFRs) definen los criterios que se utilizan para evaluar todo el sistema, pero no para un comportamiento específico, y también se denominan atributos de calidad y se describen en detalle en especificaciones arquitectónicas.

Todos los NFR se pueden dividir en dos categorías principales:

  • NFR que afectan el comportamiento del sistema, el diseño y la interfaz de usuario durante el trabajo.
  • NFR que afectan al desarrollo y soporte del sistema.

Una situación en la que el sistema tiene la combinación deseada de atributos de calidad, por ejemplo, de usabilidad y rendimiento o fiabilidad, muestra el éxito de la arquitectura y la calidad del software. Al diseñar para cumplir con cualquier requisito, es esencial considerar el impacto en otros atributos y encontrar compromisos entre los requisitos. Junto con esto, el valor o prioridad de cada atributo difiere de un sistema a otro. Este artículo no cubre todos los atributos existentes, pero los cubiertos pueden ser un buen comienzo para diseñar su sistema.

atributos de Calidad tipos (ISO/IEC FCD 25010 diagrama)

considerar los tipos de atributos de calidad, se puede utilizar un diagrama de ISO 25010:

Imagen 2. Diagrama ISO / IEC FCD 25010

Esta norma describe los atributos de calidad de un producto de software. A continuación, veremos qué significa exactamente cada atributo individualmente.

Rendimiento de la muestra la respuesta del sistema para la realización de determinadas acciones durante un período determinado.

Hay dos maneras de medir el rendimiento:

  • Latencia: Tiempo dedicado a responder a un evento
  • Capacidad de canal. El número de eventos que ocurren en un momento determinado.

En la práctica, los posibles indicadores de rendimiento incluyen, por ejemplo:

  • Número medio / máximo de usuarios del sistema por unidad de tiempo.
  • Tiempo medio de carga de la página.
  • Tiempo medio de ejecución del método.

Aquí puede encontrar números de latencia interesantes que todos los desarrolladores deben conocer.

Los problemas de rendimiento a menudo se convierten en problemas que pueden afectar a todo, desde la capacidad del servidor o la forma en que desarrolla su front-end hasta la eficiencia de las consultas de base de datos o la capacidad de los canales de comunicación.

El rendimiento casi siempre se incluye en la lista de atributos de calidad críticos que el arquitecto debe considerar, ya que afecta a todo el sistema y puede afectar a muchas partes de la solución arquitectónica. Por lo tanto, en Internet, puede encontrar una gran cantidad de ejemplos de cómo lidiar con problemas de rendimiento.

la Interoperabilidad es un atributo del sistema o parte del sistema que es responsable de su operación y la transmisión de los datos y su intercambio con otros sistemas externos. Un sistema bien diseñado facilita la integración con sistemas de terceros. Para mejorar la interoperabilidad, puede utilizar interfaces externas bien diseñadas, sistemas de estandarización, etc.

Naturalmente, hay muchos problemas para la interacción:

  • Sistemas externos obsoletos.
  • Diferentes formatos de datos en sistemas externos similares.
  • Diferentes versiones de la API en sistemas externos.
  • Compatibilidad con versiones anteriores de la API para la integración.
  • Mala calidad y falta de estándares de los sistemas externos.

La interoperabilidad no se puede ignorar. En el mejor de los casos, tendrá que crear capas adicionales para la API de interacción. En el peor de los casos, será necesario reconstruir todo el sistema.

La usabilidad es uno de los atributos más esenciales, ya que, a diferencia de otros atributos, los usuarios pueden ver directamente qué tan bien funciona este atributo del sistema. Uno de los problemas críticos de la usabilidad es demasiada interacción o demasiadas acciones necesarias para realizar una tarea. Las secuencias incorrectas de pasos en interfaces de varias etapas también son un problema de usabilidad. Los elementos de datos y los controles pueden diseñarse no de acuerdo con los patrones aceptados de experiencia del usuario, lo que también complica la interacción. Por ejemplo, si está desarrollando una aplicación iOS, es importante utilizar las directrices de Apple o las directrices de Microsoft para aplicaciones de escritorio de Windows.

Ejemplos de indicadores importantes para este atributo son:

  • Lista de dispositivos, versiones de SO, resoluciones de pantalla y navegadores compatibles y sus versiones.
  • Elementos que aceleran la interacción del usuario, como «teclas de acceso rápido», «listas de sugerencias», etc.
  • El tiempo promedio que un usuario necesita para realizar acciones individuales.
  • Apoyo a la accesibilidad para personas con discapacidad.

la Fiabilidad es un atributo del sistema responsable de la capacidad para seguir operando bajo condiciones predefinidas. La mayoría de las veces, el sistema falla debido a la inaccesibilidad de elementos externos, como bases de datos, sistemas y conexiones de red.

La disponibilidad forma parte de la fiabilidad y se expresa como la relación entre el tiempo del sistema disponible y el tiempo de trabajo total. Los indicadores importantes para este atributo son:

  • Disponibilidad.
  • Tiempo de inactividad planificado.
  • El tiempo necesario para actualizar el software, etc.

La disponibilidad a menudo se expresa en el número de nueves después de la coma, es decir, nueves de disponibilidad (horas / minutos / segundos):

  • 2 9 (99%) = hasta 87,6 h / 5256,0 m / 315360,0 segundos de tiempo de inactividad por año.
  • 3 9’s (99,9%) = hasta 8,76 h / 525,6 m / 31536,0 segundos de tiempo de inactividad por año.
  • 4 9’s (99,99%) = hasta 0,876 h / 52,5599999999999995 m / 3153,6 segundos de tiempo de inactividad por año.
  • 5 9’s (99,999%) = hasta 0,0876 h / 5,256 m / 315,36 segundos de tiempo de inactividad por año.
  • 6 9’s (99,9999%) = hasta 0,00876 h / 0,5256000000000001 m / 31.536 segundos de inactividad al año.
  • 7 9’s (99,99999%) = hasta 8,76 E-4h / 0,05256 m / 3,1536 segundos de tiempo de inactividad por año.

Por ejemplo, la disponibilidad es uno de los criterios principales para la clasificación por niveles de los centros de datos en los EE.

la Seguridad es responsable de la capacidad del sistema para reducir la probabilidad de maliciosa o accidental de las acciones, así como la posibilidad de robo o pérdida de información. Se utilizan varias medidas para proteger los sistemas: autenticación, cifrado, auditoría y otros.

Los ejemplos de este atributo en el trabajo del sistema son:

  • La capacidad del sistema para detectar ataques DDoS y responder a ellos.
  • Restricciones de acceso de usuario por autenticación / autorización.
  • Prevención de inyección SQL.
  • Cifrado de contraseñas y contenido.
  • conexión Segura.

la Mantenibilidad es la capacidad del sistema para soportar los cambios. Los cambios pueden estar relacionados con nuevos requisitos de negocio o la corrección de errores antiguos y afectar a componentes del sistema o métodos separados. Además, la capacidad de mantenimiento afecta el tiempo necesario para restaurar el sistema después de un fallo. Las dependencias excesivas entre componentes tienen un efecto muy negativo en la capacidad de mantenimiento. En la programación, hay una noción de código espagueti anti-patrón, lo que significa coherencia excesiva en el código. En arquitectura, no existe tal cosa, pero la arquitectura está muy cerca de la programación en este sentido. Es debido al atributo de mantenibilidad que han aparecido conceptos como separación de responsabilidades, arquitecturas de microservicios y modularidad. Al mismo tiempo, este atributo afecta no solo a los procesos de desarrollo, sino también a los procesos de gestión (por ejemplo, dividir los equipos en partes relacionadas con el producto).

Modificabilidad determina cuántos común la necesidad de cambios al sistema para realizar cambios en cada elemento. Lo ideal es el caso en que cada cambio afecta solo a un elemento.

La capacidad de prueba muestra lo bien que el sistema permite realizar pruebas, de acuerdo con criterios predefinidos. Además del rendimiento de las pruebas, la capacidad de prueba permite dividir el sistema en subsistemas de manera efectiva.

Los principales indicadores para este atributo son:

  • Porcentaje de cobertura con pruebas modulares, de integración o unitarias.
  • La lista final de entornos de prueba requeridos, así como la lista final de enfoques utilizados para las pruebas (manual/automático, regresión, integración, etc.).

Otros atributos fundamentales de calidad no están cubiertos por la norma, pero no se pueden ignorar en este artículo.

La escalabilidad es la capacidad del sistema para manejar aumentos de carga sin disminuir el rendimiento, o la posibilidad de aumentar rápidamente la carga.

Hay dos maneras de mejorar la escalabilidad:

  • Vertical: Para aumentar, agregamos más recursos, como memoria, discos o procesadores en un solo sistema.
  • Horizontal: Aumentamos el número de unidades de cómputo y dividimos la carga.

Los indicadores clave para medir este atributo son:

  • Si el sistema permite el escalado horizontal.
  • El tiempo necesario para aumentar el escalado, en segundos.
  • Limitaciones de escalado: el número de servidores o la capacidad de red.
  • Posibilidad de escalar: el aumento en el número de transacciones o la cantidad de contenido.

Y esto es solo una pequeña parte de los indicadores que debe seguir al diseñar. La escalabilidad es uno de los atributos más esenciales, sin importar cuál sea la etapa del proyecto.

la Reutilización es una oportunidad de la utilización de un componente o sistema en otros componentes/sistemas con pequeño o ningún cambio. La segregación de responsabilidades, la modularización, la disminución de la copia y la pasta se basan en la reutilización. Copiar código, o peor, usar diferentes componentes para el mismo resultado en diferentes módulos, es uno de los mayores problemas de reutilización.

la Compatibilidad es la capacidad del sistema para proporcionar información útil para la identificación y solución de problemas. Los principales problemas para garantizar la compatibilidad se pueden abordar con los siguientes medios:

  • Sin diagnóstico: Cómo se controla la actividad y el rendimiento del sistema. Incluye varios tipos de registro.
  • Sin herramientas para solucionar problemas: Esto incluye copias de seguridad, varios sistemas para crear instantáneas del sistema y herramientas para auditar el sistema. Cuando el sistema falla, siempre es más agradable esperar un reinicio automático que resolver el problema manualmente.
  • Sin comprobación de estado: Esto incluye una variedad de sistemas para medir el tiempo de compilación, el tiempo de implementación, el tamaño de la base de datos o el tamaño de la aplicación móvil.

En la mayoría de los casos, estos no se consideran inicialmente en empresas de nueva creación o pequeños proyectos. El costo de mantener el atributo de compatibilidad es alto, y el resultado solo es visible a gran escala. Sin embargo, con el crecimiento del equipo y del producto, este atributo se convierte en uno de los más importantes.

Este artículo se divide en dos partes. En la segunda parte, consideremos los enfoques sobre cómo priorizar los atributos de calidad y respondamos a la pregunta de por qué es tan importante elegir las prioridades correctas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.