Problem
I need to uniquely identify and label individual functional requirement statements.
Solution
Create an immutable unique label for each requirement statement, using your own naming convention. A useful convention starts with a short mnemonic code, followed by a numerical identifier:
[Mnemonic][Number]
- The mnemonic code can indicate the major grouping or category of requirement or design ("UI", "ADMIN", "PERF")
- Numbering can be hierarchical, or sequential (e.g. "1.2.30.2" or "0010")
When writing new requirements, increment each label by 5 or 10, to leave room for inserting additional requirement statements later on. Start new blocks of numbers (each 100 or 1000) for major new requirement sections. Use sub-numbering (e.g. UI0035-1, UI0035-2) if you decide to re-factor a large requirement statement into smaller atomic statements.
Do not use auto-numbering functions of your word processor, if available. Each identifier should be manually assigned to each statement, and then never changed.
Example
- UI0010
- F1.2.0.3
- ADMIN2500
Discussion
The essential characteristics of requirement numbering are that each label is unique and immutable. As labels are used in connected materials (such as test cases), they must continue to refer to the same requirement for the lifetime of the project or application (whichever is longer). If requirements are cut and pasted into other sections of a physical requirements document, or other document, ensure that the label stays with it.
If you need to amend an existing labelled requirement, perhaps adding additional detail of sub-requirements, you should endeavour to retain the original label attached to the remaining requirement closest to its original sense. Additional sub-requirements can be added below with new labels. You should then manually review any connected materials to see if the use of the original labelled requirement is still correct.
Automatic requirement labelling and tracking is one of the most useful features of requirement authoring tools, especially the ability to automatically track the impact of modifications and deletions.