Los requerimientos funcionales son una parte importante de cualquier proyecto de software. Se trata de la parte del proyecto que especifica qué funcionalidades debe tener el software. Es importante tener en cuenta que los requerimientos funcionales no deben confundirse con los requerimientos no funcionales, que especifican aspectos del software tales como su rendimiento, su usabilidad, etc.
Los requerimientos funcionales se pueden clasificar de diversas maneras. Una forma de clasificarlos es según el grado de abstracción en el que se encuentran. Así, podemos distinguir entre requerimientos de alto nivel y requerimientos de bajo nivel. Los requerimientos de alto nivel son aquellos que especifican las funcionalidades del software de manera general, sin entrar en muchos detalles. En cambio, los requerimientos de bajo nivel especifican las funcionalidades de manera más detallada.
Otra forma de clasificar los requerimientos funcionales es según su naturaleza. Así, podemos distinguir entre requerimientos de datos, de procesos y de interfaces. Los requerimientos de datos especifican qué datos serán manipulados por el software, los requerimientos de procesos especifican cómo se manipularán esos datos y los requerimientos de interfaces especifican cómo el software interactuará con el usuario y con otros sistemas.