CM is a recognized engineering discipline that provides processes and technologies to identify and control items to ensure integrity and quality of the product under development. CM focuses on four principals that include identification, control, audit, and report (aka status accounting). Typically, the four principles are instantiated into version control, change control, problem management, build management, release engineering, CM audits, and metrics and reporting on CM activities and baselines. Simply put, the key to CM is that it enables development teams to identify the pieces that make up an application. By identifying the pieces, an application or organization is better able to control changes to the pieces, therefore the environment. So what does this mean to agile? Are these principals relevant in an agile development?
The short answer is yes. “Identify” and “control” are critical to the ability to rapidly change which is a key part of agile. The long answer is that CM should be tailored to meet the pace of agile development. CM should support the agile working process while not sacrificing the CM principles. CM should ensure the integrity of the value stream, by eliminating waste and being lean while enabling control of the changes. Part of this means that what gets prioritized or ranked as having the highest value is what should get delivered. By identifying all of the pieces of a value stream, you can more easily identify the waste. There will always be rejected work, incomplete work, and defects by the end of an iteration, and CM principles can help identify them.
Adjusting CM for Agile
Now that agile has been around awhile, it is important to understand that the implementation of CM should be adjusted to ensure agile principles remain intact without damaging any of the CM principles. Keep in mind that identifying, controlling, auditing, and reporting are CM principles that are agnostic to the development methodology applied. As long as the CM principles remain intact, CM can be applied in different ways per the need of the development methodology.