CMMI is a well-known and standardized model for assessing and improving software and systems development processes. It can be used to guide process improvement across a project, a division, or an entire organization. CMMI was developed at the Carnegie Mellon Software Engineering Institute (SEI). The current version, 1.2, was published in 2006 and is being adopted worldwide.
This book provides hands-on experience and will help the reader to gain an understanding of CMMI. It is an introduction to the model and its fundamental ideas. Through numerous examples, it helps the reader to get started with CMMI and to understand the interrelationship among model components (practices, goals, and process areas).
The book covers the following topics:
Model-based process improvement
Overview of CMMI components
History of CMMI and comparison to CMM
Process areas of CMMI models
Application, potential, and limitations of CMMI
Review By: Sandesh Tattitali 06/29/2009This is a good introduction book to CMMI. Over the past decade, the rise of agile methodologies seems to have pushed CMMI to the background, but readers will be well served by at least knowing about CMMI and the concerns it addresses. The author has a decade’s worth of experience working with CMMI, and the book reflects that experience in quite a few places. The book is aimed at software development managers and QA staff looking for a tool to improve their development processes as well as the employees in organizations that work with CMMI. This book is mostly geared towards someone who is new to CMMI. Seasoned practitioners might not derive much benefit from reading it.
The author starts with a brief introduction on the history of CMMI. This is followed by an introduction to CMMI itself with a discussion on the two variants of CMMI viz. staged representation and continuous representation. Chapter 4 forms the core of the book and covers all the process areas of CMMI and all of its levels. The author then discusses the concepts involved in introducing CMMI into an organization. This is followed by an exploration of the relation between CMMI and Agile processes, more specifically XP, and also how CMMI fits in with other models viz. ISO/IEC 15504 (SPICE), RUP, etc. There is also coverage of the synergies between CMMI and ITIL and CMMI’s relation with ISO 9001. Readers who are looking for answers to how CMMI is different from any or all these other models will find quite a few of their questions answered in this section. The author then presents an objective evaluation of CMMI, discussing a few of the shortcomings of CMMI. The last chapter focuses on appraisals and assessments associated with moving up the CMMI levels and also as a means for process improvement. Sidebar stories follow a fictitious company in its journey through CMMI, thereby adding to the understanding of the topics.
Throughout the book, the author does a good job of expressing his opinions and recommendations based on his experience. The author is pretty objective about CMMI and doesn't come across as trying to push CMMI on the reader. On the contrary, the text is peppered with advice about treating CMMI as a tool and not forgetting the overall goal of "process improvement" and how a more flexible development process might be beneficial to organizations where the environments and requirements are variable. To me, that was the hallmark of the book.
I hoped that the author would address the relation between CMMI and agile methodologies in more depth, but the cursory overview of CMMI and XP did leave something to be desired. Other than that minor disappointment, I was quite satisfied with the book.
I would recommend this book to anybody who is starting down the path of process improvement. It is also recommended for agile practitioners so that they can objectively evaluate CMMI to gather synergies that exist between agile and CMMI, since the end goal of all methodologies is that of process improvement. Finally, students of software engineering will get a better idea about all that is involved in software projects by browsing through the process areas addressed by CMMI.