Key points
Requirements set out what the system should do and define
constraints on its operation and implementation.
Functional requirements set out services the system should
provide.
Non-functional requirements constrain the system being
developed or the development process.
User requirements are high-level statements of what the system
should do.
User requirements should be written in natural language, tables
and diagrams.
System requirements are intended to communicate the functions
that the system should provide.
System requirements may be written in structured natural
language, a PDL or in a formal language.
A software requirements document is an agreed statement of
the system requirements.