A Software Trend Worth Its Buzz
By Charles Connell
Every few years, there is a new trend in software development that supposedly will clean up all of its problems. In this vane, we have seen high-level languages, visual programming, object oriented methods, and reusable software. Now comes the latest cure for all the woes of software project management -- the Software Capability Maturity Model (CMM) from Carnegie-Mellon University. Originally developed for large defense contractors, CMM now is being embraced by many commercial businesses for product development and internal programming projects.
CMM defines a set of five "maturity" levels for software development organizations and details the attributes of each level. Level 1 covers any software process at all; simply by writing a program you are automatically at Level 1. Level 5 characterizes a sophisticated software shop that consistently produces high-quality results, on time and on budget. In addition, Level 5 organizations systematically improve themselves by self-examination and internal process tuning. In between, Levels 2, 3 and 4 define various steps along the road to improvement.
CMM is hot in the software development world. There are many classes on the subject (often taught at Carnegie-Mellon). Companies are committing to CMM as the blueprint for their improvement. Consultants make a lot of money helping organizations evaluate their current state and plan for advancement. There are officially certified CMM "assessors" who can bless an organization with their stamp of approval for one of the maturity levels.
Does all the buzz make sense? Is CMM the path to software sanity? The answer is a qualified "Yes".
CMM spells out many of the best practices currently known in software engineering. Much of CMM is the software equivalent of telling baseball players that they should hit the ball with the bat. You won't go wrong heading this advice. Following CMM also short-circuits many years of trial and error for an organization, since it is based on years of trial and error at other organizations. Finally, CMM provides an orderly plan for improving software development methods gradually, through the levels that build on each other.
As with all putative software project panaceas, CMM also has a few drawbacks. CMM relies crucially on repeating known practices, but this does not apply to "first of its kind" development. And many software projects are the first of their kind, such as research and new product development. Molding an organization into the practices of CMM is a long process, often 12 to 24 months. CMM offers little help to a particular project that is in trouble this week.
If CMM is used as a seal of approval only, without a real commitment to its philosophy, the effort ultimately will fail. Top-level management needs to believe, "We are committed to improving our software development method. If CMM did not exist we would find another model to follow." Finally, an organization implementing CMM must understand its tenets and their own business goals, and think creatively about how to mesh the two. CMM is not a fixed set of processes that are certain to work in all cases. It must be applied in an intelligent manner, taking into account each organization's uniqueness.
Biography: Charles Connell is president of CHC-3 Consulting in Woburn (www.chc-3.com) and teaches computer science at Boston University.
(Note: This is the text of my article, as submitted to the Boston Globe. The published version was edited slightly.)