1.2 SCM Tools and SCM Process
SCM best practices are achieved by applying both processes and tools to a software-development project. This section briefly introduces both.
1.2.1 SCM Tools
SCM tools are software tools that automate and facilitate the application of the SCM best practices. As with a compiler, debugger, and editor, an SCM tool is an essential part of every software engineer’s tool kit today.
It is unrealistic to try to maintain effective SCM without an SCM tool. In early SCM project environments, one or more individuals acted as the CM librarians. These librarians handed out pieces of software for people to work on, diligently recorded who had which pieces, and logged in new versions as people turned in changes. This approach is not competitive today because it is too slow, is too prone to error, and does not scale.
The goal of successful SCM is to allow as much change as possible while still maintaining control of the software. SCM tools help automate tedious, manual, and error-prone pieces of the SCM process, and can ensure that your project can support all of the SCM best practices.
1.2.2 SCM Process
A process defines the steps by which you perform a specific task or set of tasks. An SCM process is the way SCM is performed on your project—specifically, how an SCM tool is applied to accomplish a set of tasks.
A key mistake most people make is to assume that an SCM tool will, in and of itself, solve their SCM problems or support their SCM requirements. This is wrong! The picture will not hang itself if you buy a hammer and nails. It is not the tool itself that solves a problem, but rather the application of that tool. How you apply the SCM tool to your development environment is called the usage model, or SCM process. It is this model or process that will in part determine how successfully you address your SCM issues.