Requerimientos No Funcionales / Requerimientos Cross Funcionales — Comunes

I. N. Palacios
13 min readMar 7, 2022

--

Photo by Aron Van de Pol on Unsplash

¿Qué son los Requerimientos No Funcionales?

Preámbulo

Los requerimientos no funcionales son aquellos aspectos del sistema de Tecnologías de la Información que, si bien no afectan directamente la funcionalidad empresarial de la aplicación, tienen un profundo impacto en la eficiencia y eficacia de los sistemas empresariales para los usuarios finales, así como para las personas responsables de dar soporte a la aplicación. programa.

La definición de estos requisitos es un factor esencial en el desarrollo de una solución total para el cliente que cumpla con los objetivos comerciales. Los requerimientos no funcionales (NFR) se utilizan principalmente para impulsar los aspectos operativos de la arquitectura; en otras palabras, abordar las principales áreas operativas y técnicas del sistema para garantizar la solidez y robustez de la aplicación.

Se pueden usar puntos de referencia o prueba de concepto (POC) para verificar si la implementación cumple con estos requisitos o para indicar si es necesaria una acción correctiva. Idealmente, se debe planificar una serie de pruebas que se correspondan con el cronograma de desarrollo y crezcan en complejidad.

Introduciendo los NFR

Los siguientes indicadores establecen la definición de los NFR:

  • Definir requisitos y restricciones en el sistema de TI.
  • Como base para estimaciones de costos y dimensionamiento temprano del sistema
  • Evaluar la viabilidad del sistema informático propuesto
  • Como factor determinante importante de la arquitectura y diseño de los modelos operativos
  • Como una guía para la fase de diseño para cumplir con NFR, como rendimiento, escalabilidad y disponibilidad

Los NFR para cada uno de los dominios, por ejemplo, escalabilidad, disponibilidad, etc., deben entenderse para facilitar el diseño y desarrollo del modelo operativo de destino. Estos incluyen los servidores, las redes y las plataformas, incluidos los entornos de tiempo de ejecución de la aplicación. Estos son críticos para la ejecución de pruebas comparativas. También afectan el diseño de los componentes técnicos y de aplicación.

Los usuarios finales tienen expectativas sobre la efectividad de la aplicación. Estas características incluyen la facilidad de uso del software, la velocidad, la confiabilidad y la capacidad de recuperación cuando surgen condiciones inesperadas. Los NFR definen estos aspectos del sistema de TI.

Los NFR deben definirse con precisión y esto implica cuantificarlos. Los NFR deben proporcionar medidas que la aplicación debe cumplir. Por ejemplo, la cantidad máxima de tiempo permitido para ejecutar un proceso, la cantidad de horas en un día que una aplicación debe estar disponible, el tamaño máximo de una base de datos en el disco y la cantidad de usuarios simultáneos admitidos son NFR típicos que el software debe implementar.

Hay muchos tipos de requisitos no funcionales y los siguientes son los más comunes para los cuales distinguiremos los atributos clave:

Desempeño

El desempeño es la capacidad de respuesta de la aplicación para realizar acciones específicas en un período de tiempo determinado. El desempeño se califica en términos de rendimiento (throughput) o latencia. La latencia es el tiempo que tarda la aplicación en responder a un evento. El rendimiento (throughput) es el número de eventos sucedidos en un intervalo de tiempo determinado. El desempeño de una aplicación puede afectar directamente su escalabilidad. Mejorar el desempeño de una aplicación a menudo mejora la escalabilidad al reducir la competencia por los recursos compartidos.

Los atributos de desempeño especifican las características respecto a los tiempos de la aplicación. Ciertas características son más sensibles al tiempo que otras; los NFR deben identificar aquellas tareas de software que tienen restricciones en su desempeño. El tiempo de respuesta se relaciona con el tiempo necesario para completar procesos comerciales específicos, por lotes o interactivos, dentro del sistema comercial de destino.

El sistema debe estar diseñado para cumplir con los requisitos de tiempo de respuesta acordados, al mismo tiempo que admite la carga de trabajo definida mapeada contra la línea base estática dada, en una plataforma de sistema que no exceda la utilización indicada.

