- By Andy Gurd, Senior Project Manager, Corporate
Marketing, Telelogic
Introduction
This guide provides
recommendations for implementing the tool support that will help organizations
achieve key CMMI levels.
What's CMMI?
The
Software Engineering Institute's (SEI), Capability Maturity Model Integration (CMMI)i
is
a Capability Maturity Model (CMM) for product development, including systems
engineering and software engineering. The SEI describes a CMM as containing the
essential elements of effective processes for one or more disciplines. A CMM
also describes an evolutionary improvement path from ad hoc, immature processes
to disciplined, mature processes with improved quality and effectiveness. CMMI
builds on and extends the best practices of the Capability Maturity Model for
Software (SW CMM®), the Systems Engineering Capability Model (SECM), and the
Integrated Product Development Capability Maturity Model (IPD-CMM).
Doesn't
process improvement cost time and money? What's the
payback?
Certainly,
improving organizations' product development processes will require investment.
However, the right choice of tools to support these processes can speed
implementation and the time it takes to benefit from adopting them. The Return
on
Investment (ROI) achieved by organizations adopting CMMI
and its predecessors is well-documented.
In
an October 2003 report, SEI found that organizations using CMMI benefited
significantly. They:
-Reduced
the cost of finding and fixing defects by 15 percent, while decreasing the
average cost of fixing a defect by more than 30 percent.
-Reduced
the time to turn-around releases by 50 percent, while increasing software
development productivity by 30 percent.
-Improved
the quality of delivered systems with only 2 percent of all faults escaping into
the field.
-Increased
customer satisfaction, resulting in greater financial
awards.
The
CMMI maturity levels
CMMI
offers two flavors: staged and continuous. In this guide, we focus on the
staged
representation.
CMMI defines five stages, or levels, of process maturity (see Figure
1).
With CMMI, organizations are encouraged to concentrate on a manageable number
of
process
areas and
evolve their processes to an increasing level of sophistication. Each level is a
defined point of stabilization. This guide will focus on levels two and three,
the levels
that contain process areas related to requirements
management.
Figure 1: The five staged levels of CMMI
Process
Areas
A
CMMI Process Area is a group of related practices, with a defined set of goals.
Figure 2 shows the process areas for each of the five maturity
levels.
Figure 2: Process Areas at each CMMI Level
This
guide focuses on the Level 2 process area of requirements management and the
Level 3 process areas of requirements development and technical solution. Once
implemented, these three process areas are closely associated and can run
concurrently.
Requirements Management in CMMI Level 2
Organizations
at Level 2 must have examined a number of key areas and implemented repeatable
processes that address them.
Process
Area: Requirements Management
The
CMMI goal for the Requirements Management process area is:
“Requirements
are managed and inconsistencies with project plans and
work
products
are identified.”
The
prime objective of any product is that it meets the needs of stakeholders and
customers. But it must also abide by internal constraints of functionality and
quality. A requirements management process plays a vital role in facilitating
this. The importance of effective requirements management cannot be understated;
indeed, recent industry analyst reports iii
iv have
clear findings that projects succeed with it and fail without it. When asked by
Standish Group why projects succeed, 50 percent of respondents attributed
successful projects to reasons related to requirements
management.
The
practices that must be established in order to achieve the goals of the
requirements management process area, are summarized
below:
Organizations must define a set of requirements
CMMI
says:
“Develop
an understanding with the requirements providers on the meaning
of requirements.”
“Obtain
commitment to the requirements from the project
participants.”
The first step of any requirements process is to ensure
all stakeholders understand what the project goals are and why. Therefore,
organizations must create a process where all stakeholders are invited to help
define requirements and, ultimately, agree on a baseline. As the project
progresses, organizations can then trace results back to the original goals and
ensure they have been met, and, that any changes have been justified. In order
to collaboratively create and manage a well-defined set of requirements, tools
should allow multiple users to view and/or edit requirements documents and
uniquely identify individual requirements statements. Users also need to easily
establish and report on traceability links between evolving sets of requirements
(say, between customer and product requirements) and other project artifacts,
suchas designs and tests. This provides an audit trail of decisions and ensures
requirements have been met, even as things change. It is also vital to maintain
the history of any changes to requirements statements. Tools should be able to
baseline incremental versions of requirements documents and allow sign-off on
baselines electronically.
Organizations must manage changes to these requirements
CMMI
says:
“Manage
changes to requirements as they evolve during the
project.”
Once
requirements are established, everyone involved in the project must always have
access to the most up-to-date information. Organizations need to
understand:
-The
changes that are being requested to the requirements.
-How
those changes will impact the project as a whole.
-What
action stakeholders agree should be taken in response to those
changes.
-Whether
approved changes have been included in the final product.
Changes
to requirements are inevitable and must be allowed for, but controlled. Tool
support must provide a collaborative, configurable change control process for
requirements. Users should be able to:
-Submit
change requests against requirements.
-Manage
multiple change requests for a single requirement as a single item in the change
control process.
-Package
multiple, related change requests against a set of requirements, so resulting
updates are made consistently.
-Assign
reviewers to change requests.
-Review
and comment on change requests online — so that all reviewers can see all
comments made.
-Assess,
quickly and completely, the impact of a change on related requirements, designs
and tests.
-Approve
or reject change requests based on the review input.
-Apply
approved changes automatically so that no mistakes can be
introduced.
Organizations must ensure requirements are met
CMMI
says:
“Maintain
bi-directional traceability among the requirements and the project plans and
work products.”
Only complete traceability can ensure that the right
requirements are being fulfilled in the right way. Consequently, organizations
must check that requirements are being met at every stage of the development
process and demonstrate how a particular product specification maps back to
requirements. Without strong tool support, creating, maintaining and reporting
on traceability can be a time-consuming, tedious and error-prone task. Tool
support must enable traceability links to be established quickly and easily. In
order to satisfy CMMI, traceability must be maintained not only between sets of
requirements but also with project plans and work products like designs and test
plans. The requirements management tool must be able to synchronize data with
the tools used to produce those other items. And to support iterative and
incremental development processes, traceability must be established and
maintained between different versions of requirements documents. Once
traceability is established, tool support must make it easy to obtain a
complete, single view of the relationships between requirements and other
requirements, plans and work products.
Organizations
must ensure project plans, work products and requirements
are Consistent
CMMI
says:
“Identify
inconsistencies between the project plans and work products and the
requirements.”
Identifying inconsistencies ensures organizations'
development is on track — so they aren't working on outdated information and no
requirements have been overlooked. Therefore, organizations must implement a
process to ensure that all project plans and work products are consistent with
their requirements. This includes reviewing, analyzing and managing subsequent
changes. Project plans and requirements specifications must be closely linked.
Tool support should enable project tasks and requirements data to be
synchronized, so traceability can be established between them. This makes it
easier to assess how changes in project timelines can affect the ability to meet
requirements, and vice versa.
Requirements Management in CMMI Level 3
Organizations
at Level 3 need established, documented, common and consistent processes for use
across all projects.
Process
Area: Requirements Development
The Requirements Development process area identifies how
to elicit stakeholder needs, derive formal customer requirements specifications
from them and further refine these customer requirements into product and
product component requirements. CMMI defines several goals for the Requirements
Development area, summarized below:
Organizations
must collect and translate stakeholder needs into customer
Requirements
CMMI
says:
“Stakeholder
needs, expectations, constraints, and interfaces are collected and translated
into customer requirements.”
Too
often, the needs of stakeholders are poorly defined and understood; they can
even be inconsistent or conflicting. A stakeholder representative must be
involved throughout the product development lifecycle. There should be an
iterative process to refine, elaborate and clarify needs to achieve a clear,
well-understood set of customer requirements. This goal, and the practices that
support it, mostly relate to including customer representatives on the project
team throughout the development lifecycle. In addition, techniques for eliciting
and elaborating requirements are also important. One popular method is to employ
Use Cases. Use Cases provide a way of structuring and documenting functional
requirements from the perspective of the users, in a variety of scenarios.
Individual Use Cases are documented textually, while Use Case summaries, showing
sets of related use cases and their usage, are best described with UML(Unified
Modeling Language) Use
Case diagrams. Tool support should enable UML diagrams to be interwoven with
textual requirements statements in a single document.
Organizations
must develop product and component requirements from the customer
requirements
CMMI
says:
“Customer
requirements are refined and elaborated to develop product
and product-component
requirements.”
Customer requirements must be fully analyzed to identify
any implied but unstated requirements, complemented with new requirements
associated with the technical architecture for the product. Depending on the
size and complexity of the product, these can break down into product
requirements, then component requirements and so on. Traceability must be
maintained to provide an audit trail of decision-making and to support impact
analysis.
According to the CMMI, deriving product and
product-component requirements should be done by analyzing customer requirements
and selecting and describing the necessary technical architecture. Tool support
should make it easy to derive the next level of requirements, not only by
creating traceability between requirements at different levels, but also by
providing techniques to analyze higher-level requirements and document
rationale. UML modeling, using techniques such as Use Case, Activity and
Sequence diagrams, are an effective way to analyze requirements and derive new
ones. High-level technical architectures can be described using Architecture
(also known as Composite Structure) diagrams. Tool support should enable these
models to be created within the requirements document in order to record
decisions and provide rich guidance on developing the technical solution.
Organizations must validate the requirements
CMMI
says:
“The
requirements are analyzed and validated, and a definition of required
functionality is developed.”
Analysis
and validation are necessary to determine whether stakeholder needs, customer
requirements, product requirements, etc. are feasible, achievable within project
budgets, and generally fit within the constraints of the operational environment
of the product. This is when informal needs are translated into formal
requirements.
Techniques
used in analysis and validation can include time-sequenced scenarios to test
requirements and derive new ones. Scenarios, often described using UML Activity
or Sequence diagrams, are an effective way of eliciting, clarifying and refining
requirements.
Required
functionality is
defined by performing functional
analysis to
establish a functional
architecture.
Functional analysis describes what the product is intended to do in terms of
actions, sequences, inputs and outputs — anything that describes how the product
is to be used. Functional architecture describes logically grouped functions (or
services) together with the requirements to be satisfied by each. UML Activity
diagrams can describe the required behavior of a product from a workflow
perspective and identify which components will be responsible for which parts of
the workflow. They are useful for describing the functional analysis and
allocating requirements to product-components. Tool support should enable
analysis models and textual requirements to be maintained within a single
document and enable traceability to be maintained between levels of requirements
(whether described textually or graphically using UML).
Process
Area: Technical Solution
The Technical Solution Process Area focuses on evaluating
and selecting design solutions, performing detailed design, and implementing the
solution. So, what does this have to do with requirements management?
Organizations must first ensure they continue to develop a solution that meets
the requirements. One way is to test the resulting designs to verify that the
proposed solution is correct. During this process, organizations may discover
that some requirements are not feasible or sufficiently well defined to be
implemented. Organizations must allow requirements to continue evolving
throughout the design process, while ensuring changes are handled in a
controlled manner. Traceability must continue to be maintained between the
levels of requirements (customer, product, component, etc.) and between the
requirements and the solutions.
All the benefits of developing requirements from
stakeholder needs through to product and product-component requirements should
be preserved when designing and building the solution. Tool support should
enable designers and developers to view the requirements and create and maintain
traceability between the requirements and their designs, in order to prove
compliance and assess the impact of any changes. Requirements analysts and
project managers should have a complete picture of traceability from stakeholder
needs right through detailed designs and tests. This allows them to monitor
progress against the requirements and ensure all development and testing is done
in accordance with the requirements - no more and no less.
Summary
For organizations with large and complex product or system
development projects, CMMI is an established way to evaluate and improve
development processes. There is compelling evidence of its success from major
corporations such as Lockheed Martin, Boeing, Northrop Grumman, General Motors
and JP Morgan Chase. Effective requirements management and requirements analysis
practices are key to achieving CMMI Levels 2 and 3. Comprehensive tool support
is essential to help organizations implement best practices like those described
by CMMI. By providing integrated support for requirements definition,
requirements analysis and traceability throughout the product development
lifecycle, organizations can maximize the benefits of these process
improvements.