SOFTWARE PROCESS IMPROVEMENT

USING

CAPABILITY MATURITY MODEL

Prepared By

NAGARAM RITESH REDDY

ABSTRACT:

A software process is defined as a collection of artifacts, attributes, activities, methods and procedures that we use to build new software or to maintain already existing software and its related products. In the way of developing or maintaining a software process introducing new methods for further refinement of product quality and other related attributes is called Software process Improvement. There are many models used for software process improvement among them we take the model called Capability Maturity Model (CMM) which is used for improving the software process of a product [1]. The main objective of this paper is to give a brief description about Capability Maturity Model (CMM) and discuss about its working.

INTRODUCTION:

Organizations which are developing software processes are facing many problems regarding the need for change of the already existing structure. The changes are to be occurred due to many obligations that are being raised as the time progress. Some of the issues are

  • The likes of the customers that are being changed time to time.
  • Dissatisfaction of the customers towards the product
  • Software quality of the product.
  • Time taken to complete the product.
  • Improper time management in delivering the products.
  • Cost, Budget and Scheduling.
  • No proper staffing, Re-work.
  • Efficiency and Re-Usability.

So to overcome the issues mentioned above we need to develop a software improvement process which can take control of all these and yield us good results. There are many processes as such for software improvement but the best and the more efficient one which has universal importance and which is adopted by many organizations is Capability Maturity Model (CMM) [2,3].

Software Process:

A standard software process is defined in 3steps:

Policy: - It describes about, under what circumstances the process is to be followed. Policies are general statements or guidelines of organization which represents functional body.

Process: - It describes about “what to do” in the process. It deals with basic view of some of the important areas of the process like identifying key activities, planning, staffing, scheduling, risk management etc.

Procedure: - It describes about “how to do” in the process. It is a step-by-step procedure kind of process which identifies tools, methods and techniques to be used to develop a software process [3].

Capability Maturity Model (CMM):

About CMM:

Capability Maturity Model is a method used to improve the software process of an organization. CMM was first described by Watts Humphery and it was later developed by Software Engineering Institute (SEI) at Carnegie-Mellon University. Firstly it was applied for assessing the ability of government contractors, but now days due its high efficiency rate it is being applied to Software Engineering, Software Maintenance, Risk management, Project Management and System Engineering.It is also internationally standardized as part of ISO 15504 [2].

Description:

There are five phases or levels in Capability Maturity Model (CMM). Each phase indicates some group of actions to be performed. All these phases are to be executed in orderly fashion [4].

Phase 1 : Initial

Phase 2 : Repeatable

Phase 3 : Defined

Phase 4 : Managed

Phase 5 : Optimized

Fig.1 Phases of Capability Maturity Model

Initial:

It is the starting phase of the model. This is the stage where the process will be ready to be nurtured. Documentation is not yet prepared at this stage. Initial knowledge about requirements, cost, schedule etc. will be going on. It is very important to first know what the process will do, because without the knowledge of what the process is we cannot control or manage it efficiently [5].

Repeatable:

For consistent results some of the processes in the project are repeatable. Processes in this phase ensure us that these are consistently maintained even during the time of stress. Basically management has a over-view of what the output is at desired step, but there is every chance for the processes to fluctuate around the desired output at that point, but repeatable process may not give accurate but gives consistent results. There are some key process areas where this phase will concentrate upon. They are :

  • Requirement Management.
  • Software Project Planning.
  • Software Project Tracking and Oversight.
  • Software Subcontract Management.
  • Software Quality Assurance.
  • Software Configuration Management [5].

Defined:

Its prime focus area is on tailored engineering and process management. At this level some processes are defined to establish some consistency in the organization. These defined processes are subject to change as the time progress. Over a time span the requirements, product functionalities, additional features will be changing so accordingly defined processes will also change. The key areas on which they concentrate are :

  • Organization processes Focus.
  • Organization processes Definition.
  • Training Program.
  • Integrated Software Management.
  • Software Product Engineering.
  • Intergroup Coordination.
  • Peer Reviews [5].

Managed:

The main focus in this phase is about the quality of processes and products. The performance of the process is measured by the techniques used for the quality assurance of the product. The key areas upon which they concentrate are:

  • Quantitative process Management.
  • Software Quality Management [5].

Optimizing:

This is the final and important phase of the model. The main focus in this stage is to increase the process performance continuously. A change is required continuously due to changing business objectives, changing customer needs, improving quality, reducing time etc. The key areas on which this phase concentrates are :

  • Process Change Management.
  • Technology Change Management.
  • Defect Prevention [5].

Conclusion:

Capability Maturity Model is one of the best model for process improvement which is used by many big organizations all over the world. Step by step procedure process makes it easy to implement. It covers all the important areas of the process thoroughly. It provides us with very good documentation.

Future Enhancements:

  • CMM is a very good model for a big organization, but when coming to small projects which have very less to produce or change does extension of scheduling, cost estimation, training programs, budget etc required?
  • Quality Assurance is the fourth step of this model. I think that some kind of quality metrics should be established at all the phases because small change in that step leads to repetition of the process from beginning.
  • Staffing is not given much importance in this model which I think is also one of the major areas in a organization.
  • Organizations using CMM model cannot be assured with definite results. It is one of the methods by using so would increase the project’s chance of being successful.

References:

[1] Dangle,K.C ; Larsem, P ; Shaw, M ; Zelkowitz,M.V, “Software Process Improvement in Small Organizations: a case study” Software IEEE, Volume 22, Issue 6, P.68-75,2005.

[2] Beth Layman, “Planning for Process Improvement” Implementing an Organizational Software Process Improvement programme, P.279-288.

[3] Cusick, k, “The System Engineering Capability Maturity Model: Where to start?” Aerospace and Electronics Conference, Volume 1, P. 410-416,1997.

[4] Mark C.Paulk, “An Overview of Software CMM” Using the Software CMM in Small Organizations, P.1-13, 1998.

[5]