A requirement is a specific feature of the new system and will be specified in the third section of the requirements specification. This will become the most referenced part of the specification as, for the most part, it is what stakeholders are most interested in. Requirements can be broken down into the following sections-

  • Interface requirements
  • Functional requirements
  • Performance requirements

A very important point to make here is that a requirement must be measurable. That is we must be able to say, without any doubt, that the requirement has been met. This is important contractually so the developer can be paid but also to help keep the scope of the project in the original boundaries and constraints. Any requirement which is ambiguous may be interpreted by different stakeholders in different ways. This will always lead to problems and potentially conflicts.

As a side note there are a number of languages available which attempt to define requirements specifications in mathematical form to eliminate the uncertainty of the English language. One example of such a language is "Z" (http://en.wikipedia.org/wiki/Z_notation) . The only problem with such languages is that they are incredibly complicated and not widely used for most software projects.