CMM - Introduction

Tuesday, March 31, 2009

This blog is intended to develop an understanding of CMMI so that process improvements can be better applied by its reader to their projects.

• What is CMM?
• Why CMM?
• What are it's characteristics?
• What are CMM levels?
• What are Key process areas?
• What should a project do to be at Level 5?
• What are the benefits?


These are some of the things we will look at in this blog various posts. This is the first in the series of posts that will explore CMM.

WHAT?

There are lot's of definitions for CMM. One good one is this:

It defines how software organizations mature or improve in their ability to develop software

The model was developed at Software Engineering Institute of Carnegie Mellon University in late 80s.This model provides a structured view in a five-layer model of increasingly sophisticated practices for those working in software. Each level (except Level 1) has certain Key Process Areas associated with it. Each level addresses levels of maturity exhibited by the project.

CMM assessment (Note: It is not called certification) is a detailed procedure. There are no certificates awarded after the assessment. Trained internal assessors+External assessors do the assessment. Other than this, organization should have project level CMM assessment which should be done every month. These are done by SQAs and other trained assessors.

WHY?

CMM describes how software organizations can take the path of continuous improvement which is so required in this highly competitive world. Moreover, it is a model that can be tailored to suit your organization. Keep Improving - is the CMM mantra. CMM creates lot of brand value and also many organizations are demanding it.

In this blog, CMM - Capability Maturity Model for Software is being discussed.

Next - CMM Overview

Read more...

CMM - Overview

Monday, March 30, 2009

CMM has defined 5 levels of maturity . Level 1 to 5.

Level 1: Initial or Ad-hoc. There are no KPAs in this level

Level 2 : Repeatable. There are 6 KPAs. KPAs at this level look at project planning and execution

Level 3 : Defined. There are 7 KPAs here. Organizational process is the focus area here.

Level 4 : Managed. There are 2 KPAs that deal with understanding of data

Level 5 : Optimizing. There are 3 KPAs. The focus is on continual improvement.

*KPA - Key Process Area - Key areas where Software organizations and Projects have to focus in the path towards excellence.

Total KPAs in CMM - 18

What are the characteristics of a matured organization ?

A mature software organization possesses an organization-wide ability for managing software development and maintenance processes. The software process is accurately communicated to both existing staff and new employees, and work activities are carried out according to the planned process. The processes mandated are fit for use and consistent with the way the work actually gets done. These defined processes are updated when necessary, and improvements are developed through controlled pilot-tests and/or cost benefit analyses. Roles and responsibilities within the defined process are clear throughout the project and across the organization

The CMM was designed to guide software organizations in selecting process improvement strategies by determining current process maturity and identifying the few issues most critical to software quality and process improvement.In Infosys we have SEPG (Software Engg. Process Group,Quality) which pilots improvement initiatives.

As we move from Level 1 to 5, the project risk decreases and Quality and Productivity increases.

Next - Level 1 - Initial

For question, please write to know.cmmi@gmail.com or leave a comment here.

Read more...

CMM - Level 1 - Initial or Ad-hoc

Sunday, March 29, 2009

Level 1 is an immature state. The software process is characterized as ad hoc, and occasionally even chaotic. Few processes are defined, and success depends on individual effort. Here there is no objective basis for judging product quality or for solving product or process problems. Therefore product quality is difficult to predict. Activities intended to enhance quality such as reviews and testing are often curtailed or eliminated when projects fall behind schedule.

There are NO KPAs in this level.

Below points are the highlights of this level:

- The processes within the organization are highly unstable and unpredictable.
- During crises, all the processes and procedures are either abandoned or skipped.
- The projects are purely person dependant. ie, when the persons involved leave the project or the company, things come to a halt. Also, the performance depends on the capabilities of the individuals rather then the organizational capability.
- Even if some processes remain, they are constantly changed or modified as the work progresses. (ie., the process is ad hoc).

Next - Level 2 - Repeatable

For questions, write to know.cmmi@gmail.com or leave a comment here.

Read more...

CMM - Level 2 - Repeatable

Saturday, March 28, 2009

Level 2 is the Repeatable Level.

Repeatable, as the word reveals , means that processes employed in the project are repeatable.Basic project management principles are established to track cost, schedule, and functionality. The necessary process discipline is in place to repeat earlier success on projects with similar applications using best practices from past projects.

An effective process can be characterized as practiced, documented, enforced, trained, measured, and able to improve.

