Los requisitos no funcionales (RFN) son especificaciones que dicen cómo debe actuar el software, en contraste con los requisitos funcionales, que describen qué hace el software. Los RFN se pueden agrupar en seis categorías: fiabilidad, seguridad, mantenibilidad, rendimiento, compatibilidad y usabilidad. A continuación se ofrece una descripción de cada uno de estos requisitos no funcionales.
Fiabilidad: la confiabilidad del software se mide en términos de su capacidad para funcionar correctamente en un entorno dado. El software debe ser fiable en condiciones adversas, como un corte de energía, un fallo del sistema, etc. La confiabilidad del software también se mide en términos de su capacidad para recuperarse de errores.
Seguridad: se refiere a la capacidad del software para protegerse contra ataques externos e internos. El software debe ser seguro en cuanto a la privacidad de los datos, la integridad de los datos y la disponibilidad de los datos. También debe ser seguro en cuanto a la protección contra el acceso no autorizado y la ejecución de código malicioso.
Mantenibilidad: se refiere a la capacidad del software para ser mantenido y modificado con el tiempo. El software debe ser mantenible en términos de su estructura, su código y su documentación. La mantenibilidad también se mide en términos de su capacidad para admitir cambios en el entorno, como cambios en las plataformas, cambios en los requisitos, etc.
Rendimiento: el rendimiento del software se mide en términos de su capacidad para procesar datos y responder a las solicitudes de los usuarios en un tiempo determinado. El rendimiento del software también se mide en términos de su capacidad para admitir una carga de trabajo determinada, como un número determinado de usuarios o una cantidad determinada de datos.
Compatibilidad: se refiere a la capacidad del software para funcionar correctamente en un entorno determinado. El software debe ser compatible con otros software, hardware, sistemas operativos, etc. La compatibilidad también se mide en términos de la capacidad del software para funcionar correctamente en un entorno cambiante, como un cambio de sistema operativo o un cambio de hardware.
Usabilidad: se refiere a la capacidad del software para ser usado por los usuarios. El software debe ser fácil de usar, intuitivo y consistente. También debe ser accesible para usuarios con discapacidades. La usabilidad también se mide en términos de la capacidad del software para ser aprendido y utilizado por los usuarios.