Los atributos clave son:

  • Rendimiento (Throughput): La capacidad del sistema para ejecutar un número determinado de transacciones dentro de una unidad de tiempo determinada. (TPS)
  • Tiempos de respuesta: La distribución del tiempo que tarda el sistema en responder a la solicitud.

Escalabilidad

La escalabilidad es la capacidad de manejar un aumento en la carga de trabajo sin afectar el desempeño o la capacidad de expandir rápidamente la arquitectura.

Es la capacidad de expandir la arquitectura para dar cabida a más usuarios, más procesos, más transacciones y sistemas y servicios adicionales a medida que cambian los requisitos comerciales y los sistemas evolucionan para satisfacer las futuras demandas comerciales. Esto permite ampliar los sistemas existentes sin reemplazarlos. Esto afecta directamente la arquitectura y la selección de componentes de software y hardware.

La solución debe permitir que el hardware y los servicios y componentes de software implementados se escalen tanto horizontal como verticalmente. El escalado horizontal implica replicar la misma funcionalidad en nodos adicionales; el escalado vertical implica la misma funcionalidad en nodos más grandes y potentes. Las definiciones de escalabilidad miden los volúmenes de usuarios y datos que el sistema debería admitir.

Existen dos técnicas clave para mejorar la escalabilidad tanto vertical como horizontal:

  • El escalado vertical también se conoce como escalado vertical e incluye agregar más recursos como memoria, CPU y disco duro a un sistema.
  • El escalado horizontal también se conoce como escalamiento horizontal e incluye agregar más nodos a un clúster para compartir la carga de trabajo.

Los atributos clave son:

  • Rendimiento: Número máximo de transacciones que su sistema necesita manejar, por ejemplo, mil por día o un millón.
  • Almacenamiento: Cantidad de datos que necesitará almacenar
  • Requisitos de crecimiento: Ejemplo: Crecimiento de datos en los próximos 3 a 5 años

Disponibilidad

La disponibilidad es el marco de tiempo en el que el sistema funciona normalmente y sin fallas. La disponibilidad se mide como el porcentaje del tiempo de inactividad total de la aplicación durante un período de tiempo definido. La disponibilidad se ve afectada por fallas, excepciones, problemas de infraestructura, ataques maliciosos, mantenimiento y actualizaciones.

Es el tiempo de actividad o la cantidad de tiempo que el sistema está operativo y disponible para su uso. Esto se especifica porque algunos sistemas están diseñados con tiempo de inactividad esperado para actividades como actualizaciones de bases de datos y copias de seguridad.

La disponibilidad también transmite la cantidad de horas o días por semana o semanas por año que la aplicación estará disponible para sus clientes finales, así como la rapidez con la que puede recuperarse de fallas. Dado que la arquitectura establece entidades de software, hardware y redes, este requisito se extiende a todas ellas. Las definiciones de disponibilidad, capacidad de recuperación y confiabilidad del hardware miden el tiempo de actividad del sistema.

Por ejemplo, se especifica en términos de tiempo medio entre fallas (Mean Time Between Failures: MTBF).

Los atributos clave son:

  • Disponibilidad: Disponibilidad de la aplicación considerando fines de semana, feriados y tiempos de mantenimiento y fallas
  • Ubicaciones de operación: Ubicación geográfica, requisitos de conexión y si prevalecen las restricciones de la red
  • Requisito fuera de línea: Tiempo disponible para operaciones fuera de línea, incluido el procesamiento por lotes y el mantenimiento del sistema
  • Tiempo entre fallas: Este es el tiempo transcurrido previsto entre fallas inherentes de un sistema durante la operación
  • Recuperabilidad: Tiempo requerido por el sistema para reanudar la operación en caso de falla
  • Resiliencia: Las características de confiabilidad del sistema y los subcomponentes.

Capacidad

Este NFR define las formas en que se espera que el sistema se amplíe aumentando la capacidad, el hardware o agregando máquinas en función de los objetivos comerciales.

