Los requisitos no funcionales de un sistema, a menudo denominados requisitos de calidad, representan los atributos del sistema que no se relacionan directamente con una función específica. En consecuencia, los requisitos no funcionales no pueden atribuirse a un caso de uso en particular, sino que se deben considerar en todo el alcance del proyecto. Los requisitos no funcionales pueden clasificarse en tres grandes grupos:
Algunos requisitos no funcionales son mutuamente excluyentes. Por ejemplo, un sistema puede ser muy fácil de usar, pero no muy flexible. O puede ser muy flexible, pero requerir una capacitación intensa para usarlo. En otras palabras, los requisitos no funcionales a menudo se presentan como una serie de trade-offs que el equipo de desarrollo debe considerar y resolver.
Los requisitos no funcionales a menudo se dejan de lado en el proceso de desarrollo de software, ya que son más difíciles de cuantificar y, por lo tanto, más difíciles de satisfacer. Sin embargo, los requisitos no funcionales son igualmente importantes que los requisitos funcionales y deben considerarse en todo el alcance del proyecto.