What a Fragmented Industry Gets Wrong with SCM Standards


In his CM: the Next Generation series, Joe Farah gives us a glimpse into the trends that CM experts will need to tackle and master based upon industry trends and future technology challenges.

My Vote:Configuration and baseline

1) Configuration:  An aggregation of a set of item revisions
2) Baseline:  A frozen Configuration

Build, build record, build notice, BOM.  So what, then, is a build?  Well, build has three different connotations:  an action, the result of a build action, or a record of a build [1] action.  Even the action sense is often used as a noun:  I'm doing a build [1].

A build [1] takes a configuration and transforms it into a set of (potential) deliverables, (i.e., the build [2]).  Most often a build [1] is done against a non-frozen configuration; that is, developers creating their own builds [2] to test their in-progress changes. It's up to the developer to know what incremental changes are being included, and this is done through a workspace mechanism. When a system build [1] is done from the CM Repository (i.e., CMDB), though, it is often important to record exactly what was being built so that if there are problems they can be reproduced, fixed and retested.  Some shops do system builds more than once a day, though.  Does this mean that a new baseline has to be created more than once a day in order to track what went into the build?  Some shops actually do this.  However, if the build is to reflect a baseline, does that mean that all 12 variants of that build require 12 separate Baselines.  Again, some shops actually attempt to do this.  

But a build [3] record is a record of what was built.  It is not a baseline.  I can build the same baseline with two different versions of a compiler to ensure that both versions give the same result.  Same baseline, different builds.  The important thing about a build [3] record is that it identifies:

  1. The baseline used
  2. Changes used with respect to that baseline
  3. The variant options used
  4. The tools/processes used to perform the build

You can see that several builds can be performed from the same baseline.  In general, you "manage the baseline and build the subset".  That is, your baseline is an aggregate of all of the possible components that can be used for a build.  You select variant options to customize what you're building from the baseline.  Add in some changes that may reflect a new variant option, but more frequently, fixes problems and/or adds or extends features. 

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.