Alexis's Ark

A Guide to Software Configuration Management

By Alexis Leon, Artech House, Inc, 2000.

The Y2K problem has taught us the catastrophic effects that can be caused due to uncontrolled and unmanaged software development. The organizations and governments world over has spent and is still spending billions in correcting the bugs and errors introduced by the Y2K problem. The impact of the Y2K problem could have been drastically reduced if the projects that created the legacy systems followed Software Configuration Management (SCM).

SCM is the discipline whose objective is the identification of the configuration of software at discrete points in time and the systematic control of changes to the identified configuration for the purpose of maintaining software integrity, traceability and accountability throughout the software life cycle.

In order to accomplish the objective given in the above definition, there are four SCM functions—identification, control, status accounting and audits. In order to perform these functions there should be people who are trained and have the necessary expertise. Practicing configuration management in a software project has many benefits including increased development productivity, better control over the project, better project management, reduction in errors and bugs, faster problem identification and bug fixes, improved customer goodwill and so on. But a single SCM solution is not suited for all the projects; in fact each project is different and while the core SCM objectives and functions remain the same, the SCM system has to be tailored for each project.

In today’s highly complex and sophisticated software development environments, in order to maintain ‘software integrity, traceability and accountability’ a good SCM system is a must. The software development environment is changing. Now a single product can be developed by more than one company. Even in the same company the different subsystems of the same product/system could be developed by teams that are geographically wide apart, say in different continents. So managing these projects without any scientific tools will be inviting trouble that could result in costly product recalls or project failures. Software configuration management is the ideal solution for managing the chaos and confusion in today’s complex software development projects, as its primary objective is to bring in control to the development process.

This book is about the practice of the SCM discipline. The book starts with the basics—from the definition of SCM, its objectives and functions—and explains SCM as it should be practiced in the software development process. The different phases in the software development lifecycle are explained and how the SCM plays a role in each phase is discussed in detail. The different phases of the SCM implementation life cycle are also discussed. Another important aspect of this book is that it does not relay on any specific tool for explaining the SCM concepts and techniques. In fact one of the main objectives of this book is to give the reader enough information about SCM, the mechanics of SCM and SCM implementation. The book gives information on how to select the right SCM tool for an organization/project and how to implement the tool so that the organization can reap the full benefits of SCM.

One of the very useful features of the book is the appendices, specifically the appendices on SCM standards, SCM Bibliography and SCM resources on the Internet. The SCM Bibliography is very exhaustive and comprehensive and will be very useful for research students. The SCM Internet resources give the list of web sites that gives SCM related information. The short descriptions about each site are very useful. The book also has a companion web site that lists the links given in the appendices and keep them current and updated.

This book is a must read for all software professionals who are practicing configuration management in their projects, project leaders and project managers who want to develop a good software configuration management system in the projects/organizations, managers who are in-charge of tool selection and system implementation and for students who want to understand the theory and practice of software configuration management. This book will be useful for the tool vendors also as the book talks about features that are not available in any of the tool offerings.