functional requirements basics