Projects in Level 2 organizations have installed basic software management controls.

Some of the important points are:

- Realistic project commitments are based on the results observed on previous projects and on the requirements of the current project.
- The project managers for a project track software costs, schedules, and functionality; problems in meeting commitments are identified when they arise.
- The project's process is under the effective control of a project management system, following realistic plans based on the performance of previous projects.

Level 2 has got 6 Key Process Areas. They are:

1. Requirements management
2. Software project planning
3. Software project tracking & oversight
4. Software subcontract management
5. Software quality assurance and
6. Software configuration management


Each Key process Area has some Key Practices which are classified under the following categories:

- Commitment to Perform
- Ability to Perform
- Activities
- Measurement and Analysis
- Verifying Implementation

Next - L 2 - RM and SPP

For questions, write to know.cmmi@gmail.com or leave a comment here.

Read more...

CMM - L 2 - Repeatable - Requirement Management

Friday, March 27, 2009

Requirement Management

The purpose of Requirements Management is to establish a common understanding between the customer and the project team.

Requirements Management involves establishing and maintaining an agreement with the customer on the requirements for the software project. This agreement is referred to as the "system requirements allocated to the software." To achieve this control, the software engineering group reviews the initial and revised system requirements allocated to software to resolve issues before they are incorporated into the software project. Whenever the system requirements allocated to software are changed, the affected software plans, work products, and activities are adjusted to remain consistent with the updated requirements
Please note Software Engineering Group means the project team.

There are two goals in this KPA:

Goal 1: System requirements allocated to software are controlled to establish a baseline for software engineering and management use.

Goal 2: Software plans, products, and activities are kept consistent with the system requirements allocated to software

If we look at the various activities that are performed, the summary is as below:

The software requirements are reviewed by the team, and the requirements are used as the basis for further planning. Any changes to the requirements are reviewed. (Impact analysis, Change management process). Change cannot be avoided, but the impact to the schedule and plan must be comprehended and managed.

Next - Software Project Planning

Read more...

CMM - L 2 - Repeatable - Software Project Planning

Thursday, March 26, 2009

Software Project Planning

As the name suggests, this involves establishing reasonable plans for performing the software engineering and for managing the software project.

Software Project Planning involves developing estimates for the work to be performed, establishing the necessary commitments, and defining the plan to perform the work. There are two goals:

Goal 1
Software estimates are documented for use in planning and tracking the software project

Goal 2
Software project activities and commitments are planned and documented.

Some of the activities performed are:

- The software engineering group(i.e project team) participates on the project proposal team
- Software project planning is initiated in the early stages of, and in parallel with, the overall project planning
- The project team participates with other affected groups(like E&R, CCD etc) in the overall project planning throughout the project's life
- A software life cycle with predefined stages of manageable size is identified or defined.
- The project's software development plan is developed according to a documented procedure.
- The plan for the software project is documented.

Estimates for the size of the software work products (or changes to the size of software work products) are derived according to a documented procedure
Estimates for the software project's effort and costs are derived according to a documented procedure. Similarly the project risks, schedule etc are derived according to a documented procedure.


Next - Software Project Tracking

For questions, write to know.cmmi@gmail.com or leave a comment here.

Read more...

CMM - L 2 - Repeatable - SSM, SQM and SCM

Wednesday, March 25, 2009

Software Subcontract Management

The purpose of Software Subcontract Management is to select qualified software subcontractors and manage them effectively.

Software Quality Assurance

The purpose of Software Quality Assurance is to provide management with appropriate visibility into the process being used by the software project and of the products being built Software Quality Assurance involves reviewing and auditing the software products and activities to verify that they comply with the applicable procedures and standards and providing the software project and other appropriate managers with the results of these reviews and audits.

The software quality assurance group works with the software project during its early stages to establish plans, standards, and procedures that will add value to the software project and satisfy the constraints of the project and the organization's policies.

Goals

- Software Quality Assurance activities are planned.
- Adherence of software products and activities to the applicable standards, procedures, and requirements is verified objectively.
- Noncompliance issues that cannot be resolved within the software project are addressed by senior management.
- Some of the activities performed include the SQA group participating in the review of products, review of activities etc.

Software Configuration Management

The purpose of Software Configuration Management is to establish and maintain the integrity of the products of the software project throughout the project's software life cycle.

A software baseline library is established containing the software baselines as they are developed. Changes to baselines and the release of software products built from the software baseline library are systematically controlled via the change control and configuration auditing functions of software configuration management

