Capability maturity model integration (CMMI) is a software development standard
spearheaded by the Department of Defense (DoD) to improve the quality of the
software developed by its contractors. Some of the largest defense and aerospace
companies currently promote the successful implementation of the highest CMMI
levels.
Although adopted by many design departments, test software
developers have only recently started to evaluate and implement the standard. To
effectively implement CMMI, developers need to understand the standard as well
as some of the challenges they might face during implementation and how to
overcome them.
What Is CMMI?
In the 1980s, the DoD tasked the Software Engineering
Institute (SEI) at Carnegie Mellon University to develop a comprehensive set of
software development guidelines based on previous popular development models.
With CMMI, the SEI provided tools for companies to standardize the design,
implementation, and testing of their software to increase its quality.
Even if an organization does not follow a standardized
procedure, certain development processes are in place. These processes include
methods for project specification creation, peer code reviews, source code
control, and bug tracking. CMMI helps development teams understand these current
practices, learn what worked in previous projects, and implement standards that
will best increase the quality of their software in the future.
Why CMMI in Test?
Even though the design departments of many top defense and
aerospace companies adopted CMMI, many test software departments were not
interested or required to implement the software development standard. One
reason behind not implementing CMMI is perceptual.
Quality assurance departments tasked with managing CMMI
implementation and many high-level managers see test engineering as a hardware
department. The importance and quantity of instrumentation in a test department
can obscure the amount of software necessary to automate all the instrumentation
as well as the software necessary to develop virtual instrumentation.
In addition, because test systems rarely are part of the
product delivered to the customer, test software has not been required to follow
CMMI development processes. Finally, even though some test engineering
departments would like to follow a standard process like CMMI, the time
constraints to get a project delivered on time make following a rigorous
development process very challenging.
Over the last few years, some test software departments have
incorporated CMMI in their development processes. This implementation has been
motivated by the increasing importance of software in test and the benefits that
design departments have seen in following the standard.
Software continues to increase in importance as test engineers
automate processes that required manual intervention in the past. In addition,
as test engineers see the benefit of a software-based approach to
instrumentation, software has evolved from automating test execution to actually
defining instrument functionality. As a result, implementing CMMI for test
software development can be challenging.
CMMI Maturity Levels
CMMI is commonly implemented following a
staged process that validates an organization across multiple different software
development process areas. As an organization implements each area, it is
validated on increasingly challenging CMMI maturity levels (Figure
1).
|

Figure 1. Five Maturity Levels of CMMI
|
CMMI Level 1 assumes there is no formalized software
development process in place. If a software development process exists at all,
it is very ad hoc and not used in more than one project. There is very little
control over the development process and a lack of metrics to compare the
success of one project to another.
The focus of CMMI Level 2 is to standardize the development
process in projects with similar applications. Basic project management process
areas such as requirements management, configuration management, and project
monitoring and control are implemented at this maturity level.
By standardizing the development process across similar
projects, the organization can repeat earlier successes in future projects. CMMI
Level 2 is the first level most test software departments implement and contains
many of the tactical processes necessary for the rest of the CMMI maturity
levels.
CMMI Level 3 goes beyond standardizing the development process in particular projects and seeks to have a
common software development standard across the entire organization. Each
project either follows the development standard or uses an approved and tailored
version of the process for developing and maintaining software.
In CMMI Level 4, the organization uses the standardized
development process to define and collect detailed measures of the software and
products. For example, each project can measure the rate at which software
issues are resolved. By collecting these measures, the organization can
quantitatively understand, control, and compare the software development process
and products among projects.
Finally, CMMI Level 5 uses the measures developed in Level 4
to implement continuous process improvement based on quantitative data and
determines the success of piloting innovative ideas and new technologies. For
example, an organization can use the data acquired on the rate of resolution of
software issues in Level 4 to statistically compare teams or projects with
different tools or new processes.
Test developers not familiar with CMMI have the initial
challenge of moving from CMMI Level 1 to Level 2. Whether they use a text-based
development environment such as National Instruments LabWindows/CVI, a graphical
development environment such as NI LabVIEW, or test management software such as
NI TestStand, it is critical that they understand the components of CMMI Level 2
as well as some of the implementation challenges developers might face.
CMMI Process Areas
CMMI is defined by a set of process areas that lists goals and
practices the organization must implement at each maturity level. In particular,
CMMI Level 2 consists of the following areas:
•
Requirements Management
•
Configuration Management
•
Measurement and Analysis
•
Project Monitoring and Control
•
Project Planning
•
Process and Product Quality Assurance
•
Supplier Agreement Management
Of these, requirements management and configuration management
stand out as two areas that organizations can implement with differing levels of
effort depending on the programming language and platform used to develop a test
system. In addition, they pose certain challenges that are overcome differently
depending on whether the organization is using a text-based or graphical
development environment or test management software.
Requirements Management
The requirements management process area focuses on keeping
track of requirements and their relationships. For documentation purposes, large
projects use management software such as Telelogic DOORS while smaller projects
often draw on common documentation formats such as Microsoft Word, ASCII text,
or Adobe Acrobat.
One of the biggest challenges is understanding the
relationship between the requirements and the implementation of software,
otherwise known as bidirectional traceability. The process of determining
bidirectional traceability can be very time-consuming and error prone.
To streamline requirements management
and traceability, National Instruments developed NI Requirements Gateway. It
extracts information from different formats, such as Telelogic DOORS, IBM
Rational RequisitePro, Microsoft Word, ASCII text, and Adobe Acrobat. The
program also parses requirement coverage information documented in LabVIEW VIs,
indicators and controls, and NI LabWindows/CVI functions as well as NI TestStand
workspaces, sequences, and steps (Figure 2).

