How to label software requirements

Requirementsrequirements management

What is a good strategy to label software requirements in an SRS?

Typically outline numbering is employed on headers – but these will renumber if a new heading is inserted in the document. To me it seems like a good idea to aim for a more stable designation for each software requirement. This should make it easier to reference a particular requirement even in the face of an updated SRS.

What are your experiences on this?

Best Answer

One strategy:

  1. Consider the SRS ID as just a number, and don't imply any strong notion of consecutive order (The social security number is a reasonable example.)
  2. Don't recycle numbers. When an ID in a sequence is deleted, mark it "Deleted", "Deprecated", etc. I prefer to keep the requirement text in the deleted item so that I have a running record of the requirement evolution. If you choose to do this, mark the deleted text obviously, for example a strike-out font.
  3. #2 implies that new requirement additions will never occur "in place"; rather, they are always appended to the document.
  4. This strategy can become difficult to organize or cluster hierarchically as changes accumulate, so tag each SRS ID with a meaningful label for searching, i.e. [GUI], [DB], etc.

There are other strategies, such as using dotted decimals to cluster requirements, for example:

  • 1.0 GUI
  • 2.0 DB
  • 3.0 Processing

As you might guess, the respective requirements should be ordered under the top-level number accordingly: 1.1, 1.2...for GUI, 2.1, 2.3, 2.4 for DB, etc. Note that this strategy will need some form of controlled method for managing deletions and additions.

The key thing to enforce in a requirements document: once an ID has been used for a requirement, it cannot be used again different requirement. In other words, if SRS 1234 was used and then deleted, it cannot resurface later. (Allowing it to do so wreaks absolute havoc on requirements traceability over the course of an evolving project.)

Note that virtually any SRS organization/structure will have deficiencies. Pick the one that suits your development environment and your application needs. (For example, the strategies above work reasonably well in highly-controlled development environments, such as those monitored by the FDA or other governmental bodies.)

Finally, consider using a requirements management tool. There are good ones out there (open source to $$$$$) that will take care of all of this for you.

Related Topic