Some Goals at this level are : Software CM activities are planned. Selected work products are identified and controlled.Changes to the work products are controlled.

Read more...

CMM - Level 3 - Defined

Monday, March 23, 2009

Level 3 looks from the organizational view point.

There are 7 KPAs as follows:

1. Organization process focus
2. Organization process definition
3. Training program
4. Integrated software management
5. Software product engineering
6. Intergroup coordination
7. Peer reviews


Organization Process Focus

The purpose of Organization Process Focus is to establish the organizational responsibility for software process activities that improve the organization's overall software process capability.

The important goal of this KPA is Software process development and improvement activities are coordinated across the organization.

To do an effective job of identifying and using best practices, organizations must establish a group with that responsibility and build a plan for how the organization will improve its processes. Such a plan should include periodic assessment of the organization’s process maturity, leading to plans for improvement in capability.

Next - CMM - L3 - Defined - OP, ISM, SPE

For question, write to know.cmmi@gmail.com or leave a comment here.

Read more...

CMM - L3 - Defined - OPD, TP, ISM

Saturday, March 21, 2009

Organization Process Definition

Organizational Process Defenition is the 2nd KPA at Level 3. The purpose of this KPA is to provide a usable set of software process assets that improve process performance across projects.

This involves developing and maintaining the organization's standard software process, along with related process assets.

Some goals of this KPA are to have a standard software process for the organization. Information related to the use of process by projects is collected and reviewed.

For achieving this, the organization’s standard process is documented according to established standards. Descriptions of software life cycles that are approved for use by the projects are documented and maintained. The organization's software process database is established and maintained.

Training Program

Training Program is the 3rd KPA at Level 3. The purpose of this KPA is to develop the skills and knowledge of individuals so they can perform their roles effectively and efficiently.

Training Program involves first identifying the training needed by the organization, projects, and individuals, then developing or procuring training to address the identified needs.

Each software project evaluates its current and future skill needs and determines how these skills will be obtained. Some skills are effectively and efficiently imparted through informal methods (e.g., on-the-job training and informal mentoring), whereas other skills need more formal training methods (e.g., classroom training and guided self-study) to be effectively and efficiently imparted. The appropriate vehicles are selected and used.

Some goals of this KPA are to plan the training activities, provide training for developing the skills and knowledge needed to perform software management and technical roles and to make individuals in the software engineering group and software-related groups receive the training necessary to perform their roles

For achieving this, the skills and knowledge needs at the organization level are identified, the training methods to leverage these needs are identified and approved and then these needs are met either through internal or external resources.

Integrated Software Management

The purpose of Integrated Software Management is to integrate the software engineering and management activities into a coherent, defined software process that is tailored from the organization's standard software process.

Integrated Software Management involves developing the project's software process and using it to manage the project.

So the goal here is that the project's defined software process is a tailored version of the organization's standard software process. There is a defined process for tailoring called tailoring guidelines. So the project’s software process is developed according to this tailoring guidelines. The organization's software process database is used for software planning and estimating. The other activities involved in software process like estimation, risks, reviews etc. are managed according to the documented procedure.


Next - CMM - L3 - Repeatable - OPD, TP, ISM

For questions, write to know.cmmi@gmail.com or leave a comment here.

Read more...

CMM - L3 - Defined - SPE, IC

Saturday, March 14, 2009

The purpose of Software Product Engineering is to consistently perform a well-defined engineering process that integrates all the software engineering activities to produce correct, consistent software products effectively and efficiently. Software Product Engineering involves performing the engineering tasks to build and maintain the software using the project's defined software process (which is described in the Integrated Software Management key process area) and appropriate methods and tools

Traceability needs to be maintained across work products of different life cycles.

Documentation needed to perform the software engineering tasks (e.g., software requirements document, software design document, test plan, and test procedures) is developed and reviewed to ensure that each task addresses the results of predecessor tasks and the results produced are appropriate for the subsequent tasks

Some goals at this KPA are software engineering tasks are defined and integrated. Software work products are kept consistent with each other

Activities performed can be summarized as below: Software requirements, design, codes, testing etc. are performed according to the defined process.

Intergroup Coordination

The purpose of Intergroup Coordination is to establish a means for the project team to participate actively with the other engineering groups so that the project is better able to satisfy the customer's needs effectively and efficiently
Some goals here are that various requirements between groups are agreed by all and the groups identify, track, and resolve intergroup issues.

