Los requerimientos funcionales declaran los servicios que debe proporcionar el sistema y cómo debe reaccionar a entradas y comportarse en situaciones específicas. Los requerimientos no funcionales son restricciones como tiempos de respuesta y estándares que se aplican generalmente al sistema completo en lugar de características individuales. Ambos tipos de requerimientos son necesarios para describir adecuadamente lo que el sistema debe y no debe hacer.