HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
The Capability Maturity Model (CMM) is a widely adopted set of guidelines for evaluating and improving an organization's software development processes. The CMM is a general framework, however, and provides no specific guidance for implementation; instead, each organization must relate CMM characteristics to its own processes. As a consequence, the need has emerged for comprehensive accounts of successful CMM implementations, as well as for detailed descriptions of how software projects are executed in those cases. Such real-world examples can serve as a valuable resource for managers and developers responsible for setting up the CMM and carrying out their own projects.
CMM in Practice comprises such a resource. Examining the various stages in the life cycle of a typical software project at Infosys Technologies, the book describes the technical and management processes used to initiate, plan, and execute the project. To enhance the discussion, an actual Infosys project is used as a running example throughout the book. The author, who was one of the main architects behind the quick transition from ISO to CMM at Infosys, shows how these working processes relate to the Key Process Areas of the CMM. He also illustrates how relatively simple and familiar approaches can be combined to raise an organization's software maturity level.
CMM in Practice covers these topics and more:
Preface.
1. Introduction.
Process-Based Approach for Project Execution.
Capability Maturity Model for Software.
Processes at Infosys.
Summary.
I. PROJECT INITIATION.
2. Proposals and Contracts.Customer and Vendor Interaction.
The Proposal.
The Contract.
Summary.
3. Requirements Specification and Management.Requirements Analysis and Specification.
Requirements Change Management.
Traceability Management.
Example: The WAR System.
Summary.
II. PROJECT PLANNING.
4. Process Definition and Tailoring.Development Process.
Process Tailoring.
Summary.
5. Process Database and Process Capability Baseline.Software Metrics and Process Management.
Process Database.
Process Capability Baseline.
Summary.
6. Effort Estimation and Scheduling.Background Information for Estimation.
Bottom-Up Estimation.
Top-Down Estimation.
Scheduling.
Summary.
7. Quality Planning and Defect Estimation.Quality Management.
Quantitative Quality Management Planning.
Summary.
8. Risk Management.Background.
Risk Assessment.
Risk Control.
Examples.
Summary.
9. Project Management Plan.Project Management Plan.
Example: Project Plan of WAR 2.0.
Summary.
10. Configuration Management.Configuration Management Concepts.
Configuration Management Process.
Document Control.
Example: Configuration Management Plan of the WAR Project.
Summary.
III. PROJECT EXECUTION AND TERMINATION.
11. Life Cycle Execution.High-Level Design.
Detailed Design.
Build.
System Testing.
Acceptance and Installation.
Summary.
12. Peer Review.Review Process.
Data Collection.
Monitoring and Control.
Introduction of Reviews and the NAH Syndrome.
Summary.
13. Project Monitoring and Control.Data Collection.
Project Tracking.
Quantitative Monitoring and Control.
Defect Analysis and Prevention.
Summary.
14. Project Audits.Audit Process.
Audit Analysis.
Summary.
15. Project Closure.Project Closure Analysis.
Archiving.
Closure Analysis Report for WAR 2.0.
Summary.
Appendix A. From ISO 9000 to CMM.Worldwide, the demand for software is increasing at a rapid pace, with no end in sight for this growth in appetite. The growth has also spawned a dramatic increase in software development activity. In turn, this increased software development activity has sharpened the focus on the processes used for building software, collectively known as the software process. Although opinions differ on the nature and formality of the software process, there is now general agreement that use of proper processes is extremely important for an organization that seeks to deliver high-quality software and increase its own productivity.
The heightened importance of the software process has engendered a need for process improvement, which also requires methods for process analysis and assessment. One of the most extensive and influential software process improvement and assessment frameworks is the Capability Maturity Model (CMM) for software developed by the Software Engineering Institute (SEI) at Carnegie Mellon University. The CMM categorizes software process maturity into five levels: from level 1 (the lowest) to level 5 (the highest). For each level, the CMM specifies some key process areas (KPAs), which represent the areas on which an organization should focus if it wants to move to a particular level. Each KPA is associated with goals that represent the requirements to be satisfied by the process for that KPA. The KPAs for different maturity levels can be used for assessing the capability of the existing process, as well as for identifying the areas that need to be strengthened so as to move the process from a lower level of maturity to a higher level.
The CMM framework is quite general and not prescriptive. Although organizations can implement CMM in different ways, relating the characteristics mentioned in the CMM to real-life practices and processes can prove difficult. This book describes the set of processes used for executing a project at Infosys Technologies Ltd., a large software house headquartered in Bangalore, India. Infosys was formally assessed at CMM level 4 in December 1997 by two SEI-authorized lead assessors.
Rather than just explaining the various technical and management processes employed by Infosys, this book describes the processes as they appear at various stages in the life cycle of a project. Because the life cycle of a project includes both technical and management processes, this approach ensures that most processes affecting a project are explained. This approach is also one to which both practitioners and students can more easily relate. It does leave out the organization-level processes for supporting and managing the process activities. Some aspects of these processes have been described here, wherever their inclusion would not break the flow of the book. In addition, an article describing the management of the CMM framework implementation at Infosys is included as Appendix B.
The book includes 15 chapters. Chapter 1 gives a brief overview of the CMM and describes some organization-level support for processes at Infosys. The remaining chapters focus on project execution, and are organized into three parts. Part I (Chapters 2 and 3) deals with processes that are executed before the project formally commences. Part II (Chapters 4 through 10) deals with project planning activities. Part III (Chapters 11 through 15) examines project execution and termination. Most chapters focus on some key task in a project and have been kept as independent as possible of the other chapters.
It is not the intent of this book to provide extensive coverage of the literature or detailed explanations of the CMM. The main goal is to describe the processes of an organization that employs the CMM framework. The book also illustrates how simple and known approaches can be combined effectively to have a highly mature overall process. It does not suggest that Infosys's approach is optimal or better than someone else's or an ideal implementation of the CMM. Likewise, it does not recommend that these processes be used by others; that decidion is left for the readers.
The positive feedback I received on my earlier textbook, An Integrated Approach to Software Engineering (Springer Verlag, 1997), which had a case study running through the book, convinced me of one thing: In software engineering, it is invaluable to have real examples with real outputs and a complete example, if possible, when explaining concepts. This book employs the same approach. Most of the examples are real in that they have been picked from real projects, and one actual project--the weekly activity report (WAR) project--is used through much of the book to illustrate how different processes interrelate. Although the processes described are used at Infosys, any sensitive numbers (for example, on quality and productivity) included may have been sanitized to maintain the company's confidentiality.
This book should prove useful to all practitioners who are interested in the software process or the CMM framework. It should be immensely helpful to those practitioners who are trying to implement the CMM in their own organizations. To help ISO organizations in their effort to move to CMM, a general study describing possible gaps in an ISO organization with respect to different levels of the CMM has been provided in Appendix A. As the book discusses how projects are executed in a successful organization, it should also be of interest to professionals who are now managing software projects. For instructors and students, it can serve as a supplementary text for a project-oriented course on software engineering, as the book provides a good view of how software is developed in a business environment, along with a case study.
It is perhaps proper to explain my own involvement with Infosys. As Vice President (Quality) at Infosys, I was one of the main architects behind the company's successful transition from ISO to CMM level 4. Although Infosys supplied all of the material I requested, I take full responsibility for any mistakes, misrepresentations, and inaccuracies that may be present in the book. Such issues are bound to occur when one tries to describe the essence of an organization's process manual, along with a case study, in such a compact book. Any deviations in these descriptions from the actual processes of Infosys are entirely my responsibility, as I decided which portions of processes to include and in what manner.
Any comments or queries about the book are welcome, and can be sent to me at jalote@iitk.ac.in. For any information regarding Infosys, visit www.itlinfosys.com or send mail to public-relations@itlininfosys.com.
--Pankaj Jalote