Software Configuration Management Patterns alleviates software engineers' most common concerns about software configuration management (SCM)--perceived rigidity and an overemphasis on process. This book demonstrates how effective SCM strategies promote a healthy, team-oriented culture that produces better software. Through the use of patterns, the authors show that properly managed workflow can avert delays, morale problems, and cost overruns. The patterns approach illustrates how SCM can be easily and successfully applied in small- to mid-sized organizations. By learning how these patterns relate to each other, readers can avoid common mistakes that too often result in frustrated developers and reduced productivity. Key coverage includes instruction on how to: develop the next version of a product while fixing problems with the current one; develop code in parallel with others and join up with the current state of code line; identify what versions of code went into a particular component; analyze where a change happened in the history of a component's development; use current tools more effectively, and decide when to use a manual process; introduce good practices into individual workspaces and throughout the organization; identify crucial aspects of the software process, so that team projects can run smoothly; build and foster a development environment focused on producing optimal teamwork and quality products.
Software Configuration Management Patterns also includes a detailed list of SCM tools along with extended explanations on how they can be used to implement the patterns discussed in the book. These proven techniques will assist readers in improving processes and motivating their workforce to collaborate in the production of higher quality software.
Review By: Beth Anderson 12/09/2010This book discusses the need for Software Configuration Management (SCM) and introduces the concept of using patterns and pattern languages as a means of modeling your SCM solution. The first section of the book provides some background on both SCM and patterns.
SCM is defined and several aspects are discussed including its role within software development (specifically addressing agile development approaches such as XP), the use of tools and their role in implementing your solution, and keeping a balance between process and productivity. Both, the architecture of the software and the working environment, with an emphasis on teams, are included in the software environment discussion. General principals of SCM are introduced including version control. There is also a chapter devoted to introducing patterns, pattern languages, and defining terminology. A brief history of patterns is given, first in the architecture of physical buildings, then as it applies to software. The next section lays out the SCM patterns themselves. Nineteen patterns are defined, each in an individual chapter.
Each chapter defines the pattern, lists any unresolved issues and which pattern(s) address these, and gives references for further reading. Patterns cover widely accepted SCM components such as branching, creating private workspaces and a common repository, and build procedures. The book concludes with appendixes presenting SCM resources found online and information on existing tools. Commonly used tools are introduced, with a brief description and a mapping of terminology given for each.
This was my first exposure to the use of patterns, and the book provided an adequate introduction. I still have questions on how this differs from other policy and process models, but I was able to appreciate the consistent manner in which the patterns were defined. The book sparked my curiosity concerning patterns and pattern languages and I’ll be looking further into these. There are several things I liked about the book. The SCM concepts presented (as patterns) are sound.
Each chapter discusses the need for that particular pattern, where there have historically been challenges or resistance to this aspect of SCM, and some real-life lessons playing out the risks of not incorporating a given pattern. The Unresolved Issues section in each chapter acknowledges any gaps and cross-references and which patterns address them. Most chapters include suggested further reading and there is a fairly extensive bibliography listing books on patterns, SCM, and related topics.
The appendix on tools is subjective and informative, though could become outdated fairly quickly. One of my favorite parts of the book has little to do with the subject matter. Each chapter starts with a historical black and white photo indirectly related to the topic of the chapter (for instance, the chapter defining the "Mainline" pattern has a photo of a main line railroad). I enjoyed the abstract quality of including these photos and thought they added warmth to the book. Overall, I found this book to be a solid, practical introduction to SCM principles and it got me thinking about patterns.