Requirements analysis is critical process that enables the success of a system or software project to be assessed.
Requirements are generally split into two types: Functional and Non-functional requirements.
A functional requirement specifies “What should the software system do?”
Describes the functionality & services provided by a system.
Define a system’s reaction to particular inputs.
Usually easy to define.
A non-functional requirement places constraints on “How should the software system fulfill the functional requirements?”
Defines the system’s properties & constraints.
Applied to a system as a whole.
Define the constraints on the action of the system e.g. timing constraints, development process constraints, etc.
Usually more difficult to define.