Software Configuration Management (SCM) is an essential software engineering discipline used to manage change in today's complex, fast-paced software development environment. SCM is used during all lifecycle phases and provides a structure for identifying and controlling changes to documentation, requirements, models, code, and Web artifacts such as HTML and XML files. By enabling concurrent change to shared artifacts, SCM enhances the collaboration of project teams, allowing them to produce high-quality products faster.
Review By: Ross A. Fraser 09/11/2002The author begins by discussing software configuration management (SCM) in the abstract. Because he assumes that the reader has some basic experience with SCM, he does not describe every aspect of it, but he does provide some good information on ten SCM “best practices” such as activity-based SCM and workspace management. In the second chapter, he moves to the subject of SCM tools, explaining how these tools have evolved over time in response to changes that have increased the complexity of both the software products that are being developed and the environments in which that development occurs. He introduces the categories of early, modern, and advanced SCM tools (the implication being that ClearCase falls into the last category) and argues that the size of the project and the project team determine which kind of tool is appropriate to use.
Chapter 3 is the overview of Rational’s Unified Change Management model (as promised on the cover of the book). I am not familiar with this model aside from what I learned here, but I suspect there is more to it than the author has presented. This summary briefly identifies the roles of architect, configuration manager, project manager, developer, and integrator, and discusses the activities performed by each role. As I indicated, this is a very high-level summary: all of the information presented here can be summarized in a single swim-lane diagram.
Chapter 4 defines specific ClearCase concepts and entities such as versioned object bases, snapshots and dynamic views, projects, streams, and activities. While this chapter may be a bit overwhelming to a reader with no experience of ClearCase, these definitions are necessary if you are to understand the following chapters.
Chapters 5 through 9 provide more information about the activities and roles referred to in chapter 3. Chapter 5 discusses the activities that are the responsibility of the architect and the configuration manager, concerning the installation and administrative configuration of the tool. Chapter 6 explains how to set up a project in ClearCase after the tool has been installed and configured, for the benefit of the project managers in the audience. Chapter 7 continues discussion of project management activities, walking through the way ClearCase (or any SCM tool) could be used in various scenarios reflecting different types of project teams. Chapters 8 and 9 discuss the activities assigned to developers and integration managers, respectively.
Chapter 10 explains how to use ClearCase to address the problems arising from various scenarios of geographically dispersed project teams.
Finally, chapter 11 takes a very brief and not very useful look at the change control process and ClearQuest, which is Rational’s issue-tracking tool.
The book also contains a glossary and a bibliography. However, these contain only those terms and sources that are actually referenced in the text, which limits their usefulness as additional learning tools.
This book would clearly be useful to a ClearCase user, particularly someone who works in an organization that has recently acquired ClearCase, and who has been given the assignment of installing, configuring, and learning how to use the tool. Reading the book is like being able to talk to a very knowledgeable user who can tell you not only what your installation and configuration options are, but also why you would choose one option over another. This advice is usually not found in user manuals, which is why often organizations in this situation get an outside consultant to help them. Read the book first—it’s cheaper.
The book is less useful to readers who are not working with ClearCase; nevertheless, I think it makes some useful contributions to the ongoing dialog about software configuration management. For example, the author recognizes that in SCM, one size does not fit all. I was especially pleased that he commented on the differences between internal IT projects and other kinds of development environments, a topic that is too often ignored.
For non-ClearCase users, I think this book is best described as a very articulate description of ideas of which you were already vaguely aware. The author’s approach is very pragmatic and realistic. In retrospect, this was to be expected; he is presenting the approach recommended by a tool vendor, and commercial tools that don’t reflect the way software development is done in real life end up as shelfware.
Because the author takes a more pragmatic approach to the topic than I have seen elsewhere, I think it is unfortunate that he assumes prior knowledge on the reader’s part and does not present a more thorough discussion of basic SCM principles. Instead, he concentrates on explaining how to apply those principles in various scenarios, as well as giving an example of how those principles might be implemented using an SCM tool. If you are the type of reader he is expecting, this information might be useful. If you are looking for a comprehensive introduction to the topic of SCM, this isn’t it.