转自Steve McConnell的《Professional Software Development》
Overview of SW-CMM
The practices I was describing were loosely based on the Capability Maturity Model for Software (SW-CMM), developed by the Software Engineering Institute (SEI). The SW-CMM was originally proposed in 1987 and is currently the best known and most effective approach to systematic software organization improvement. It represents the path most frequently traveled to achieve the business case benefits described in Chapter 13.
The SW-CMM classifies software organizations into five levels:[1]
Level 1: Initial. Software development is chaotic. Projects tend to run over budget and behind schedule. Organizational knowledge is contained only in the minds of individual programmers; when a programmer leaves an organization, so does the knowledge. Success depends largely on the contributions of individual "hero" programmers of the kind described in Chapter 7. These organizations tend to use code-and-fix development. Organizations are at this level by default unless they've deliberately adopted more effective approaches.
Level 2: Repeatable. Basic project management practices are established on a project-by-project basis, and the organization ensures that they are followed. Project success no longer depends solely on specific individuals. The strength of an organization at this level depends on its repeated experience with similar projects. The organization may falter when faced with new tools, methods, or kinds of software.
Level 3: Defined. The software organization adopts standardized technical and management processes across the organization, and individual projects tailor the standard process to their specific needs. A group within the organization is assigned responsibility for software process activities. The organization establishes a training program to ensure that managers and technical staff have appropriate knowledge and skills to work at this level. These organizations have moved well beyond code-and-fix development, and they routinely deliver software on time and within budget.
Level 4: Managed. Project outcomes are highly predictable. The process is stable enough that causes of variation can be identified and addressed. The organization collects project data in an organization-wide database to evaluate the effectiveness of different processes. All projects follow organization-wide process-measurement standards so that the data they produce can be meaningfully analyzed and compared.
Level 5: Optimizing. The focus of the whole organization is on continuous, proactive identification and dissemination of process improvements. The organization varies its processes, measures the results of the variations, and diffuses beneficial variations as new standards. The organization's quality assurance focus is on defect prevention through identification and elimination of root causes.
The underlying principle of the SW-CMM can be attributed loosely to Conway's Law: The structure of a computer program reflects the structure of the organization that built it.[2] Chaotic organizations produce chaotic software. Organizations that hire programming heroes, give them lots of autonomy, and set them loose to create coding miracles produce software that is alternately brilliant and erratic. Organizations bloated with inefficient processes produce piggy, sluggish software. And, presumably, efficient, optimizing organizations produce finely tuned, highly satisfactory software.