1. Capability Maturity Model Integration
(CMMI) model for Development (DEV)
CMMI-DEV Model v.1.3
Capability Maturity Model Integration is
introduced by Software Engineering Institute
(SEI), Carnegie Mellon University, majorly
funded by the United States (US) Department
of Defense. The model integrates elements of
effective processes and is based on the principle
that the quality of a product is highly influenced
by the quality of the processes used to develop
and maintain it. Some of the practices of the
model were extracted from statistical quality
control methods for process improvement,
initially applied to software process at IBM and
SEI, and used as bases for the ‘1.3’ version of
the model. The model describes an improvement
from ad hoc, immature processes, to disciplined,
mature processes with improved quality of
results and effectiveness of the process itself.
Today, CMMI-DEV is used in many industries,
including computer software, aerospace, banking, government defense agencies, automobile and
other manufacturing, telecommunications, etc. CMMI-DEV regards the software as a product of
engineering and support processes and practices. It requires that the practitioners change the point
of view of the software from project to product. Processes refer to tasks in sequence, or in parallel,
conducted by managers, engineers, analysts, architects and end users that cover the product’s
lifecycle from conception of it, to final delivery and maintenance into the working environment. The
processes for software engineering are grouped into Requirement Development, Technical Solution,
Product Integration, Validation, and Verification. For the very importance that the Technical Solution
process area carries in the engineering process, this article will focus on the “software design”, as
an integral part of technical solution.
Develop the Design Software design process
results in concrete elements that directly satisfy
requirements, or supports achievement of
requirements. According to the CMMI model, the
goal of the process is (i) design of the software and
(ii) design of software components. It may consist
of two phases, which often are not distinguished:
(i) development of software general design and (ii) development of detailed design of components
or modules. At the end, the software designs are used not only for development, but also for other
phases such as procurement, maintenance and installation. Moreover, the design documentation is
used for validation of requirements analysis from stakeholders. The first practice consists of general
2. design of: – definition of software capabilities, – technical architecture of software, – components
/module identification, – state diagrams, – external systems interfaces, – intercomponents/
module interfaces. Whereas the components design consists of: – module/component functional
architecture, – process models for each component and cross components processes, – data
models, – algorithms to fulfill the allocated requirements to the software component. CMMI-DEV
has identified several sub practices that can improve design process:
1. Establishment of criteria to evaluate the design such as quality attributes of design:
Complete, Clearly Defined, Modular, Accurate, etc.
2. Identification and use of a design method
Method of design of software usually consists of a tool to enable design. Some examples are:
-software prototype -object oriented design -entity relationship model -design reuse
3. Optimization of design to satisfy quality attributes
4. Ensure that design complies to allocated requirements
As the design matures and optimizes, the requirements assigned to components are tracked in
order to be sure that those requirements are satisfied from the designed elements.
5. Gathering of elements of design into a technical data package that provides to the developer a
technical description of the software and software components.
It may contain schemas and diagrams, specifications and standards, data model, description of
design and quality attribute requirements. The package is maintained through the lifecycle of the
software. Another practice is the design of the component interfaces specifications as follows:
1. Define the interface quality criteria
2. Identify interfaces associated with other software components
3. Identify interfaces associated with external items/software
4. Apply the criteria to the interface design alternatives
5. Document the selected interface design
The interfaces designs are added to the technical data package. Prior to development process,
a general practice suggested by CMMI-DEV model is to perform an analysis of Make, Buy or
Reuse of software components. This analysis of make-or-buy is completed with the decision to
develop, acquire or reuse the components which are included into the technical data package.
Design Process in the engineering of our software products For the engineering of our software
products, at Communication Progress, we initiate the general design of software system from
Requirement Development process and frequently overlap the two processes in order to elicit
unidentified requirements and to validate defined requirements. Design elements we initially
produce are:
• Software system capabilities list
• External interfaces list
• General Business Process flows
• Definition of algorithms for specific computation relevant to the working operation the software
is going to be integrated.
Further, we develop detailed design elements of the software, after a clear and complete definition
of requirements. These elements are used to start the Software Development process and to
identify further details of the system processes. The process produces:
3. • Functional architecture of software
• Module components list
• Business Process flows of Level 2
• System Process Flows
• Data Dictionary for data models
• Component interface wireframe.
Other practices at use include:
• Design method: object oriented design, ERD design and prototype design
• Requirements Mapping Matrix: to ensure that designs comply to allocated requirements
• Technical data package: to define a format for the package.
Reference: CMMI for Development Version 1.3, SEI Technical Report, November 2010 Product-
Focused Software Process Improvement, 9th International Conference, June 2008Defining the
software process and Managing the software process, W.S. Humphrey, 1990