CMM, PSP and TSP as a Framework for Adopting Systematic Reuse - part 2
Martin L. Griss, Laboratory Scientist, (firstname.lastname@example.org)
Software Technology Laboratory
(Object Magazine, June 1998.)
In my previous column, I discussed how it makes good business sense to link the steps required to incrementally improve software reuse practice ("the reuse program") with a program directed at improving software development process capability ("the SEI program"). I related the six incremental improvement stages of a Reuse Maturity Model (RMM ) to the five levels of the SEI Capability Maturity Model (CMM)â .
In this column, I delve into how a reuse program integrated with an SEI program can take advantage of the Personal Software Process (PSP) SM, the Team Software Process (TSP)SM and the reuse-oriented aspects of the CMM Key Process Areas (KPAs).
Maturity Models Indicate Growing Reuse Process Competence
Most reuse programs go through stages of increasing formality and organizational ability to create, manage and reuse carefully designed reusable assets. These stages, driven by increasing experience and business need, are summarized in the six levels of the simple Reuse Maturity Model (RMM) described in more detail in the March column:
RMM 1 - No-reuse.
RMM 2 - Informal code salvaging.
RMM 3 - Planned black-box code reuse.
RMM 4 - Managed workproduct reuse.
RMM 5 - Architected reuse.
RMM 6 - Pervasive domain-specific reuse.
The SEI CMM is a framework for staged process improvement that prescribes the kinds and quality of a group of processes that should be used at each level. The five levels of the Capability Maturity Model and corresponding Key Process Areas (KPAs) are:
CMM 1 - Initial (No specific formal processes)
CMM 2 - Repeatable Requirements management ; Software project planning; Software project tracking and oversight; Software subcontract management; Software quality assurance; Software configuration management.
CMM 3 - Defined Organization process focus; Organization process definition; Training program; Integrated software management; Software product engineering; Intergroup coordination; Peer reviews.
CMM 4 - Managed Quantitative process management; Software quality management.
CMM 5 - Optimizing Defect prevention; Technology change management; Process change management.
In the decade since 1987, an increasing number of organizations used the CMM to guide their process improvements. In 1987, only a few dozen organizations were assessed, and the vast majority were at level 1. Ten years later, more than 600 organizations have reported CMM results. A significantly greater proportion are now operating at levels 2 and 3. After several years spent on process improvement, they see an average 35% productivity improvement per year, 19% reduction in time to market and 39% improvement in quality.
As described in the March column, the CMM is a reuse-friendly process improvement framework. While it does not prescribe the processes in detail, there are specific reuse-oriented choices projects and the organization can make as it designs these processes.
The Personal and Team Software Processes
The CMM enables and facilitates good work and reuse, but does not guarantee it. Engineers must use effective personal and team practices. A specific process improvement plan must describe standard processes, metrics and training, that match the specific business and software development needs of the organization.
The Personal Software Process (PSP)[3, 4, 5] (PSP) provides a detailed, bottom-up approach to process improvement. PSP brings discipline to the practices of individual software engineers, dramatically improving quality, predictability and cycle time. The PSP guides engineers in measuring, evaluating and improving the way they do their software engineering tasks. They set personal goals, measure and analyze their work, and adjust their processes to meet their goals. Individuals develop new habits so that they become aware of their processes and how those processes perform. Continuing management attention helps engineers use and maintain these new habits. A related Team Software Process (TSP), still under development, offers promise in describing how teams should operate in accord with the PSP.
The PSP is best introduced by a rigorous training program, offered to new programmers or to all members of a project team. PSP is introduced incrementally, using lectures, exercises, reports, personal logs and templates. Completion of PSP training results in a personal process with significant reuse, and improved skills and discipline in:
In a typical PSP class, students reduced defects by a factor of 5, and improved their ability to estimate project time by a factor of 2. In some cases, they improved productivity by 20-30%, while greatly increasing the proportion of time spent on design as compared to coding or testing. In industrial use, similar results are obtained Ė project schedule estimation errors drop significantly, defects are reduced, and test time radically reduced.
The Team Software Process (TSP) is still under development. It refines and extends both CMM and PSP to guide engineers to work effectively in development and maintenance teams. The current TSP uses 23 scripts and 14 templates and 3 standards. TSP provides standard, proven answers to the many questions about schedule management, project tracking and other software development strategies that plague teams when planning a project and moving from phase to phase. Early results with TSP show that it helps teams identify and remove close to 99% of defects before test. TSP also helps teams gather the data needed to quickly assess component quality before integration and test. A novel "component quality profile" is used to quickly judge five quality parameters. High quality components are key to successful organizational reuse.
Integrating Reuse Adoption with CMM and PSP-Driven Improvement
To get increasingly systematic reuse, certain processes and skills have to be defined with increasing rigor, and followed with increasing precision. Several of the CMM KPAs are essential parts of the reuse process. The PSP methods explicitly address reuse, specifically during design and project estimation.
Watts Humphrey asserts that "Reuse is important for the PSP both because it can substantially improve your productivity and because it demands extraordinarily high-quality software. One PSP objective is to develop the personal process disciplines needed to produce reuse-quality software.". PSP provides several reuse-oriented planning, measurement, component creation and organization guidelines.
PSP discusses reuse standards, and how reuse must be addressed during estimation, design and reviews. Reuse-quality software is produced by following a process that utilizes good design standards and effective design verification methods. Reuse standards ensure that standard components are used correctly, and that a programmer has taken maximum advantage of available reusable components. Consistent design standards, such as calling and naming conventions, header standards, test standards and documentation provide a basis for effective sharing within a team. Reusable parts must be precisely specified, and properly supported.
PSPís PROxy-Based Estimation (PROBE) method specifically describes the need to identify reused objects that will become part of the design, as well "new reused" objects that are sufficiently general to be put in the reuse library. It requires different size estimates for new code, reused code and new reused code. There is extensive discussion on how to measure and estimate amounts of reuse, and how these measures are to be used to motivate engineers to do the right kind of reuse.
An effective reuse program will require effective (multi-project) project management, requirements management and quality control, supported by careful configuration management. Most of the CMM Level 2 KPA's are needed for almost any form of reuse:
Managed workproduct reuse (RMM 4) requires even more organizational process support. Decisions impacting many teams are made on a regular basis, such as which components are being produced or supported. Many CMM 3 KPAs support, or should be adapted to, the reuse process:
Architected reuse (RMM 5) requires most of the discipline and well-defined processes characteristic of CMM 3. Installing systematic reuse can help focus on these well-defined processes. The domain engineering and architecting processes that discover the commonality and variability need to be well-defined, need to link the needs of multiple projects, and control how they develop applications to conform to this architectures. Finally, well-managed, cost-effective pervasive domain-specific reuse (RMM 6) requires the measurement-driven process and product improvement characteristic of CMM 4 and 5.
The SEI is revising the current CMM Version 1. In the most recent draft of CMM Version 2, several KPAs have been renamed or refined. Restructuring will continue as several CMM models are integrated into a common maturity model framework. A new Level 4 KPA, Organization Software Asset Commonality, captures the concept of common software assets. It deals with management guidelines, software and organization processes, and metrics needed to effectively handle common assets. It mentions opportunistic reuse and reengineering, as well as business-driven domain engineering and product line reuse, involving common assets and variants across domains or product families. Senior management has a key role in organizing and driving "domain specific" and "product line" reuse. The management of a reuse library and reuse metrics is also key.
In our experience, several of these activities can be started and yield beneficial results much earlier than CMM 4. Simple domain engineering techniques can be applied as early as the CMM 2 repeatable phase, with most benefit at RMM 3 Black Box reuse. Widespread domain engineering is most cost effective for architected reuse (RMM 5) practiced systematically and formally across the organization at CMM 3.
Integrating the reuse program with the SEI program allows one to pay attention to the reuse process content of each of the key process areas and helps address some key resource allocation questions.. Many of the CMM process KPAs, as well as process elements from PSP and TSP can be directly oriented towards improving the production, handing and use of various reusable artifacts. As more organizations achieve levels CMM 2 and 3, or higher, the opportunities for simultaneously improving reuse will increase.
For more information on the SEI, CMM and PSP, see http://www.sei.cmu.edu/technology and also the excellent CrossTalk pages at http://www.stsc.hill.af.mil
 M Griss, CMM as a Framework for Adopting Systematic Reuse, Object Magazine, March 1998, pp. 60-62,69.
 WS Humphrey, Three Dimensions of Process Improvement - Part I: Process Maturity, Crosstalk, Ogden ALC/TISE, Hill AFB, Utah, Vol 11, # 2, Feb 1998, 14-17.
 WS Humphrey, A Discipline for Software Engineering, Addison-Wesley, Reading, MA, 1995.
 WS Humphrey, Introduction to the Personal Software Process, Addison-Wesley, Reading, MA, 1997.
 WS Humphrey, Three Dimensions of Process Improvement - Part II: The Personal Process, Crosstalk, Ogden ALC/TISE, Hill AFB, Utah, Vol 11, # 3, Mar 1998, 13-15.
 WS Humphrey, Three Dimensions of Process Improvement - Part III: The Team Process, Crosstalk, Ogden ALC/TISE, Hill AFB, Utah, Vol 11, # 4, Apr 1998, 14-17.