Los requisitos funcionales definen cómo debe funcionar el software, es decir, qué debe hacer. Los requisitos no funcionales, por otro lado, describen cómo debe funcionar el software, es decir, cómo debe hacerlo. Los requisitos no funcionales pueden ser técnicos, de usabilidad, de fiabilidad, de seguridad, de rendimiento, de escalabilidad, de portabilidad, de mantenibilidad o de coste. Algunos ejemplos de requisitos no funcionales son:
Los requisitos funcionales y no funcionales deben ser detallados y especificados claramente para que el software cumpla con todas las expectativas. Los requisitos deben ser revisados y aprobados por todas las partes interesadas antes de comenzar el desarrollo del software. Si no se hace esto, es probable que el software no se desarrolle de la manera esperada y no cumpla con todos los requisitos.