Measure Your Maturity With CMM
How is your development process working? Use CMM to determine which processes are doing well, and what needs improvement.
by Brian Noyes
Posted August 5, 2002
Most of the software process articles on FTPOnline's Managing Development site focus on different methodologies, what comprises them, how to determine if the methodology will work for you, and a little on how to implement them. In this article, however, I'll focus on how to determine how well you're doing with a software process. One of the biggest problems many organizations have with their processes is figuring out how to determine whether they're doing everything they need to do, and if not, what they must do to improve.
Back in the early 1990s, the software industry's shortfalls began coming into view. Too many projects were being delivered extremely late, over budget, and with too many failures and flaws in the final products. The Software Engineering Institute (SEI) at Carnegie Mellon University stepped up to the plate and developed the Capability Maturity Model (CMM) as a way to capture the process elements, practices, and artifacts necessary during a product's software development lifecycle. CMM was not extremely detailed, and in some ways it seemed like common sensethe only problem was hardly anyone performed all the basic tasks CMM outlined.
Depending on what you do in the software industry, CMM might be an unfamiliar concept. It's well known in government software development. For some government contracts, you can't even bid on the work unless you are certified by SEI as having achieved a certain CMM level. Big corporations also have been using CMM for large projects as a means to manage the complexities of large software development teams and measure how they are doing. But small companies probably haven't heard of it, and unless you have government customers who demand it, you probably don't want to bother with certification. One of CMM's biggest criticisms is that it tends to push companies toward a process model similar to the waterfall software development model, which the majority of the software industry recognizes as too rigid for real success.
CMM does not specify any particular process model. But it does dictate guidance on how to measure the maturity of your process, as well as outline certain Key Process Areas (KPAs) that it deems necessary for achieving different maturity levels. CMM defines five maturity levels (see Figure 1): Initial (Level 1), Repeatable (Level 2), Defined (Level 3), Managed (Level 4), and Optimizing (Level 5). For each level, CMM outlines certain KPAs along with the process artifacts required for that KPA to be certified at each level. The KPAs include areas such as requirements management, quality assurance, configuration management, training, and peer reviews.
CMM grew and expanded from software process management to other technical arenas, including system engineering and workforce management. These three CMMs grew in parallel as separate models, although they shared many elements and were all needed by larger engineering organizations for guiding and measuring process development and management. SEI recently released the first version of a new standard called Capability Maturity Model Integration (CMMI) that merges the KPAs of the three previous versions into a single process-measurement model.
The downside to CMM is that it requires a heavyweight process to meet all the guidelines for each KPA and produce all the associated artifacts necessary to get certified at a certain process maturity level. Also, interpreting specifically what you need to do or have in place to get certified at a given level can be vague and difficult. But CMM is well recognized in the industry as a well-established measurement of process maturity, and you can find an immense amount of information through SEI's Web site and numerous books on the subject (see Resources). In fact, a whole cottage industry has cropped up around CMM, with consultants and trainers who can help your company along the path to maturity if you can afford it. Many would argue that you can't afford to pass up the opportunity because, in the long run, achieving process maturity should save you money. But the cost of getting there, especially with outside assistance, is significant and takes real commitment from management and the development team.
But consider thisyou don't necessarily have to buy into CMM for certification purposes in order to benefit from it. You can use CMM as a guideline or ideal to tailor or shape your own company's process, and you can use its documentation, KPAs, and the KPAs' identified artifacts to decide what you might be missing in your own process and what you want to adopt from a best-practices perspective. As long as you're not shooting for certification, you can use CMM as you do many of the other processes out thereas a template from which you can draw the process elements that suit your needs.
The bottom line: If you're part of a company seeking a structured approach to measuring and monitoring your process, CMM is worth a look. If you want maximum flexibility in your process and don't want anything that resembles a waterfall approach, CMM still provides useful information and guidance.
About the Author
Brian Noyes is a consultant, trainer, and writer with IDesign Inc. Brian specializes in architecture, design, and coding of .NET distributed data-driven Windows and Web applications, as well as office automation and desktop productivity applications. He's an MCSD with more than 12 years of programming, design, and engineering experience, and is a contributing editor for asp.netPRO and other publications. E-mail him at brian.noyes@idesign.net.
|