NFRUn requisito no funcional (NFR) especifica los criterios que se deben usr para juzgar el funcionamiento de un sistema (operation of a system), en lugar de un comportamientos específico (specific behavior). En general, los requisitos funcionales definen lo que el sistema debería de hacer, mientras que los requisitos no funcionales verifican cómo un sistema debería de ser. Requisitos no funcionales son a menudo llamados las “cualidades de un sistema”. Puede dividirse en dos categorías:

1. Execution qualities: como por ejemplo la seguridad y facilidad de uso, que son observables en tiempo de ejecución.
2. Evolution qualities, como por ejemplo el mantenibilidad, extensibilidad y escalabilidad, que están más vinculados a la estructura del sistema de software.


Algunos ejemplos de requerimientos no funcionles son: Accesibilidad, Auditoría y control, Disponibilidad, Copia de seguridad, Capacidad actual y previsiones, Certificación, Recuperación de Desastres, Eficiencia (consumo de recursos para la carga dada), Eficacia (resultante de rendimiento en relación con el esfuerzo), Extensibilidad, Interoperabilidad, Mantenimiento, Operatividad, Rendimiento / Tiempo de respuesta (véase el rendimiento de Ingeniería), Portabilidad, Recuperación, Fiabilidad (por ejemplo, Tiempo medio entre fallos – MTBF), Las limitaciones de recursos (la velocidad del procesador, memoria, espacio en disco, ancho de banda de red etc), Tiempo de respuesta, Robustez, Escalabilidad (horizontal, vertical), Seguridad, Estabilidad, Seguridad, testeabilidad…

Una buena definición de requirimientos no funcionales (NFR) es tán importante como los requisitos funcionales. Deben de ser apropiadamente definidos, analizados y trazados.