By Alexis Leon, Artech House, 2015.
Configuration Management is the art of identifying, organizing and controlling modifications to the software being built by a programming team. The goal is to maximize productivity by minimizing mistakes. 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.
Today’s software development environment is highly complex and sophisticated. Now a single product could 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. 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 of software development, as its primary objective is to bring in control to the development process.
This book is about the practice of the SCM discipline. This 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 and how SCM plays a role in each phase is discussed in detail. The pitfalls of the software development process, the need, importance, and benefits of SCM are covered in detail and the common misconceptions about SCM are demystified. The basic SCM concepts like baselines, versions, variants, delta storage, branching, merging, releases, etc. are explained clearly. Then the book give an in-depth coverage of the four pillars of SCM—identification, control, status accounting and audits.
Once the readers are familiarized with basic terminology and concepts, the book treats the advanced topics like SCM implementation phases, build and release management, interface and subcontractor control, software libraries, SCM plans and guidelines for writing good SCM plans, SCM standards, role of SCM in software process improvement (SPI) models (like CMM, CMMI, ISO SPICE, BOOTSTRAP, Trillium, ITIL, COBIT, SWEBOK, etc.), SCM organization, documentation management and control (DMC), product data management (PDM), etc. in a very exhaustive manner.
The book covers the various SCM deployment models from traditional to SaaS. It also describes the popular transition strategies. A completely new chapter deals with the latest development in the field of software development in the cloud—Source code repositories. What are source code repositories, their features, advantages, limitations and how to select one that is best suited for an organization are described in detail.
Then the book covers one of the most important aspects of the software configuration management—SCM tools. The topics like SCM automation, advantages of SCM tools, how to select the right tool, etc. are explained so that the readers can select the SCM tool that is best suited for their organization or project. A salient feature of this edition is the comprehensive coverage of the different activities required to plan, design, implement, operate and maintain a good SCM system. The various activities like SCM system design, tool selection, implementation, post-implementation activities, operation and maintenance of the SCM system, how to perform SCM in different scenarios (like very large projects, Web site management, distributed environments, integrated development environments, etc.) are given a thorough treatment.
The book has three appendices—SCM resources on the Internet, SCM Bibliography and SCM Glossary. The first two appendices will be of immense value for readers who want to further explore the new frontiers of SCM. The third appendix will help the readers when they encounter unfamiliar terms during the early chapters of the book.
One important aspect of this book is that it does not rely on any specific tool or standard 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 without being tool and/or standard specific. The book gives information on how to select the right SCM tool for an organization/project and how to implement, manage and maintain the tool so that the organization can reap the full benefits of SCM.
CHANGES IN THE THIRD EDITION
The book has been revised to include the latest developments in the field of SCM. This book explains the concepts of SCM, demystifies its myths and misconceptions and gives an overview of the technologies that will work with SCM systems to make organizations work at high efficiencies. The book covers very comprehensively the implementation of an SCM system that is best suited for an organization—right from package selection, team selection, implementation plan preparation, implementation, project management and monitoring, training, post implementation tasks, and so on. The various tasks that must be performed after implementing the SCM system are also covered in detail.
This edition includes new chapters on Implementation challenges, Deployment methodologies, Transition strategies, Source code repositories, etc. The chapters on SCM Tools, SCM implementation, SCM standards, SCM certifications, etc. are completely revised and rewritten.