The Requirements Management Plan contains information which may be covered to a greater or lesser extent by other
plans.
See Work Product: Requirements Management Plan, Tailoring for tailoring
guidance.
As described in the Whitepaper: Applying Requirements Management with Use Cases, requirements management
is important to ensuring project success. The most commonly cited causes of project failure include:
-
Lack of user input
-
Incomplete requirements
-
Changing requirements
Requirements errors are also likely to be the most common class of error, and are the most expensive to fix.
Having the right relationships with stakeholders can help with these problems. The stakeholders are a key source
of input for defining requirements and understanding priorities of requirements. Many stakeholders, however, lack
the insight into the cost and schedule impacts of requested features, and therefore the development organization must
manage stakeholders expectations.
Establishing stakeholder relationships includes defining:
-
Responsibilities of the stakeholders: Will staff be available on site for consulting? At prearranged times?
-
Visibility of stakeholders into project work products: Open visibility to all work products? Visibility only at
scheduled milestones?
Describe traceability items, and define how they are to be named, marked, and numbered. See Concept: Requirement Types, and Concept: Traceability.
The most important traceability items are listed in Task: Develop Requirements Management Plan.
A typical traceability, with a limited set of essential work products, is described in Task: Develop Requirements Management Plan.
In addition to identifying the traceability links, you should specify the cardinality of the links. Some common
constraints are:
-
Each approved product feature must be linked to one or more supplemental requirements, or one or more use cases, or
both.
-
Each supplemental requirement and each use case section must be linked to one or more test cases.
A more detailed discussion of traceability is provided in the white paper Traceability Strategies for Managing Requirements With Use Case.
The following are some example attributes which you may wish to select from , organized using the requirements types
identified in Task: Develop Requirements Management Plan.
Stakeholder Need
Source: The stakeholder originating the requirement. (This may also be implemented as a traceability to a
"Stakeholder" traceability item.
Contribution: Indicates the problem contribution to the overall business opportunity or problem being
addressed by the project. Percentage (0 to 100%). All contributions should sum to no greater than 100%. Below is an
example Pareto Diagram showing the contribution for each of several Stakeholder Needs.
Features, Supplementary Requirements, and Use Cases
Status: Indicates whether the requirement has been reviewed and accepted by the "official channel". Example
values are Proposed, Rejected, Approved.
This may be a contractual status, or a status set by a working group capable of making binding decisions.
Benefit: The importance from the stakeholder(s) viewpoint.
-
Critical (or primary). These have to do with the main tasks of the system, its basic function, the
functions for which it is being developed. If they are missing the system fails to fulfill its primary mission.
They drive the architectural design and tend to be the most frequently exercised use cases.
-
Important (or secondary). These have to do with the support of the system's functions, such as
statistical data compilation, report generation, supervision, and function testing. If they are missing the
system can still (for a while) fulfill its fundamental mission, but with degraded service quality. In modeling,
less importance will be attached to them than to critical use cases
-
Useful (nice to have). These are "comfort" features, not linked to the system's primary mission but that
help in its use or market positioning.
Effort: Estimated effort days to implement the requirement.
E.g. This could be categories such as Low, Medium, High. E.g. Low = < 1 day, Medium = 1-20 days, High = >20
days.
In defining Effort, it should be clearly indicated which overheads (management effort, test effort, requirements
effort etc.) is included into the estimate.
Size: Estimated non-comment source lines of code (SLOCs), excluding any test code.
You may wish to distinguish between new and reused SLOCs, in order to better compute cost estimates.
Risk: % likelihood that implementation of the requirement will encounter
significant undesirable events such as schedule slippage, cost overrun, or cancellation.
E.g. This could be categories such as Low, Medium, High. E.g. Low = <10%, Medium = 10-50%, High = >50%.
Another option for Risk is separately tracking Technology Risk - % likelihood of running into serious
difficulty implementing the requirement because of lack of experience in the domain and/or required
technologies. Then overall risk can be computed as a weighted sum based on other attributes, including size,
effort, stability, technology risk, architectural impact, and organizational complexity.
Organizational Complexity: Categorization of control over the organization developing the requirement.
-
Internal: In-house development at one site
-
Geographic: Geographically distributed team
-
External: External organization within the company.
-
Vendor: Subcontract or purchase of externally developed software.
Architectural Impact: Indicates how this
requirement will impact the software architecture.
-
None: Does not affect the existing architecture.
-
Extends: Requires extending the existing architecture.
-
Modifies: The existing architecture must be changed to accommodate the requirement.
Stability: Likelihood that this requirement will change, or that the development teams' understanding of the
requirement will change. (>50% = High, 10..50% = Medium, <10%=Low)
Target Release: The intended product release in which the requirement will be met. (Release1, Release1.1,
Release2, ...)
Hazard Level / Criticality: Ability to affect health, welfare, or economic consequences, typically as a
result of the software failing to perform as required.
-
Negligible: Cannot result in significant personnel injury or equipment damage.
-
Marginal: Can be controlled without personnel injury or major system damage.
-
Critical: Can cause personnel injury or major system damage, or will require immediate corrective action
for personnel or system survival.
-
Catastrophic: Can cause serious injury or death, or complete system loss.
Hazards may also be identified as separate requirements types, and linked to associated use cases. You may
also wish to track hazard probability, corrective actions and/or preventative measures.
Interpretation: In some cases where the requirements form a formal contract, it may be difficult and costly
to change the wording the requirements. As the development organization gains a better understanding of a
requirement, it may be necessary to attach interpretation text, rather than simply change the official wording of
the requirement.
Use Case
In addition to the above, it is also useful to track the following use case attribute:
%Detailed: Degree to which the Use Case has been elaborated:
-
10%: Basic description is provided.
-
50%: Main flows documented.
-
80%: Completed but not reviewed. All preconditions and postconditions fully specified.
-
100%: Reviewed and approved.
Test Case
Status: Tracks progress during test development.
-
No Activity: No work has been accomplished in developing this test case.
-
Manual: A manual script has been created and validated as capable of verifying the associated
requirements.
-
Automated: An automated script has been created and validated as capable of verifying the associated
requirements.
General Attributes
Some other requirement attributes which have general applicability are:
-
Planned Iteration
-
Actual Iteration
-
Responsible Party
Attributes are used to track information associated with a traceability item, typically for status and reporting
purposes. Each organization may require specific tracking information unique to their organization. Before
assigning an attribute, you should consider:
-
Who will supply this information?
-
Who will use this information, and why is it useful?
-
Is the cost of tracking this information worth the benefit?
The essential attributes to track are Risk, Benefit, Effort, Stability and Architectural Impact, in order
to permit prioritizing requirements for scope management and to assign requirements to iterations. These should be
tracked initially on Features, and later on all Use Cases and Supplemental Requirements.
Consider Derived Information
In addition to directly using requirements attributes, you may wish to derive information from these requirements
attributes via traceability to other requirements types. Some typical patterns of derivation are:
-
Deriving Downwards - Given the traceability above, suppose a Product Feature has an attribute "Target
Release". One can derive that each Use Case Section traced to by this Product Feature must also be available at or
before the specified Target Release.
-
Deriving Upwards - Given the traceability above, suppose a Use Case Section has an attribute "Estimated
Effort". The cost of a Product Feature can be estimated by summing the Estimated Effort for the Use Case Sections
that it traces to. This must be used with caution, as several Product Features could map to the same Use Case
Section.
Thus, in order to assign requirements attributes to requirements types, you should consider:
-
What derived information / reports do we wish to generate from this attribute?
-
At what level in the traceability hierarchy should we track this attribute?
Dependency of Attributes
Some attributes may only be applicable to a certain level of development. For example, an estimated effort attribute
for a use case may be replaced by effort estimates on the design elements once the use case is fully represented in the
design.
The following are examples of requirement-related reports and measures. By selecting the required/desired set of
reports and measures for your project, you can derive the necessary attributes for the Requirements Management Plan.
Report/Measure Description
|
Used For
|
Development Priority of Use Cases (list of Use Cases sorted by Risk, Benefit, Effort, Stability, and
Architectural Impact).
|
This may be separately sorted lists, or a single list sorted by a weighted combination of these
attributes. Used for Task: Prioritize Use Cases.
|
Percent of Features in each Status Category.
|
Tracks progress during definition of the project baseline.
|
- classified by Target Release
|
- tracks progress on a per release basis
|
- weighted by Effort
|
- provides a more precise measure of progress.
|
Features sorted by Risk
|
- identifies risky features. Useful for scope management and assigning features to
iterations.
|
- classified by Target Release, with Development Risk summed for each Target Release
|
- useful for assessing whether risky features have been scheduled early or late in the project.
|
Use Case Sections sorted by Stability
|
- used for deciding which use case sections need to be stabilized.
|
- weighted or sorted by Affects Architecture
|
- useful for prioritizing architecturally significant and/or high effort use cases to be
stabilized first.
|
Requirements with Undefined Attributes
|
When requirements are first proposed, you may not immediately assign all the attributes (e.g. by using
a default "Undefined" value). The Checklist: Software Requirements Specification uses this report to
check for such undefined attributes.
|
Traceability Items with incomplete traceability links
|
A report of incorrect or incomplete traceability links is used for the Checklist: Software Requirements Specification.
|
Change is inevitable, and should be planned for. Changes occur because:
-
There was a change to the problem to be solved. This may be because of new regulations, economic pressures,
technology changes, etc.
-
The stakeholders changed their minds or perceptions of what they wanted the system to do. This may be due to a
variety of causes, including changes in responsible staff, a deeper understanding of the issues, etc.
-
Failure to include all stakeholders, or to ask all the right questions, when defining the original requirements.
Strategies to managing changing requirements include:
-
Baseline the Requirements
-
Establish a Single Channel to Control Change
-
Maintain a Change History
Baseline the Requirements
Toward the end of the elaboration phase, the System Analyst should baseline all known requirements. This typically is
performed by ensuring there is version control on the requirements work products, and identifying the set of work
products and their versions that form the baseline.
The purpose of the baseline is not to freeze the requirements. Rather it is to enable new and modified requirements to
be identified, communicated, estimated, and controlled.
Also see Tool Mentor: Baselining a Rational RequisitePro Project.
Establish a Single Channel to Control Change
A stakeholder's wish for a change cannot be assumed to officially change the budget and schedule. Typically a
negotiation or budget reconciliation process must be initiated before a change can be approved. Often changes must be
balanced against one another.
It is crucial that every change go through a single channel, the Change Control Board (CCB), to determine its impact on
the system and to undergo official approval. The mechanism for proposing a change is to submit a Change Request, which is reviewed by the CCB.
For additional information, see Task: Establish Change Control Process.
Maintain a Change History
It is beneficial to maintain an audit trail of changes to individual requirements. This change history allows you to
view all prior changes to the requirement as well as changes to attribute values, and the rationale for the change.
This can be useful in assessing actual stability of requirements, and identifying cases where the change control
process may not be working (e.g. identifying requirements changes that were not properly reviewed and approved).
|