Los requisitos no funcionales (NFR, non-functional requirements) son características no funcionales de un sistema de TI, como el rendimiento, la seguridad, la resistencia a fallos, la escalabilidad y la mantenibilidad. Juegan un papel clave en el diseño de la arquitectura, a menudo definiendo soluciones técnicas e infraestructura tanto como los requisitos funcionales.
Por ejemplo: si un sistema empresarial requiere alta disponibilidad (uptime > 99.99%), el arquitecto debe implementar mecanismos de conmutación por error (failover), replicación de datos y balanceo de carga. De lo contrario, se puede perder el valor comercial.
Ejemplo: cómo NFR influye en la arquitectura (en Python, FastAPI):
from fastapi import FastAPI from starlette.middleware.cors import CORSMiddleware app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Este enfoque es necesario si entre los NFR hay un requisito de soporte para la integración con frontends externos
Características clave:
¿Se pueden agregar NFR en etapas tardías del desarrollo sin consecuencias?
No, los NFR críticos deben tenerse en cuenta desde el principio, de lo contrario se requerirá una reestructuración radical de la arquitectura.
¿La responsabilidad por cumplir con los NFR recae únicamente en el arquitecto?
Incorrecto. Esta es un área de responsabilidad de todo el equipo de proyecto, desde analistas hasta devops.
¿Se puede considerar la escalabilidad y la seguridad únicamente como tareas de infraestructura?
No. La escalabilidad y la seguridad son tanto tareas arquitectónicas como de infraestructura (por ejemplo, la separación de datos por usuario se implementa a nivel de servicios).