The SEI Software Capability Maturity Model

 
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:

  1. Initial (worship the hero)
  2. Repeatable (plan the work)
  3. Defined (work the plan)
  4. Managed (measure the work)
  5. 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.

-top-

Site by Frogtown Media Web Design

Send this page to a friend