Responsible, high-quality development of software requirements requires a management process of its own.
A unique requirement identifier is used to refer to a requirement, when creating dependencies, or when exporting and printing documents. By default, ALM itself assigns requirements identifiers of the form R-NNN, where NNN is a number. This identification runs through all documentation entered in the system. It guarantees that the identifier is unique and lets you refer to a requirement unambiguously.
You can define your own scheme for identifying artifacts, different from the one used in the system by default. To do this, open the settings of the "UID" attribute and set a formula there for calculating the default value.
As the formula for calculating the Requirement identifier, write an expression following the example from the description. Here are several variants of custom identification of Requirements:
You can form an identifier using leading zeros; for example, given the expression {Id,6}, the system forms the identifier as 000001, 000002, and so on.
It is convenient to mark requirements that have different purposes with different types. In the application, use filters or grouping to work on different requirement types. Each requirement type can be associated with a default template. When a requirement is created, that template is used as a blank to be filled in.
| Option | Purpose |
|---|---|
| Requirements are implemented | Used in the "Requirements-driven development" scheme. Development tasks (Enhancements) are not created from business requirements. Enhancements are created from functional or system requirements. To avoid misleading users, set the value of this option correctly for different requirement types. |
| Requirements are tested | By analogy with implementing requirements, not every kind of requirement takes part in testing. Set this option for those requirements for which the percentage of test coverage should be calculated. |
| Can be derived | Cause-and-effect links can be established between requirements. Set this option to distinguish which requirement types can be sources (for example, business requirements) and which can be derived (for example, functional requirements). |
| Requirement identification is not used | Some sections of requirement documents are not requirements in substance, but they form important context needed to understand the other requirements. Such sections may be mandatory from the standpoint of the rules for preparing documentation. In the built-in processes, the "General information" type is intended for such requirements. Identification of such requirements is not needed. For example, when exporting to external formats, a requirement ID is not added to these document sections. |
| Is a document heading |
This setting controls how the requirement name is visualized inside a document, and also when exporting to external formats. Requirements of this type are not numbered and are not highlighted with heading styles. In effect, a list of requirements is formed. |
| Child types | You can limit the list of requirement types that can be children of this requirement type. |
| Derived types | You can limit the list of requirement types that can be derived from this requirement type. |
Each requirement type can have its own set of custom attributes.
A requirement, as a project decision (in the business domain or in the technical implementation), passes through several stages of evolution: it is developed (documented), clarified (with designers and testers involved), agreed with the customer, and then implemented in program code.
The lifecycle can differ in different projects or for different requirement types. The project team configures the requirement lifecycle for its project itself. In the "Requirements-driven development" process we have already configured several useful rules, for example:
Synchronous (cascading) changes to the states of parent or child requirements can be used to speed up status management. For example, when approving a document it is enough to approve the root section (the document title) for all of its subsections to be marked as approved as well. Such synchronous operations are configured in the requirement lifecycle using the corresponding system actions. Because this is a bulk operation, the user may get an unexpected result. To warn the user that such operations will run, select the checkbox when adding the system action:
Before a transition is performed or the status is changed, the system warns the user that this system action will be executed.
Requirements and primary requirements also have useful attributes related to the lifecycle:
| Attribute name | Description |
|---|---|
| Lead time (LeadTime) | The time the artifact has been in existence from the moment it was created until the current day, or until work on it is completed. |
| Resolution time (LifecycleDuration) - for primary requirements — Stories, Enhancements, Requests) | The time interval spent working on this artifact. This is controlled by the state setting Exclude time spent in this state from the resolution time. If the checkbox is selected, time in this state is not counted in the resolution time. Accordingly, if the checkbox is cleared, time in this state is counted in the resolution time. |
Traces between requirements are formed by cause-and-effect links and by coverage. Traces are formed while you work on project artifacts. Traces can be created and edited manually on the "Traces" tab.
Traces are used for the following tasks:
A tabular view of dependencies between different types of requirements, for example business and system requirements, is called a traceability matrix. This tool lets you:
The traceability matrix lets you get instant answers to questions such as:
To configure requirement filtering in the Source requirements or Derived requirements columns, use the button with dots.
To assess end-to-end traceability of requirements down and up the requirement levels, use these modules:
There can be many requirement types and documents, which makes the forward and backward traceability matrices harder to use. To configure the matrices, use the view settings button:
View settings:
For example, a new Issue can be linked (traced) to a previously implemented Requirement and thus potentially change it. Or a test scenario (test case) can cover (be traceable to) a functional Requirement.
Traces are created automatically while working on project artifacts, for example during the lifecycle of an Enhancement (or a user story). Or traces are set manually.
In the early stages of a project, creating traces manually, for example between Requirements of different levels (types), requires a large amount of manual labor. On the other hand, project documentation changes continuously, which also leads to the need to add or change traces. To save time and reduce the number of errors in this process, ALM implements an automatic tracing mechanism (auto-traces).
Based on the results of the RAG mechanism, ALM performs automatic selection of traces between project artifacts along the key references: Requirements of Issues, test and operational documentation, and so on.
An auto-trace is not set automatically; it requires validation by the user.
When you click the "add" link, the system displays suggestions for creating auto-traces.
In the modules for working with the main project artifacts, the useful modules "Auto-trace for..." are available, where you can see the full picture of ALM's suggestions for auto-traces:
The "Effort by requirements" report shows planned effort and actual effort, so you can assess budget overrun or, conversely, free capacity. Planned effort (Estimate) is specified for each atomic requirement that will be implemented. Actual effort is calculated by the application from development tasks, testing tasks, and other tasks.
Values on a red background mean the budget has been exceeded; values on a green background mean free capacity is available. Use the report to decide whether requirements can be changed without renegotiating the budget.
You can break planned expenses down by requirement by decomposing requirements into tasks or Enhancements. In that case, the report shows a breakdown of planned effort by type of work.
When you use the "Project finance and budget management" module, you can see this information in terms of the cost of the time planned or spent by a project Participant. Use the "Expenses by requirements" module for this.
When a Baseline is created, the system stores the values of the estimate, the effort, and the cost, so in comparison mode you can see the changes (in parentheses) in these indicators between different versions of the document.