La capacidad consiste en entregar la suficiente funcionalidad requerida para los usuarios finales. Suponga por ejemplo la necesidad de que una solicitud de un servicio web para proporcionar 1000 solicitudes por segundo cuando el servidor solo es capaz de 100 solicitudes por segundo, lo que sugiere que la solución pueda no tener éxito. Si bien esto suena como un problema de disponibilidad, ocurre porque el servidor no puede manejar la capacidad requerida.

Es posible que un solo nodo no pueda proporcionar suficiente capacidad, y es necesario implementar varios nodos con una configuración similar para cumplir con los requisitos de capacidad de la organización. La capacidad como posibilidad de identificar un nodo fallido y reiniciarlo en otra máquina o VM es un NFR.

Los siguientes atributos son clave:

  • El rendimiento es la cantidad de transacciones máximas que el sistema necesita manejar
  • El almacenamiento es el volumen de datos que el sistema puede persistir en tiempo de ejecución en el disco y se relaciona con la memoria/disco
  • Requisitos de crecimiento año tras año (usuarios, procesamiento y almacenamiento)
  • Las proyecciones de crecimiento del canal electrónico
  • Diferentes tipos de cosas (por ejemplo, actividades o transacciones admitidas, etc.)
  • Para cada tipo de transacción, volúmenes por hora, día, semana, mes, etc.
  • Durante el momento específico del día (por ejemplo, en el almuerzo), semana, mes o año, los volúmenes son significativamente más altos
  • Crecimiento esperado del volumen de transacciones y volúmenes adicionales que podrá manejar

Seguridad

La seguridad es la capacidad de una aplicación para evitar incidentes y eventos maliciosos fuera del uso del sistema diseñado y evitar la divulgación o pérdida de información. Mejorar la seguridad aumenta la confiabilidad de una aplicación al reducir la probabilidad de que un ataque tenga éxito y perjudique las operaciones. Agregar controles de seguridad protege los activos y evita el acceso no autorizado y la manipulación de información crítica. Los factores que afectan la seguridad de una aplicación son la confidencialidad y la integridad. Los controles de seguridad clave utilizados para proteger los sistemas son la autorización, la autenticación, el cifrado, la auditoría y el registro (logging).

La definición y el monitoreo/seguimiento de la eficacia en el cumplimiento de los requisitos de seguridad del sistema, por ejemplo, para evitar daños financieros en los sistemas contables, es fundamental. Los requisitos de integridad restringen el acceso a la funcionalidad o los datos a determinados usuarios y protegen la privacidad de los datos introducidos en el software.

Los atributos clave son:

  • Autenticación: identificación correcta de las partes que intentan acceder a los sistemas y protección de los sistemas de partes no autorizadas
  • Autorización: Mecanismo requerido para autorizar a los usuarios a realizar diferentes funciones dentro de los sistemas
  • Cifrado (datos en reposo o datos en vuelo): Todas las comunicaciones externas entre el servidor de datos y los clientes deben estar cifradas
  • Confidencialidad de los datos: Todos los datos deben estar clasificados, marcados, almacenados y protegidos
  • Cumplimiento: El proceso para confirmar el cumplimiento de los sistemas con los estándares y políticas de seguridad de la organización.

Mantenibilidad

La mantenibilidad es la capacidad de cualquier aplicación para pasar por modificaciones y actualizaciones con cierto grado de facilidad. Este es el grado de flexibilidad con el que se puede modificar la aplicación, ya sea para corregir errores o para actualizar la funcionalidad. Estos cambios pueden afectar cualquiera de los componentes, servicios, funcionalidades o interfaces en el panorama de la aplicación mientras se modifican para corregir errores o cumplir con los requisitos comerciales cambiantes.

Este es también el grado de tiempo que lleva restaurar el sistema a su estado normal luego de una falla o defecto. Mejorar la capacidad de mantenimiento puede mejorar la disponibilidad y reducir los defectos de tiempo de ejecución. La capacidad de mantenimiento de una aplicación depende de los atributos de calidad generales.

Es fundamental ya que una gran parte del presupuesto de TI se gasta en el mantenimiento de los sistemas. Cuanto más mantenible sea un sistema, menor será el costo total de propiedad.

