Is Agile Configuration Management Worth the Effort?


What is agile CM? If you think it's doing the minimal amount of CM, think again. Instead, it's minimizing and streamlining the work to do all of the CM tasks that are necessary. It adapts to changing CM requirements fairly easily. Agile CM doesn't just happen - it's a combination of good CM process, good CM tools, and CM automation. If you fall short on any of these, your CM process will not be very agile.

Change-Based CM
To begin, let's visit the obvious:  an agile process built on file-based CM, as opposed to change-based CM, may make the up-front tasks easier for some developers.  Overall, though, attempting to make the entire process agile will cause a lot of damage. Promoting files rather than changes is both unnatural and error prone. It complicates the process forcing short cuts. Often it's left up to the developer to ensure that everything will flow properly.

Changes really need to move through the process as units. This is not to say that tasks, features or issues need to - just the changes themselves. If I go to implement the first part of a feature by changing 4 files, I really don't want someone to try to move any less than those 4 files through the process. Nor do I want to have to specify dependencies on other changes in terms of files. I don't even want to have to know what files are involved in the dependent changes. And as a CM manager, I'm much happier promoting a dozen changes than 47 files.

And change-based CM simplifies peer reviews. A simple change identifier is all that's needed to identify code for a review. Most change-based CM tools will allow you to generate a code delta report from this identifier. Some will even let you track peer review comments against the change so that the comments are not lost in the shuffle.

Promotion Support Without the Blockage
You have a choice: either have a branch-based promotion model or you hold up check-in operations until the build has been successfully verified to the appropriate set of criteria. At least that's what many will tell you, but don't believe it. Both choices contribute to a non-agile process.

In a branch-based promotion model, there's merging that has to be done all the way up the model, and the question about whether this is a developer or CM manager task. This in turn tends to result in a compromised model in an effort to minimize merging.


About the author

AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.