Figure 2. NI Requirements Gateway Architecture
|
By using the requirement and coverage information, NI
Requirements Gateway shows bidirectional traceability relationships with
multiple views so developers can see these relationships interactively. It helps
developers determine how requirements are implemented in the test system as well
as which ones different components in an application should be implementing.
This traceability information can be viewed interactively and documented into a
report, such as a traceability matrix.
By streamlining the traceability between requirements and
their implementation in software, NI Requirements Gateway facilitates the
identification of inconsistencies between project work and requirements. This is
one of the goals of the requirements management process area.
NI Requirements Gateway navigates a list of requirements and
displays the intended implementation as well as the feature that is implementing
it. The developer can directly navigate into the code to determine whether there
are any discrepancies between the code and the requirements.
In addition, NI Requirements Gateway helps developers meet a
third goal of the process: managing requirement changes. Requirements management
software, such as Telelogic DOORS, includes features that manage changes in
requirements throughout the development process.
On the other hand, if developers use tools such as Microsoft
Word or Adobe Acrobat, there is no out-of-the-box functionality for determining
changes. NI Requirements Gateway identifies changes regardless of format by
generating snapshots of the requirements document during different stages of the
development process and determining the differences between the requirements at
various stages.
Configuration Management
The configuration management process area strives to guarantee
that all the versions of the different application components are stored and
managed correctly. One of the first goals of the configuration management
process area is to establish baselines for the different components in an
application. To create this baseline, developers usually rely on a
configuration-management or version-controls system. These systems help
developers store multiple versions of software components so they can easily
create a baseline and revert to previous versions if necessary.
Even though implementing a configuration management system
helps meet the process area goals, interacting and communicating with these
configuration management systems can be challenging and time-consuming. Checking
in and checking out components can be confusing unless the development
environment integrates with configuration management software.
LabVIEW, LabWindows/CVI, and NI TestStand incorporate multiple
different configuration management products such as Microsoft Visual SourceSafe,
Perforce, Rational ClearCase, and CVS. Developers can easily check in and check
out individual files as well as complete projects from the configuration
management system directly from the development environment.
In implementing the configuration management process area,
developers establish the integrity of software components by comparing them and
resolving any conflicts. Comparing differences in code can be challenging,
especially if the development environment is not text-based.
To facilitate comparing graphical code written in LabVIEW, the
LabVIEW Project helps developers graphically compare a VI against the last
version of the VI checked into the source-code control repository. Additions as
small as a change in the front panel of a VI or as extensive as adding major
functionality are highlighted.
In addition, NI TestStand provides two ways to understand the
differences between sequences. With the Sequence File Differ, developers can
quickly see the differences between sequences and merge changes from one
sequence to another. Finally, LabWindows/CVI, due to its text-based paradigm,
uses existing packages for comparing code files and merging changes to establish
the software component integrity and implement the configuration management
process area.
Conclusion
Test software developers in the defense and aerospace industry
recently started to adopt CMMI as a way of standardizing the software
development process and obtaining quality and cost benefits. Before implementing
CMMI, test engineers must understand the standard as well as the implementation
challenges they face.
About the Author
Santiago Delgado is the product marketing engineer for
TestStand and NI Requirements Gateway at National Instruments. He started his
career at NI in 2005 as a member of the Engineering Leadership Program and led
efforts for the launch of LabVIEW 8 in Italy and Spain. Mr. Delgado received a
B.S. in management information systems from the University of Nebraska. National
Instruments, 11500 N. Mopac Expwy., Austin, TX 78759, e-mail:
Santiago.Delgado@ni.com
FOR MORE INFORMATION
on requirements management software
enter this rsleads URL
www.rsleads.com/709ee-180