Los atributos clave son:

  • Conformidad con los estándares de diseño, estándares de codificación, mejores prácticas, arquitecturas de referencia y marcos.
  • La flexibilidad es el grado en que el sistema está destinado a apoyar el cambio.
  • El soporte de lanzamiento es la forma en que el sistema admite la introducción del lanzamiento inicial, los lanzamientos por etapas y los lanzamientos futuros.

Manejabilidad

La manejabilidad es la facilidad con la que los administradores pueden administrar la aplicación, a través de instrumentación útil expuesta para el monitoreo.

Es la capacidad del sistema, o del grupo del sistema, para proporcionar información clave al equipo de operaciones y soporte para poder depurar, analizar y comprender la causa raíz de las fallas. Se ocupa del cumplimiento/gobernanza de los marcos y políticas del dominio.

La clave es diseñar una aplicación que sea fácil de administrar, exponiendo instrumentación útil para monitorear los sistemas y comprender la causa de las fallas.

Los atributos clave son:

  • El sistema debe mantener la trazabilidad total de las transacciones.
  • Los objetos comerciales y los campos de la base de datos son parte de la auditoría
  • Marcas de tiempo de usuario y transaccionales.
  • Las características del archivo incluyen tamaño anterior, tamaño posterior y estructura
  • Obtener eventos y alertas a medida que se superan los umbrales (por ejemplo, memoria, almacenamiento o procesador)
  • Administrar aplicaciones de forma remota y crear nuevas instancias virtuales con solo hacer clic en un botón
  • Tablero gráfico enriquecido para todas las métricas de aplicaciones clave y KPI

Confiabilidad

La confiabilidad es la capacidad de la aplicación para mantener su integridad y veracidad durante un período de tiempo y también en caso de fallas o excepciones. Se mide como la probabilidad de que el software no falle y siga funcionando durante un intervalo de tiempo definido.

También especifica la capacidad del sistema para mantener su rendimiento durante un período de tiempo. El software no confiable es propenso a fallas y algunos procesos pueden ser más sensibles a las fallas que otros, porque es posible que dichos procesos no puedan recuperarse de una falla o excepción.

Los atributos clave son:

  • La característica de un sistema para realizar sus funciones bajo condiciones establecidas durante un período de tiempo específico
    tiempo medio de recuperación; tiempo disponible para volver a poner el sistema en línea
  • Tiempo medio entre fallos; umbral aceptable para el tiempo de inactividad
    La integridad de datos también se conoce como integridad referencial en tablas e interfaces de bases de datos.
  • Integridad de la aplicación e integridad de la información durante las transacciones
  • Captura de fallas (E/S), manejo de fallas y recuperación

Extensibilidad

La extensibilidad es la capacidad de un sistema para adaptarse a cambios futuros a través de una arquitectura, un diseño o una implementación flexibles.

Las aplicaciones extensibles tienen una resistencia excelente, lo que evita los costosos procesos de adquisición de aplicaciones grandes e inflexibles y su reorganización en niveles debido a cambios en las necesidades comerciales. La extensibilidad permite a las organizaciones aprovechar las oportunidades y responder a los riesgos y, si bien existe una diferencia significativa, la extensibilidad a menudo se mezcla con la modificabilidad. La modificabilidad significa que es posible cambiar el software, mientras que la extensibilidad significa que el cambio se ha planificado y se realizará sin esfuerzo. La adaptabilidad a veces se confunde erróneamente con la extensibilidad. Sin embargo, la adaptabilidad se ocupa de cómo se gestionan y gobiernan las interacciones del usuario con el sistema.

La extensibilidad permite que un sistema, personas, tecnología, información y procesos trabajen juntos para lograr los siguientes atributos clave:

  • Manejar nuevos tipos de información
  • Administrar entidades comerciales nuevas o modificadas
  • Consumir o proporcionar nuevas fuentes de datos

Recuperación

