One time, a CIO said to me that he didn’t know what I do so I wrote this article to give a quick understanding the Software Configuration Management (SCM) tools, how they’re used and additional notes. The names and functions may change depending on the methodology being used but every system includes these general components.

Software configuration management is the task of using a set of tools to control and track software changes. The control enforces a given software development process and the tracking allows insight into each step of the process.

The SCM team determines which tools to use, installs and configures them and then manages their use. The tools are used by the IT department to produce and coordinate software releases. They typically include development tools, source control, build systems, deploy systems and issue/task tracking.

The tools are very important as they define and enforce the IT processes. The tools can enhance or limit the ability of changing the IT processes. The processes determine the efficiency of producing software releases.

There are lots of different tools used but they fall into the general categories of:

• Source Control – The management of code changes to control who can make a change, isolate changes, undo changes and see the history of changes.
• Issue/Tracking – The management of new features, enhancements and current issues.
• Build System – System to compile or assemble code, in a repeatable, way resulting in a deployment packet.
• Deploy System – System to deploy deployment packets to test or production environments.

The tools are used by many in IT but these are typical functions (the position names may vary depending on the methodology)

• Business Analyst – Input tasks into the Issue/ Task Tracking system.
• Developer – Is assigned an Issue/Task where code from the Source Control system is checked out, modified and checked back.
• Release Manager – Uses the Issue/Task Tracking system to monitor the progress of a release.
• Quality Assurance– Is assigned an Issue/ Task to validate in a test or production environment.
• Operations – Uses the Deploy System to deploy a Deployment Packet to a test or production environment.

The above system should be able to do the following:

• Reproduce a Deployment Packet from a version number 
• Show what code is in a given environment at any point in time.
• Show what changes are in a given release
• Show who ask for and who approved each change
• Show who made the each change
• Show who tested the each change
• Send notification when important tasks are completed
• Build and deploy quickly enough that others are not waiting on the system to preform there job
• Build from a clean work space
• Continuous Integration
• Build components that are build and deployed as a whole

There are two distinct functions for the SCM team. The first is the initial system set up consisting of defining controls and processes, selecting tools, coding tools and server configuration. The second is to manage and operate the tool set.

The SCM documentation should include a Software Configuration Management Policy, Software Configuration Management Control Objectives, naming conventions and a Glossary.

The skill set for SCM team members is a difficult one to find as they have to have strong organizational, technical and people skills. Since SCM Team members interact with many members of the IT department they need to have the ability to interact with others to understand them and gain their cooperation.

If SCM is not done correctly, here are some examples of what can go wrong:

• The version in production is not the version that was tested
• The version in production is not reproducible.
• Applications are not broken into the correct components leading to long build and deploy times.
• The tool set does not support the desired methodology
• SCM team members may not have the proper skill set or training.