Los requisitos de software pueden ser clasificados en varios tipos, de acuerdo con diversos criterios. Una forma de clasificación de los requisitos de software se realiza atendiendo al estado de madurez de dichos requisitos. Así, podemos diferenciar entre requisitos funcionales y no funcionales, en función de si su formulación se encuentra en un estado más avanzado o no. Otro criterio de clasificación atiende a la perspectiva del usuario y nos permite diferenciar entre requisitos de usuario y requisitos de sistema. Y por último, un criterio más tecnológico nos permitirá diferenciar entre requisitos de software y requisitos de hardware.
Atendiendo al estado de madurez de los requisitos, éstos pueden ser funcionales o no funcionales. Los requisitos funcionales son aquellos que se encuentran en un estado más avanzado de formulación y se refieren a las funcionalidades que el software debe proporcionar al usuario. En cambio, los requisitos no funcionales se encuentran en un estado menos avanzado de formulación y se refieren a aquellos aspectos del software que no son funcionales, sino que hacen referencia a restricciones que deben cumplirse o a propiedades del software que deben garantizarse.
Otra forma de clasificar los requisitos de software es atiendiendo a la perspectiva del usuario. Los requisitos de usuario son aquellos que se refieren a las necesidades del usuario y que el software debe satisfacer. En cambio, los requisitos de sistema son aquellos que se refieren a las restricciones que deben cumplirse en el desarrollo y puesta en marcha del software y que el usuario no es consciente.
Por último, un criterio de clasificación tecnológico nos permite diferenciar entre requisitos de software y requisitos de hardware. Los requisitos de software hacen referencia a las funcionalidades y restricciones que debe cumplir el software. En cambio, los requisitos de hardware hacen referencia a las especificaciones técnicas del hardware necesario para el desarrollo y puesta en marcha del software.