Whether expressed as user needs, a list of features, a storyboard, a set of use cases, or another format, requirements must be captured and documented. If you were the sole developer for a system on which you will also be the sole user and maintainer, you might consider designing and coding it immediately after identifying your needs. However, few system developments have such simplicity. More likely, developers and users are mutually exclusive, and stakeholders, users, developers, analysts, testers, architects , and other team members are involved. All parties must reach agreement about what system is being built.
Realities of budgets and schedules make it unlikely that all user needs are going to be satisfied in any particular release. Inevitable communication problems inherent in a multiple-person effort demand that requirements be captured in a way that they can be reviewed and approved and to which all parties can agree and refer.
Traditionally large documents, called requirements specifications , have been built to capture and communicate this information. The requirements specification for a system or application describes the external behavior of that system. But requirements can rarely be defined in a single monolithic document or in a single use-case model for that matter. There are a number of reasons.
In any of these cases, you will need to maintain requirements organized into multiple requirements sets , each set reflecting the requirements for a particular system, a subsystem, or a number of subsystems together, as in the examples below.
The following sections describe what to do in each case. Any or all of these cases can be combined; for example, one set could contain the full set of requirements from which selected subsets are used for specific releases, as well as all business requirements.