|
The Software Engineering Institute
uses a conceptual framework based on industry best practices to assess
the process maturity, capability, and performance of a software development
organization. This framework is called the Capability
Maturity Model.
The Capability Maturity Model defines five levels of process
maturity:
- Initial (worship the hero)
- Repeatable (plan the work)
- Defined (work the plan)
- Managed (measure the work)
- Optimizing (work the measures)
The extent to which Key Process Areas (related clusters
of activities that enhance process capability) are implemented at each
level determines the process maturity level rating of an organization.
The extent of implementation for a specific Key Process
Area is evaluated by assessing:
- commitment to perform (policies and leadership)
- ability to perform (resources and training)
- activities performed (plans and procedures)
- measurement and analysis (measures and status)
- verification of implementation (oversight and quality assurance)
The Key Process Areas for Levels 2 through 5 of the Capability
Maturity Model are:
Level 2. Repeatable
- Requirements management
- Software project planning
- Software project tracking and oversight
- Software subcontract management
- Software quality assurance
- Software configuration management
Level 3. Defined
- Organization process focus
- Organization process definition
- Training program
- Integrated software management
- Software product engineering
- Intergroup coordination
- Peer reviews
Level 4. Managed
- Quantitative process management
- Software quality management
Level 5. Optimizing
- Defect prevention
- Technology change management
- Process change management
The following sections describe policies that a software
organization might implement relative to the Key Process Areas at each
level of the Capability Maturity Model.
Policies for Key Process Areas at Level 2
Requirements Management
Software requirements are documented and allocated
to specific projects. These requirements are reviewed by software managers
and other affected groups before they are incorporated into a project.
The software plans, work products, and activities are changed to be consistent
with changes to the allocated requirements.
Software Project Planning
A project software manager is designated to
be responsible for negotiating commitments and developing the software
development plan. The system requirements allocated to the software project
are used as the basis for planning the software project.
The software project's commitments are negotiated between
the project manager, project software manager, and other software managers.
The involvement of other engineering groups in the software activities
is negotiated with these groups and documented. Affected groups review
the software project's size estimates, effort and cost estimates, schedules,
and other commitments.
Senior management reviews all software project commitments
made to individuals and groups external to the organization. The project's
software development plan is managed and under change control.
Software Project Tracking and Oversight
A project manager is designated to be responsible
for a project's software activities and results. A documented and approved
software development plan is used and maintained as the basis for tracking
the software project.
The project manager is kept informed of the project status
and issues. Corrective actions are taken when the software plan is not
being achieved, either by adjusting performance, or by adjusting the plan.
Changes to software commitments are made with the involvement
and agreement of the affected groups. Senior management reviews all new
and changed software commitments made to individuals and groups external
to our organization.
Software Subcontract Management
Documented standards and procedures are used
for selecting and managing software subcontractors. The contractual agreements
form the basis for managing the subcontract. Any changes to the subcontract
are made with the involvement and agreement of both the prime contractor
and the subcontractor.
The designated subcontract manager is knowledgeable and
experienced in software engineering or has individuals assigned who have
that knowledge and experience. The subcontract manager is responsible
for coordinating the technical scope of work to be subcontracted and its
terms and conditions with the affected parties. The subcontract manager
is responsible for selecting and managing the software subcontractor,
plus arranging for any post-subcontract support of the subcontracted products.
Software Quality Assurance
The Software Quality Assurance (SQA) function
is in place for all software projects. The SQA group has a reporting channel
to senior management that is independent of the project manager, the software
engineering group, and other software-related organizations. Senior management
periodically reviews the SQA activities and results.
Software Configuration Management
Responsibility for Software Configuration Management
(SCM) for each project is explicitly assigned. SCM is implemented throughout
the life cycle for externally deliverable software products, designated
internal software work products, and designated support tools used inside
the project.
Projects establish or have access to a repository for storing
configuration items and the associated SCM records. The software baselines
and SCM activities are audited on a periodic basis.
Policies for Key Process Areas at Level 3
Organization Process Focus
We have established a group that is responsible
for our organization-level software process activities and to coordinate
these activities within the projects. Software processes used by the projects
are assessed periodically to determine their strengths and weaknesses.
The software processes used by the projects
are appropriately tailored from our standard software process. Improvements
to, and useful information on, each project's software process, tools,
and methods are available to other projects.
Organization Process Definition
We have defined a standard software process
for our organization. The software process used by a specific project
is a tailored version of the standard process.
Our software process assets are maintained. Information
collected from the projects is organized and used to improve our standard
software process.
Training Program
The needed skills and knowledge for each software
management and technical role in our organization are identified. The
training vehicles for imparting skills and knowledge are identified and
approved.
Training is provided to build our skill base, fill specific
project needs, and develop the skills of individuals.
Integrated Software Management
Each project documents its defined software
process by tailoring our standard software process. Any deviations from
the standard process are documented and approved.
Each project performs its software activities in accordance
with its defined software process. The appropriate project measurement
data is collected and stored in the software process database.
Software Product Engineering
Our software engineering tasks are performed
in accordance with a project's defined software process. Appropriate methods
and tools are used to build and maintain the software products. The software
plans, tasks, and products are traceable to the system requirements allocated
to software.
Intergroup Coordination
The system requirements and project-level objectives
for each project are defined and reviewed by all affected groups. These
groups coordinate their plans and activities.
Peer Reviews
We have identified a standard set of work products
for peer reviews. Each project identifies the specific work products that
will undergo peer review
Peer reviews are led by trained peer review leaders and
focus on the software work product, not on the producer. Results of the
peer reviews are not used by management to evaluate the performance of
individuals.
Policies for Key Process Areas at Level 4
Quantitative Process Management
Each project implements a documented plan to bring
their defined software process under quantitative control. They analyze
the software process, identify any special causes of performance variation,
and bring their process performance within well-defined limits. Sensitive
data regarding an individual's performance are protected and access to
the data is appropriately controlled.
Measurements of process performance by projects are analyzed
to establish and maintain a process capability baseline for our standard
software process. The baseline is used by software projects in establishing
their process performance goals.
Software Quality Management
Each project's software quality management activities
support our commitment to improve the quality of each new release of our
software products. Projects define and collect the measurements used for
software quality management based on the project's defined software process.
Every project defines the quality goals for their software products and
monitors its progress towards them.
Responsibilities for software quality management are defined
and assigned to the appropriate software groups within our organization.
Criteria are established to enable these groups to determine their success
in achieving the quality goals for their software products.
Policies for Key Process Areas at Level 5
Defect Prevention
We establish long term plans and commitments
for funding, staffing, and other resources needed for defect prevention.
Resources are allocated for defect prevention activities within specific
projects.
Defect prevention activities are implemented across our
organization to improve software processes and products. Defect prevention
activities are included in each project's software development plan
The results of our defect prevention activities are reviewed
at both the organization and project level to ensure the effectiveness
of those activities. Senior management, project management, or technical
actions identified as a result of the defect prevention activities are
addressed.
Technology Change Management
We have established objectives and documented a
plan for improving our technology capability. Senior management sponsors
and oversees our technology change management activities.
Process Change Management
We have defined quantitative, measurable objectives
for software process improvement and track our performance against those
objectives. Our process improvements are directed toward improving product
quality, increasing productivity, and decreasing the cycle time for product
development. Everyone in our organization is expected to participate in
improving the software processes.
About the Author
Larry Whittington is President of Whittington &
Associates, a quality system training, consulting, and auditing company
located in Marietta, Georgia. He is an ASQ Certified Software Quality
Engineer and Quality Auditor. Both the RAB and IRCA have certified him
as an ISO 9000 Lead Auditor. He is also a trained TickIT Lead Auditor
for software systems and a certified QS-9000 Lead Auditor for the automotive
industry. Mr. Whittington can be contacted at 770-955-7585,
or by e-mail at Larry@WhittingtonAssociates.com.
|