En el caso de una calamidad natural, por ejemplo, una inundación o un huracán, toda la instalación donde se aloja la aplicación puede volverse inoperable o inaccesible. Las aplicaciones críticas para el negocio deben tener una estrategia para recuperarse de tales desastres dentro de un marco de tiempo razonable. La solución que implementa varios procesos debe integrarse con el plan de recuperación ante desastres de la empresa existente. Los procesos deben analizarse para comprender la criticidad de cada proceso para el negocio, el impacto de la pérdida para el negocio en caso de no disponibilidad del proceso. Sobre la base de este análisis, se deben desarrollar los procedimientos de desastre apropiados y se deben delinear los planes. Como parte de la recuperación ante desastres, las copias de seguridad electrónicas de los datos y los procedimientos deben mantenerse en la ubicación de recuperación y deben poder recuperarse dentro de los plazos apropiados para la restauración de la función del sistema. En el caso de una criticidad alta, se debe implementar/desplegar la replicación en tiempo real en un sitio espejo.

Los atributos clave son:

  • Proceso de recuperación: Objetivos de tiempo de recuperación (RTO) y Objetivos de punto de recuperación (RPO)
  • Tiempo de restauración: Tiempo necesario para cambiar al sitio secundario cuando falla el principal
  • RPO/tiempo de copia de seguridad: Tiempo que se tarda en hacer una copia de seguridad de sus datos
  • Frecuencias de copia de seguridad: Frecuencia de copia de seguridad de los datos de transacción, datos de configuración y código

Interoperabilidad

La interoperabilidad es la capacidad de intercambiar información y comunicarse con aplicaciones y sistemas internos y externos.

Los sistemas interoperables facilitan el intercambio de información tanto interna como externamente. Los formatos de datos, los protocolos de transporte y las interfaces son los atributos clave para diseñar sistemas interoperables. La estandarización de los formatos de datos, los protocolos de transporte y las interfaces es el aspecto clave a tener en cuenta al diseñar un sistema interoperable.

La interoperabilidad se logra a través de:

  • Publicación y descripción de interfaces.
  • Describir la sintaxis utilizada para comunicarse.
  • Describir la semántica de la información que produce y consume.
  • Aprovechar los estándares abiertos para comunicarse con sistemas externos
  • Estar débilmente acoplado con sistemas externos

Los atributos clave son:

  • Compatibilidad con aplicaciones compartidas: Otros sistemas con los que necesita integrarse
  • Compatibilidad con aplicaciones de terceros: Otros sistemas con los que tiene que convivir amistosamente
  • Compatibilidad con varios sistemas operativos: Diferentes compatibilidades de sistemas operativos
  • Compatibilidad en diferentes plataformas: Plataformas de hardware en las que necesita trabajar

Usabilidad

La usabilidad mide características como la consistencia y la estética en la interfaz de usuario. La consistencia es el uso constante de mecanismos empleados en la interfaz de usuario, mientras que la estética se refiere a la calidad visual y artística de la interfaz de usuario.

Es la facilidad con la que los usuarios operan el sistema y hacen un uso productivo de él. La usabilidad se analiza en relación con las interfaces del sistema, pero también se puede aplicar a cualquier herramienta, dispositivo o sistema enriquecido.

Esto aborda los factores que establecen la capacidad del software para ser entendido, utilizado y aprendido por los usuarios previstos.

Las interfaces de la aplicación deben diseñarse pensando en los usuarios finales para que sean intuitivas de usar, estén localizadas, brinden acceso a usuarios con capacidades diferentes y brinden una excelente experiencia de usuario en general.

Los atributos clave son:

  • Estándares de apariencia: diseño y flujo, densidad de elementos de pantalla, métodos abreviados de teclado, metáforas de interfaz de usuario y colores
  • Requisitos de localización/internacionalización: teclados, tamaños de papel, idiomas, ortografía, etc.
  • Almacenamiento: cantidad de datos que necesitará almacenar
    Requisitos de crecimiento: crecimiento de datos en los próximos 3 a 5 años

Sigan creando 😎

--

--

I. N. Palacios

Enterprise Architect with 15+y in the use of languages and platforms, also 5+y designing tech solutions for finance, retail and e-commerce. SOA, MSA, EDA, Cloud