SOFTWARE QUALITY MANAGEMENT
CMM in Practice: Processes for Executing Software Projects at Infosys
Pankaj Jalote. 2000. Reading, Mass.: Addison- Wesley. 372 pages.
Reviewed by Deependra Moitra, Lucent Technologies
In the last few years, software has become a vital component of every business. As a result, companies are relentlessly focusing on improving their software development and delivery capability. It is now well established that software processes play a key role in ensuring better software development performance. There are many software process improvement models, such as SW-CMM, SPICE, and Trillium, which provide guidance for a systematic approach to software process improvement. Of all the models, however, the SW-CMM has been widely used and has become central to software development in the last three to four years. There are many excellent resources that provide information on SW-CMM and how to implement it, but this book by Pankaj Jalote stands out as it offers a comprehensive account of software process practices at Infosys Technologiesarguably Indias most admired software company, rated at SW-CMM level 5.
Most books either talk about CMM or provide generic guidelines on how to successfully implement CMM. Jalote, however, does an excellent job of capturing his real-life experiences of successfully implementing CMM at Infosys Technologies. The books focus is not on describing CMM but rather on how a CMM-based process infrastructure was set up and implemented at the company. The book nicely captures all the established software engineering practices and is full of real examples that will show readers "how to actually do it and be successful." A useful feature in the book is a running, real-world project case used throughout to illustrate various practices adopted at Infosys. This is helpful as readers have access to the practices and approach of a highly successful software organization, packaged in an eloquent way. The beauty of this book is that it focuses on good software engineering practices and not explicitly on establishing practices for chasing a higher rating on the CMM scale. The writing is highly readable, and the presentation and organization are good.
Though the book is about practices followed at Infosys Technologies for executing projects, it is a definitive reference for anyone who wants to successfully implement CMM or is struggling to figure out the way to nirvana in software organizations. The book is also a useful resource for organizations that cannot have the luxury of hiring consultantsa serious perusal of the book will help them improve their software development and management practices. Graduate students specializing in software engineering will find in this book glimpses of practical applications of the many concepts they would have learned in the classrooms.
The book is organized in three parts: Part 1 captures all the practices related to project initiation. In Part 2, Jalote offers a detailed account of the practices for project planning, and Part 3 is about approaches and processes for project execution and termination. The book begins with an introductory chapter that lays emphasis on a process-centric approach for successful execution of projects, and to achieve quality and productivity gains. It also provides an overview of CMM: its architecture, key process areas and their goals, and a brief description of assessment methodologies. Additionally, chapter 1 provides background information about Infosys Technologies and its enabling environment for process excellence, and briefly describes the companys approach to process architecture and documentation. In essence, this chapter provides an overview of the context around which process improvement activities are organized. The project management process used within the company is also described in this chapter. There is a hidden communication in this chapter that there are certain critical success factors that have helped Infosys gain higher levels of process maturity and that these generally apply to any other organization.
Part 1: Project Initiation, has two chapters. Chapter 2 is about proposals and contracts and describes a process-centric approach for customer and vendor interactions. This is becoming an important topic as the magnitude of outsourcing increases. This chapter also provides a sample of the proposal document used at the company and identifies various elements of a good contract. Additionally, chapter 2 also outlines how business context has influenced processes at Infosys Technologies. Chapter 3 is about requirements specification and management practices and addresses in detail the requirements analysis and specification process, and how to be better at requirements engineering. It provides a sample requirements specification template, describes the requirements change management process and guidelines on how to do it effectively, introduces the concept of traceability management, and talks about traceability matrix maintenance and usage. To illustrate all the concepts, processes, and practices described in chapter 3, a complete example of requirements specification and management for a real project is provided.
There are seven chapters in Part 2 (Project Planning). Chapter 4 is about process definition and tailoring and begins with emphasizing the need for standardizing processes and the need for tailoring. This chapter describes in detail the corporate development process architecture, how life-cycle phases are organized and handled, and what kind of dependence exists between various life-cycle phases. The best part of this chapter, however, is the excellent coverage of process tailoring, telling readers why and how to do it. Practical examples of tailoring guidelines for the requirements and build phases are provided based on actual experience.
Process database and process capability baseline is the topic of chapter 5. Readers can learn implementation insights into process assets database set-up and process capability determination. This chapter offers a brief but powerful overview of metrics and statistical process control and also addresses process databasewhy have one, how it helps, what should typically be the contents of the process database, and how to maintain itall based on the authors experience at Infosys. An example for data in the process database for a sample project is also present. This chapter also provides a comprehensive account for collection and treatment of size, effort, and defect data in any development environment and talks about how process assets systems are implemented. A really good feature of this chapter is the description of how a Web-based knowledge management system was implemented at Infosys and how sharing of lessons learned and best practices is facilitated through this system. This chapter also provides detailed, experience-based guidelines on how to create process baselines for different types of projects and shows how the company performed process capability baselines for development projects and projects using third-generation languages, among others. How to use SPC tools, such as control charts for baselining process capability for delivered quality, productivity, schedule, effort, and in-process defect removal efficiency, is explained well in this chapter.
Chapter 6, Effort Estimation and Scheduling, begins by explaining the need for good estimation and provides an overview of effort estimation methods. How estimation is carried out at Infosys is explained, supported by detailed guidelines and examples. There is also a section that shows readers how to evaluate the effectiveness of estimation. Quality planning and defect estimation is the theme of chapter 7 and treatment here is really powerful. This chapter shows how to do quality management planning and goal setting, and how to perform defect estimationall supported by real examples. Chapter 8 deals with how risk management activities are performed at Infosys. Jalote offers an account for the top 10 risk items identified and their corresponding mitigation plans. The chapter ends with a real example of risk monitoring and tracking for an internal project.
Chapter 9 details how project management planning is done, and a complete project management plan is provided. Through the example plan the author tries to say that a good project management plan is one that is simple yet effective, and does not require excessive documentation. Configuration management is the topic dealt with in chapter 10. In this chapter, the author explains what configuration management is and why is it needed, and provides guidelines for setting up a good configuration management system. A sample configuration management plan is also provided to share with readers how configuration management is practiced at Infosys.
Part 3 has five chapters. Chapter 11 is about life-cycle execution. It describes what the company does and the outputs from the execution of the life-cycle processes. In chapter 12, Peer Reviews, Jalote details how peer reviews are done and what data are collected, and provides guidelines for peer review of work products. This chapter also shows, with the help of an example, how statistical process control can be used to baseline the review process capability. The introduction of any new practice often meets resistance and requires managing organizational change. An interesting piece in this chapter is about how reviews were successfully introduced at Infosys through experimentation.
Chapter 13 deals with project monitoring and control and covers the basics. Apart from other things, this chapter addresses data collection, size measurements, project tracking and issue management, quantitative project monitoring and control, milestones analysis, event-driven analyses, and causal analysissupported by examples and templates. There is also a reasonably good account of defect analysis and prevention activities and practices. Project audits is the theme of chapter 14, and besides introducing the basics, this chapter shares the way in which project audits are performed at Infosys and how the findings are analyzed. Chapter 15 discusses how project post-mortem is performed, and there is a detailed sample project closure analysis provided to help readers understand the subject better.
There are two really power-packed appendices in the book based on the Infosys experience. The first appendix offers guidelines on how to transition from an ISO 9001-based practice to a CMM-intensive practice. It identifies the gaps that might exist in an ISO 9001 certified organization from a CMM perspective, and shows how to perform a gap analysis. The second appendix provides experience-based guidelines on how to manage a software process improvement project, what the strategic and tactical elements of such a program are, and how to realistically do goal setting. Each chapter provides pointers to further relevant sources of information.
In a book like this, however, one would also expect some coverage of usage of tools for process automation, benefits derived from process automation, what was automated, and why. Surprisingly, the book does not cover this aspect at all. Moreover, although the book talks about the role of processes for executing projects at Infosys, there is no mention of the business value (in quantitative terms) derived. The books case could have been much stronger had it also had a section showing the benefits of process centricity in terms of business gains. How to deal with and avoid conflicts related to different customer quality systems should have been given some explicit attention in the book, especially since the book is about the practices of a large software house that caters to the needs of customers across the globe.
In summary, the book is an important contribution to the software engineering practice. The treatment is lucid: the contents are based on real-life experiences and supported by numerous examples and templates. Each chapter begins with an introduction of a topic and concept, then explains why that concept is important, and then shows how to implement that concept or practice. I would strongly recommend this book to anyone who cares about better software engineering practices to improve performancewhether or not interested in implementing CMM per se. The packaging of experiences is excellent, and this book is sure to help readers excel in todays demanding software business environment through improved software engineering practices.