The Capability Maturity Model Integration[3] for Software (CMMI) is an industry-standard model for defining and measuring the maturity of a software company's development process and for providing direction on what they can do to improve their software quality. It was developed by the software development community along with the Software Engineering Institute (SEI) and Carnegie Mellon University, under direction of the U.S. Department of Defense.
What makes CMMI special is that it's generic and applies equally well to any size software companyfrom the largest software company in the world to the single-person consultant. Its five levels (see Figure 21.5) provide a simple means to assess a company's software development maturity and determine the key practices they could adopt to move up to the next level of maturity. Figure 21.5. The Software Capability Maturity Model is used to assess a software company's maturity at software development.As you read on and learn what each of the five levels entails, think about the following: If you take the entire universe of software companies today, most are at Maturity Level 1, many are at Maturity Level 2, fewer are at Maturity Level 3, a handful are at Maturity Level 4, and an elite few are at Maturity Level 5. Here are descriptions of the five CMMI Maturity Levels:
Do any of these levels sound like the process used at a software development company you know? It's scary to think that a great deal of software is developed at Level 1but it's often not surprising after you use the software. Would you want to cross a bridge that was developed at Level 1, ride an elevator, fly on a plane? Probably not. Eventuallyhopefullyconsumers will demand higher quality software and you'll see companies start to move up in their software development maturity. NOTE It's important to realize that it's not a software tester's role to champion a company's move up in software development maturity. That needs to be done at a corporate level, instituted from the top down. When you begin a new testing job, you should assess where the company and your new team is in the different maturity levels. Knowing what level they operate in, or what level they're striving for, will help you set your expectations and give you a better understanding of what they expect from you. For more information on the Capability Maturity Model, visit the Software Engineering Institute's website at www.sei.cmu.edu/cmmi. |