Los requisitos no funcionales son aquellos requisitos que no están relacionados directamente con la funcionalidad del sistema, sino con aspectos tales como su disponibilidad, usabilidad, seguridad, performance, escalabilidad, etc. En general, se pueden agrupar en requisitos relacionados con el hardware y el software.
Los requisitos relacionados con el hardware son aquellos que se refieren a las características del equipamiento necesario para que el sistema funcione correctamente. Por ejemplo, pueden especificar el tipo de procesador o memoria necesarios, el espacio de disco duro requerido, las interfaces de red necesarias, etc. También se pueden especificar requisitos relacionados con el entorno en el que el sistema será desplegado, como la temperatura o humedad del ambiente, la resistencia a vibraciones o choques, etc.
Por otro lado, los requisitos relacionados con el software son aquellos que se refieren a las características del software necesario para que el sistema funcione correctamente. Por ejemplo, pueden especificar el sistema operativo requerido, el lenguaje de programación necesario, los frameworks o librerías que deben utilizarse, etc. También se pueden especificar requisitos relacionados con la usabilidad del sistema, como la legibilidad de los mensajes o las instrucciones que se muestran al usuario, la facilidad de uso de la interfaz, etc.
En general, los requisitos no funcionales son más difíciles de especificar y evaluar que los requisitos funcionales, ya que suele ser más difícil cuantificarlos. Sin embargo, son igualmente importantes, ya que un sistema que no cumpla con los requisitos no funcionales puede resultar inutilizable, inseguro o ineficiente.