In principle, requirements should state what the
system should do and the design should describe
how it does this.
In practice, requirements and design are
inseparable.
a system architecture may be designed to structure
the requirements.
The system may inter-operate with other systems
that generate design requirements.
The use of a specific design may be a domain
requirement.
Ambiguity.
The readers and writers of the requirement must
interpret the same words in the same way. NL is
naturally ambiguous so this is very difficult.
Over-flexibility
the same thing may be said in a number of
different ways in the specification.
lack of modulations
structures are inadequate to structure system
requirements.