MIL-STD-882E System Safety: Hazard-to-Requirement Traceability
Learn more about what MIL-STD-882E System Safety is, how important...
Desarrollar un buen producto no consiste solo en incluir todas las funciones necesarias. También depende de cómo funcionen esas funciones una vez que el producto sale al mercado.
Imagina un equipo que está desarrollando una aplicación web. Han implementado con éxito el sistema de inicio de sesión, pero tarda entre 15 y 20 segundos en cargarse y se bloquea cuando entre 30 y 50 usuarios intentan iniciar sesión al mismo tiempo. Estos problemas no tienen que ver con la falta de funcionalidades del sistema, sino con su rendimiento.
Ahí es donde entran en juego los requisitos no funcionales. Se definen durante la fase de planificación del desarrollo del producto, lo que garantiza la satisfacción del usuario y el éxito empresarial.
Según un estudio realizado por el Instituto Carnegie Mellon, entre el 60 % y el 80 % del coste del desarrollo de productos se debe a las modificaciones posteriores, es decir, a la corrección de errores que surgen debido a requisitos omitidos, especialmente los no funcionales.
En este blog se aborda la definición de los requisitos no funcionales, la distinción entre requisitos funcionales y no funcionales, los tipos más comunes de requisitos no funcionales con ejemplos, y consejos para redactar requisitos no funcionales eficaces.
Los requisitos no funcionales (NFR) son especificaciones que describen las capacidades operativas de un sistema. En términos sencillos, en lugar de definir las características del sistema, los NFR definen cómo debe comportarse el sistema y cuál debe ser su rendimiento en distintos escenarios.
Los NFR se centran en la velocidad, la seguridad, la facilidad de uso y la fiabilidad del sistema, así como en su capacidad para adaptarse a medida que aumenta el número de usuarios. De este modo, ayudan a los desarrolladores a establecer expectativas claras sobre el comportamiento del sistema.
Por ejemplo, una tienda de comercio electrónico podría tener NFR, tales como:
Con unos requisitos no funcionales (NFR) bien definidos, los desarrolladores pueden crear un sistema fiable capaz de satisfacer las expectativas de los usuarios y las partes interesadas. Cuando se ignoran los NFR, los equipos suelen tener dificultades para alcanzar las metas y los objetivos.
El equipo de desarrollo de productos se ocupa principalmente de dos tipos de requisitos: funcionales y no funcionales.
Como su nombre indica, los requisitos funcionales definen las características que debe tener el sistema para satisfacer las necesidades de los usuarios. Un ejemplo de requisito funcional para el sistema de alquiler de coches es: «Los usuarios deben poder comparar varios coches».
Por el contrario, los requisitos no funcionales describen cómo debe comportarse el sistema. En lugar de añadir nuevas funciones, garantizan que el sistema sea accesible para los usuarios en cualquier situación, que sea escalable, que proteja los datos de los usuarios, etc. Por ejemplo, un requisito no funcional en un sistema de alquiler de coches sería: «1 000 usuarios simultáneos deben poder reservar su coche al mismo tiempo».
Veamos con más detalle las diferencias en la tabla siguiente.
Aspecto | Requisito funcional | Requisito no funcional |
|---|---|---|
Objetivo | Lo que debería hacer el sistema | Cómo debería funcionar el sistema |
Enfoque | Funciones y acciones del usuario | Rendimiento, seguridad, fiabilidad, facilidad de uso, etc. |
Definido por | Definido principalmente por los desarrolladores, los usuarios finales y otras partes interesadas. | Lo definen principalmente los diseñadores de sistemas. |
Pruebas | Los casos de prueba funcionales se utilizan para comprobar las características principales del producto. | Las NFR se someten a pruebas mediante diferentes métodos, como las pruebas de rendimiento y de carga. |
Visibilidad | Normalmente visible para el usuario final | Aunque ocurre principalmente entre bastidores, afecta a la experiencia del usuario. |
Consecuencias en caso de no cumplirlo | Es posible que algunas funciones no funcionen, pero el resto del sistema funciona con normalidad. | Es posible que todo el sistema se ralentice o se bloquee. |
Los requisitos no funcionales se agrupan en función de áreas específicas, como el rendimiento, la seguridad, la usabilidad, etc. Los equipos de gestión de requisitos deben comprender bien cada tipo de requisito para garantizar el éxito del proyecto.
Aquí hemos analizado nueve tipos de NFR con ejemplos.
Los requisitos de rendimiento se centran en la velocidad y la eficiencia de cualquier sistema. Definen la rapidez con la que el sistema debe procesar las solicitudes de los usuarios y responder a ellas. Los usuarios suelen sentirse frustrados al utilizar sistemas de bajo rendimiento, lo que da lugar a altas tasas de rebote.
La escalabilidad se refiere a la capacidad del sistema para crecer sin perder rendimiento. Cuando aumenta el número de usuarios del sistema o las solicitudes de procesamiento de datos, un sistema escalable sigue funcionando sin necesidad de una reconstrucción completa del sistema.
Los requisitos de escalabilidad son importantes para las empresas que prevén un crecimiento futuro o picos de tráfico estacionales. Si se ignoran estos requisitos, el sistema podría colapsar al no poder soportar la carga durante los picos de tráfico.
Los requisitos de disponibilidad describen el tiempo durante el cual el sistema debe estar accesible para los usuarios. La alta disponibilidad del sistema reduce considerablemente los riesgos de interrupción del servicio y mejora la confianza de los usuarios. En el caso de algunos sistemas, incluso unos pocos minutos de interrupción pueden suponer la pérdida de millones de dólares, de usuarios y de reputación.
Los requisitos de portabilidad (NFR) se refieren a la facilidad con la que el sistema puede funcionar en distintos entornos, incluidos sistemas operativos, proveedores de servicios en la nube o dispositivos. Un sistema portátil ahorra tiempo y esfuerzo al pasar de la fase de desarrollo a la de producción o al expandirse a nuevas plataformas.
Los requisitos de compatibilidad definen el grado de compatibilidad del sistema con otros sistemas, software o hardware. Esto es importante en entornos en los que el sistema debe conectarse a API, bases de datos, navegadores o servicios de terceros. Una compatibilidad deficiente puede provocar fallos en las funciones, quejas de los usuarios y problemas de integración.
Los requisitos de fiabilidad evalúan la frecuencia con la que el sistema funciona sin fallos, incluso ante situaciones imprevistas. Esto es importante para aplicaciones como el software bancario, los sistemas sanitarios, etc., que la gente utiliza a diario.
Los requisitos no funcionales (NFR) de mantenibilidad definen la facilidad y rapidez con la que se puede actualizar o reparar el sistema. Abarcan el tiempo y los recursos necesarios para mantener el sistema. La mantenibilidad es siempre importante en proyectos a gran escala o en productos sujetos a mejoras constantes.
Los requisitos de seguridad no funcionales definen cómo debe el sistema proteger y salvaguardar los datos confidenciales de los usuarios frente al acceso no autorizado, las brechas de seguridad y los ciberataques. Esto incluye, principalmente, la implementación de mecanismos de autenticación y cifrado para proteger los datos.
La usabilidad se centra en la facilidad con la que los usuarios pueden interactuar con el sistema. Un producto con una alta usabilidad mejora la experiencia del usuario y permite que los nuevos usuarios lo adopten con una formación mínima. Una usabilidad deficiente genera frustración y aumenta los costes de asistencia técnica.
Los equipos de desarrollo de productos se centran principalmente en los requisitos funcionales, pero no prestan atención a los requisitos no funcionales. Los equipos piensan que, si la función funciona, el trabajo está hecho. Sin embargo, no tienen en cuenta el rendimiento, la fiabilidad, la seguridad y otros requisitos no funcionales.
A continuación se explica cómo el hecho de pasar por alto los requisitos no funcionales provocó fallos graves en sistemas reales.
En 2018, Amazon sufrió una importante interrupción del servicio durante el evento Prime Day. El número de usuarios del sitio web aumentó de forma inesperada y el sistema no pudo hacer frente a la demanda. A causa de ello, la página web de Amazon dejó de funcionar y los compradores recibían mensajes de error. Amazon perdió entre 90 y 100 millones de dólares durante esta interrupción, que duró una hora.
Esta interrupción se debió a una gestión deficiente de la escalabilidad. Por lo tanto, el sistema debe estar siempre preparado para adaptarse a cualquier situación y debe estar disponible la mayor parte del tiempo.
En 2012, Knight Capital lanzó el software de negociación sin haberlo sometido a las pruebas adecuadas. A los 45 minutos de su puesta en marcha, el sistema comenzó a realizar operaciones erróneas que provocaron a la empresa unas pérdidas de 440 millones de dólares.
Este fallo del sistema se produjo porque no se comprobó adecuadamente la fiabilidad del software y no existían controles de seguridad para impedir las acciones defectuosas.
El banco TSB del Reino Unido se vio envuelto en graves problemas en 2018 tras trasladar los datos de sus clientes a un nuevo sistema. La migración de datos de la plataforma antigua a la nueva se llevó a cabo con éxito. Sin embargo, a partir de ese momento, muchos clientes no pudieron iniciar sesión, algunos observaron datos incorrectos en su perfil y unos pocos usuarios pudieron ver los datos privados de otras personas. Al final, el banco pagó alrededor de 330 millones de libras esterlinas para solucionar todo y perdió la confianza de sus clientes.
Las causas de este fallo fueron la escasa fiabilidad del sistema y las deficientes medidas de seguridad.
Como se ha comentado anteriormente, los requisitos no funcionales son fundamentales para el éxito de un proyecto. Sin embargo, redactarlos correctamente supone un reto. Muchos equipos cometen errores habituales que pueden provocar retrasos o un mal funcionamiento del sistema más adelante. Los equipos deben seguir las siguientes prácticas recomendadas para evitar esos errores y redactar unos buenos requisitos de software.
Documentar los requisitos no funcionales es importante para garantizar que todos los miembros del equipo y las partes interesadas compartan una visión común de los objetivos del proyecto. Con una documentación clara, los equipos pueden minimizar el riesgo de malentendidos, que pueden dar lugar a costosas repeticiones del trabajo.
A continuación, presentamos algunas de las características principales de Modern Requirements4DevOps que pueden simplificar el proceso de creación de la documentación de requisitos.
Gracias a las funciones mencionadas anteriormente de Modern Requirements4DevOps, los equipos pueden crear documentos de requisitos no funcionales bien estructurados y coherentes. Además, con la ayuda de Copilot4DevOps, los equipos pueden generar documentos precisos a partir de requisitos no funcionales predefinidos en cuestión de segundos.
Los requisitos funcionales definen las características principales del sistema, mientras que los requisitos no funcionales definen las capacidades operativas del sistema, incluyendo el rendimiento, la disponibilidad, la escalabilidad, etc.
Las plantillas de requisitos no funcionales ofrecen una estructura predefinida para definir dichos requisitos. Esto garantiza la coherencia entre todos los requisitos no funcionales.
Sí, Copilot4DevOps permite a los equipos extraer requisitos no funcionales (NFR) a partir de texto sin formato, documentos, diagramas, etc., y guardarlos directamente en el espacio de trabajo de Azure.
Hay muchas herramientas disponibles en el mercado, pero si utilizas Azure DevOps para la gestión de proyectos, Modern Requirements4DevOps puede ser una opción ideal.
El equipo debe establecer puntos de control periódicos para revisar y actualizar los NFR. Los equipos también deben revisarlos tras cada actualización importante del sistema.
✅ Defina, gestione y realice un seguimiento de los requisitos en Azure DevOps
✅ Colabore sin problemas entre equipos regulados
✅ Empiece GRATIS, sin necesidad de tarjeta de crédito
Learn more about what MIL-STD-882E System Safety is, how important...
Check out the importance of ARP4754A, the ARP4754A development cycle,...
Learn more about the importance of NIST RMF, what the...
End-to-end requirements management in Azure DevOps.
AI-powered assistance for DevOps workflows.
Autonomous AI agents for DevOps execution.
Real-time data sync across tools and systems.
Designed to work natively within Azure DevOps, Modern Requirements extends the platform with powerful capabilities that help teams capture, manage, and validate requirements more effectively.