A variety of agile software development methods and practices have now been around for a solid ten years and existed for at least another ten years prior. Configuration Management (CM) for agile development has now been discussed since the turn of the century. So what are the core principles of CM and how can CM help agile teams?
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 (a.k.a., 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 and ‘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.
In many cases, CM finds itself in an organization that has a traditional methodology that
consists of waterfall or sometimes a hybrid that has some parallel phases. Less frequently, but more often than in the past, CM finds itself in an organization that is agile (or part agile and part traditional). In all cases, as Agile gets introduced, the implementation of CM should be adjusted to fit the need of agile development methodology. So, the question is, what are some of the adjustments to CM to ensure that it fits the need of Agile development while still maintaining the principles of CM? Some areas to consider are the following:
One of the key focuses in agile is to think in smaller iterations and increments of work. CM must support the ability to manage smaller increments of work and the increase in the rate of change. CM for Agile is not minimal CM, but CM that can handle rapid identification and control in order to maintain the high pace of change while at the same time minimizes the effort in managing the change.
While this is really more of a Product Management or Release Management function, CM needs to be ready to accommodate