Friday, January 7, 2011

Configuration management story - part 1

In next days I'd like to write down our CM story. How a CM process has changed over the last years in our organization and project.

Once upon a time - before has the project really started - few people wrote a configuration management plan. All the experience was written down and reviewed until all participants were tired of reviewing. That was a trigger to consider the plan as final version and document was successfully released under complex process.

CM process itself was pretty simple. Three groups of developers were defined: two of them distributed and local one. Every supplier was supposed to submit their changes to the local build once a week. Together with changes from local team all changes were submitted to the common build. This was then next day used as a new baseline for further development.

Episode 1: How CM process contributes to the dependency between feature velocity and baseline quality.

Picture below shows the causal loop diagram [1], [2]. The term “build quality” should be interpreted as stability expressed e.g. in number of exceptions per hour…
  1. As every developer submits his changes to the local build without the integration and testing of unwanted side effects the quality of local build goes down.
  2. Local build result is submitted to the common baseline which goes consequently also down.
  3. Decreased baseline quality has bad influence on the development velocity on both constructions: featured development and also the bug fixing.
  4. The lower is feature velocity the higher project pressure is created by management.
  5. This makes the developers morale low but also decreases the bug fixing rate, while developer will rather decide to implement new feature as to fix reported bug.
  6. Low bug fixing rate decreases again the baseline quality etc…
Consequence of this is a reinforcing loop depicted in the red box.

With some delay a process change came introducing so called bring-up tests. And the story continues with the episode 2.