Does the title of this article sound silly? I mean, doesn’t everyone know what a Configuration Management (CM) tool is? Isn’t a Configuration Management CM tool something that provides version control functionality? Well, the short answer is yes but only in its most simplistic form. CM as a discipline goes well beyond simple version control. It is important to look beyond what vendors define as classic CM tools and consider CM in terms of the full practice and processes they offer. CM at its very essence covers identification, control, audit, and report. Many would expand control to include version control, change control, build management, and release engineering.
Now the answer to “what is a CM tool” becomes complex. And what makes this even more challenging is that there are tools that include CM functionality but are referred too otherwise. Examples include application lifecycle management (ALM) tools, requirements management tools, defect tracking tools, and document management tools (amongst others).
It is important to take a step back from the conventional term of what a CM tool offers and what capabilities you may think a CM tool provides. As development becomes more complex, there are demands to add capabilities to handle the complexity. This is very true with CM. While it may have started as a simple version control tool, the better CM tools are now far more complex and rich in their capabilities. So before you begin the evaluation, do some pre-work so that you have more clarity on the capabilities that you desire.
Dividing up the CM Tool space
This section will attempt to identify the various CM capabilities within a rough framework. Even if you do not agree with this division or you think that some of these areas are misplaced, it is important to ascribe a clear understanding of these capabilities. It is not meant to be comprehensive but to provide a framework to understand that there are different areas in CM and to ensure that the evaluation team understands what they are really looking for.
- Version Control – these are tools that offer the capability to store elements and then manage whole or incremental changes of an element (a.k.a., versioning), most commonly source code, but often executables and documentation. The more advanced tools in this space offer workspace management and branching & merging capabilities. In addition, there is an expectation that a reporting ability exists that can list the elements within a version control repository specific to a release. This helps in the ability to audit the repository. More details include:
- Tools in this category typically fall into the development phase but can live throughout the full project lifecycle if documents and other artifacts are being managed.
- Some people consider document management tools as a type of version control tool since they offer version control functionality and a means for identifying information (a.k.a., attributes) on items.
- Change Control – these are tools that help you document, manage, and track changes. This may often be called ‘Change Management’ although this term is often applied to a broader meaning of the word ‘change’ (e.g., organizational change management). These tools offer the capability to identify a change and then establish a workflow by which the change can be tracked along a change lifecycle. In addition, there is an expectation that there is the ability to identify and report on the status of configuration items known as a baseline. This helps in identifying baselines for requirements, design, code, build, test, and release and the capability to audit each. More details include:
- Tools in this category typically live throughout the project lifecycle if changes that impact the project baselines of are being managed.
- Some times Requirements Management, Change Control, and Defect Tracking tools are included in this since each provide similar capabilities.
- Build Management – these tools offer the capability to identify a code baseline and then generate executables. More advanced tools in this space offer bill-of-materials reports and dependency and traceability checking that help with integrity and audit. Some people see tools in this space as separate from CM tools but are very closely aligned. More details include:
- Tools in this category typically fall into the development phase of the project lifecycle.
- This category may be