Requirements Management

a key process area for level 2: Repeatable


The purpose of Requirements Management is to establish a common understanding between the customer and the software project of the customer's requirements that will be addressed by the software project.

Requirements Management involves establishing and maintaining an agreement with the customer on the requirements for the software project. This agreement is referred to as the "system requirements allocated to the software." The "customer" may be interpreted as the system engineering group, the marketing group, another internal organization, or an external customer. The agreement covers both the technical and nontechnical (e.g., delivery dates) requirements. The agreement forms the basis for estimating, planning, performing, and tracking the software project's activities throughout the software life cycle.

The allocation of the system requirements to software, hardware, and other system components (e.g., humans) may be performed by a group external to the software engineering group (e.g., the system engineering group), and the software engineering group may have no direct control of this allocation. Within the constraints of the project, the software engineering group takes appropriate steps to ensure that the system requirements allocated to software, which they are responsible for addressing, are documented and controlled.

To achieve this control, the software engineering group reviews the initial and revised system requirements allocated to software to resolve issues before they are incorporated into the software project. Whenever the system requirements allocated to software are changed, the affected software plans, work products, and activities are adjusted to remain consistent with the updated requirements.

Goals

Goal 1

System requirements allocated to software are controlled to establish a baseline for software engineering and management use.

Goal 2

Software plans, products, and activities are kept consistent with the system requirements allocated to software.

Commitment to perform

Commitment 1 -- The project follows a written organizational policy for managing the system requirements allocated to software.


The system requirements allocated to the software are referred to as "allocated requirements" in these practices.

The allocated requirements are the subset of the system requirements that are to be implemented in the software components of the system. The allocated requirements are a primary input to the software development plan. Software requirements analysis elaborates and refines the allocated requirements and results in software requirements which are documented.


This policy typically specifies that:
  1. The allocated requirements are documented.
  2. The allocated requirements are reviewed by:
  3. The software plans, work products, and activities are changed to be consistent with changes to the allocated requirements.

Ability to perform

Ability 1 -- For each project, responsibility is established for analyzing the system requirements and allocating them to hardware, software, and other system components.


Analysis and allocation of the system requirements is not the responsibility of the software engineering group, but is a prerequisite for their work.


This responsibility covers:
  1. Managing and documenting the system requirements and their allocation throughout the project's life.
  2. Effecting changes to the system requirements and their allocation.

Ability 2 -- The allocated requirements are documented.

The allocated requirements include:
  1. The nontechnical requirements (i.e., the agreements, conditions, and/or contractual terms) that affect and determine the activities of the software project.
    Examples of agreements, conditions, and contractual terms include:
  2. The technical requirements for the software.
    Examples of technical requirements include:
  3. The acceptance criteria that will be used to validate that the software products satisfy the allocated requirements.

Ability 3 -- Adequate resources and funding are provided for managing the allocated requirements.

  1. Individuals who have experience and expertise in the application domain and in software engineering are assigned to manage the allocated requirements.
  2. Tools to support the activities for managing requirements are made available.
    Examples of support tools include:

Ability 4 -- Members of the software engineering group and other software-related groups are trained to perform their requirements management activities.


Examples of training include:

Activities performed

Activity 1 -- The software engineering group reviews the allocated requirements before they are incorporated into the software project.

  1. Incomplete and missing allocated requirements are identified.
  2. The allocated requirements are reviewed to determine whether they are:
  3. Any allocated requirements identified as having potential problems are reviewed with the group responsible for analyzing and allocating system requirements, and necessary changes are made.
  4. Commitments resulting from the allocated requirements are negotiated with the affected groups.
    Examples of affected groups include:


    Refer to Activity 6 of the Software Project Planning key process area for practices covering negotiating commitments.


Activity 2 -- The software engineering group uses the allocated requirements as the basis for software plans, work products, and activities.

The allocated requirements:
  1. Are managed and controlled.
    "Managed and controlled" implies that the version of the work product in use at a given time (past or present) is known (i.e., version control), and changes are incorporated in a controlled manner (i.e., change control).

    If a greater degree of formality than is implied by "managed and controlled" is desired, the work product can be placed under the full discipline of configuration management, as is described in the Software Configuration Management key process area.


  2. Are the basis for the software development plan.
  3. Are the basis for developing the software requirements.

Activity 3 -- Changes to the allocated requirements are reviewed and incorporated into the software project.

  1. The impact to existing commitments is assessed, and changes are negotiated as appropriate.
    Refer to Activities 5, 6, 7, and 8 of the Software Project Tracking and Oversight key process area for practices covering negotiating changes to commitments.


  2. Changes that need to be made to the software plans, work products, and activities resulting from changes to the allocated requirements are:

Measurement and analysis

Measurement 1 -- Measurements are made and used to determine the status of the activities for managing the allocated requirements.


Examples of measurements include:

Verifying implementation

Verification 1 -- The activities for managing the allocated requirements are reviewed with senior management on a periodic basis.


The primary purpose of periodic reviews by senior management is to provide awareness of and insight into software process activities at an appropriate level of abstraction and in a timely manner. The time between reviews should meet the needs of the organization and may be lengthy, as long as adequate mechanisms for exception reporting are available.



Refer to Verification 1 of the Software Project Tracking and Oversight key process area for practices covering the typical content of senior management oversight reviews.


Verification 2 -- The activities for managing the allocated requirements are reviewed with the project manager on both a periodic and event-driven basis.


Refer to Verification 2 of the Software Project Tracking and Oversight key process area for practices covering the typical content of project management oversight reviews.


Verification 3 -- The software quality assurance group reviews and/or audits the activities and work products for managing the allocated requirements and reports the results.


Refer to the Software Quality Assurance key process area.


At a minimum, these reviews and/or audits verify that:
  1. The allocated requirements are reviewed, and problems are resolved before the software engineering group commits to them.
  2. The software plans, work products, and activities are appropriately revised when the allocated requirements change.
  3. Changes to commitments resulting from changes to the allocated requirements are negotiated with the affected groups.