
Watts Humphrey states that the software task should be treated as a process that can be controlled, measured, and improved [Humphrey95]. Process improvement is therefore a paradigm that comprises several concepts: first, the process to improve has to defined: second, the process has to be used; and third, data and metrics have to be collected while using the process. The process has to be defined, which means that all the activities to be performed have to be clearly stated including the order in which they are to be performed and when they can be considered completed (e.g., by specifying exit criteria). The results of different projects can be compared only when using a defined process.
Also, the process has to be used. To improve a process, it has to be used throughout many projects. Improvement comes with experience. When the same process is used over different projects, it is possible to find ways in which the process can be improved. These improvements are usually small improvements that are relatively easy to implement. But by continuously improving weak areas in the process over time, the overall quality of the process will be improved. Finally, data and metrics have to be collected. These are collected to determine if the changes incorporated into the process are really improvements or not and to quantify these improvements.
Process improvements can be addressed at different levels. It can be addressed at an organizational level, at a project level, and even at an individual level. Different quality models identify processes at each of these levels. At an organizational level it is addressed by the quality models such as the Capability Maturity Model (CMM) developed by the Software Engineering Institute and ISO 9001 developed by the International Standards Organization. The CMM identifies the key process areas that have to be addressed to achieve a certain level of maturity. When all the 18 key process areas have been addressed, the company is considered a level 5 organization (i.e., a mature organization). In the CMM, process improvement is implied in the concept of maturity itself but it is more specifically addressed in the key process areas of level 5. The ISO 9001 does not particularly address the concept of process improvement, it just states the minimum criteria to achieve the ISO certification. But according to Mark Paulk [Paulk94b], some members of the international community maintain that process improvement is addressed in the ISO 9001 if read with insight.
At a project level, process improvement is addressed in the Software Process Improvement and Capability dEtermination (SPICE) model. This model identifies 35 processes organized in 5 categories. Each process can be performed at 6 different levels, from level 0 (not performed) to level 5 (continuously improving). Process improvement is then the highest level achieved for each specific process. At this level, each process will continue improving based on the experience obtained while using the process throughout different projects.
At the individual level, process improvement is addressed in the Personal Software Process model developed by Watts Humphrey [Humphrey95]. In this model, each individual goes through a series of levels (from PSP0 to PSP3) in which new steps are added that make the process more mature. Process improvement is included early in the model, at level PSP0.1, in a form called Process Improvement Proposal. Every individual is expected to find improvements to the process from this level on and implement those improvements as soon as possible.
Another interesting concept in process improvement is that of packaging the experience in the Software Factory model developed by Victor Basili [Basili90]. Process improvement is based on the gathering of experience. The experience is obtained by using the process in many projects. Most of the models incorporate the concept of software improvement but they do not explain how it should be done. Victor Basili is more specific in how process improvement should be performed. Process improvement requires that continuous experience is evaluated and analyzed and is incorporated into experience bases that are repositories of the experiences that can be accessed and tailored for specific projects. Experience can be packaged in different forms such as equations, histograms and charts, lessons learned, models or algorithms, methods, and techniques. Basili also states that the organization should have a series of processes for learning, packaging, and storing experience. Packaged experience does not apply only to process improvement but when applied to process improvement, it is more specific than other models about how to perform process improvement.
In summary, process improvement is a paradigm based on the use of processes to develop software and based on continuous improvements on the processes. The goal of process improvement is to obtain processes of higher quality which in return will lead to software products of higher quality. Process improvement can be addressed at different levels such as organizational, project, or individual level. Different quality models address process improvement at each of these levels. Finally, there is no final word on which model is the best for developing software but I believe that process and process improvement is the only way to achieve the quality necessary for software at the present time.
References
Basili90 Victor R. Basili, "The Software Factory (The Experience Factory: Packaging Software Experience)" (Video Notes), IEEE Computer Society Press, Los Alamitos, CA, 1990.
Humphrey95 W.S. Humphrey, A Discipline for Software Engineering, Addison-Wesley, Reading, MA, 1995.
Paulk94a Mark C. Paulk, "The Evolution of SEI's Capability Maturity Model for Software", Software Engineering Institute, CMM Evolution, October 16, 1994, page 1.
Paulk94b Mark C. Paulk, "A Comparison of ISO 9001 and the Capability Maturity Model for Software", Software Engineering Institute, CMU/SEI-94-TR-12, July, 1994

Return to the Grant-in-Aid Page
Last modified on Sunday, September 1, 1996 | Society for Software Quality | http://www.ssq.org/ |