Generalmente hay dos tipos de requerimientos en el desarrollo de software y aplicaciones: funcionales y no funcionales. Los requerimientos funcionales especifican lo que debe hacer un sistema, mientras que los requerimientos no funcionales especifican cómo debe comportarse el sistema.