Some activities include:

1. Representatives of the project team work with representatives of the other engineering groups to monitor and coordinate technical activities and resolve technical issues

2. A documented plan is used to communicate intergroup commitments and to coordinate and track the work performed

3. Critical dependencies between engineering groups are identified, negotiated, and tracked according to a documented procedure. Representatives of the project team conduct periodic technical reviews and interchanges


Next - CMM - L3 - Defined - SPE, IC

For questions, write to know.cmmi@gmail.com or leave a comment here.

Read more...

CMM - L 3 - Defined - Peer Rivew

Wednesday, March 11, 2009

Peer Reviews

The purpose of Peer Reviews is to remove defects from the software work products early and efficiently. An important corollary effect is to develop a better understanding of the software work products and of defects that might be prevented.

The goal of this KPA is simple : To plan group reviews and to remove defects early and efficiently.

The activities performed here include:

- Peer (Group) reviews are planned
- Reviews are performed according to documented procedure
- Data on the conduct and results of the peer reviews are recorded

Read more...

CMM - Level 4 - Managed

Thursday, March 5, 2009

Level 4 - Managed

At level 4, we define quality goals based on past data. Strategy to achieve the goals are defined. The performance is tracked at the program level using SPC chartshas.

It has 2 Process Areas:

Quantitative Process Management

The purpose of QPM is to control the actual results quantitatively. QPM involves establishing goals for performance, taking measurements at frequent intervals and analyzing and making adjustments.

Some goals here are : The QPM activities are planned. The process capability of the organizations standard process is known in quantitative terms.

The activities performed here include :

- Planning QPM activities
- The strategy for the data collection and the quantitative analyses to be performed are determined
- Data is analyzed and the process controlled suitably

Software Quality Management

The purpose of Software Quality Management is to develop a quantitative understanding of the quality of the project's software products and achieve specific quality goals. It involves setting quality goals and defining methods/strategies to achieve them.

Goals - The Quality management activities are planned and measurable goals are defined. Actual progress toward achieving the quality goals for the software products is quantified and managed.

Some of the activities performed are:

-The project's software quality plan is the basis for the project's activities for software quality management.
- The project's quantitative quality goals for the software products are defined, monitored, and revised throughout the software life cycle


Next - CMM - Level 5 - Optimizing

For question, write to know.cmmi@gmail.com or leave a comment here.

Read more...

CMM - Level 5 - Optimizing

Sunday, March 1, 2009

Level 5 is continous inprovement stage. And has 2 KPAs:

Defect Prevention

The theme here is to identify the cause of defects and prevent them from recurring. Defect Prevention involves analyzing defects that were encountered in the past and taking specific actions to prevent the occurrence of those types of defects in the future. The defects may have been identified on other projects as well as in earlier stages or tasks of the current project. Defect prevention activities are also one mechanism for spreading lessons learned between projects.

Goals: DP activities are planned, the common causes are identified. The causes are prioritized and systematically eliminated.

The major activities performed include:

- The software project develops and maintains a plan for its defect prevention activities.
- Causal analysis meetings are conducted according to a documented procedure
Each of the teams assigned to coordinate defect prevention activities meets on a periodic basis to review and coordinate implementation of action proposals from the causal analysis meetings
- Document their rationale for decisions and provide the decision and the rationale to the submitters of the action proposals

Technology Change Management(TCM)

The purpose of Technology Change Management is to identify new technologies (i.e., tools, methods, and processes) and track them into the organization in an orderly manner.The objective is to improve software quality, increase productivity, and decrease the cycle time for product development.

The organization establishes a group (such as a software engineering process group(SEPG) or a TCM support group) that works with the software projects to introduce and evaluate new technologies and manage changes to existing technologies. Particular emphasis is placed on technology changes that are likely to improve the capability of the organization's standard software process (as described in the Organization Process Definition key process area).


Goals: Incorporation of technology changes are planned, New technologies are evaluated to determine their effect on quality and productivity and appropriate new technologies are transferred into normal practice across the organization.

The major activities performed include:

- The organization develops and maintains a plan for technology change management.
- The group responsible for the organization's TCM activities works with the software projects in identifying areas of technology change.
- Technologies are selected and acquired for the organization and software projects according to a documented procedure.
- Appropriate new technologies are then incorporated into the organization's as well as Projects's standard software process according to a documented procedure.


For question, write to know.cmmi@gmail.com or leave a comment here.

Read more...

Back to TOP