What a Fragmented Industry Gets Wrong with SCM Standards

[article]

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, 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

Joe Farah's picture Joe Farah

Joe Farah is the President and CEO of Neuma Technology and is a regular contributor to the CM Journal. Prior to co-founding Neuma in 1990 and directing the development of CM+, Joe was Director of Software Architecture and Technology at Mitel, and in the 1970s a Development Manager at Nortel (Bell-Northern Research) where he developed the Program Library System (PLS) still heavily in use by Nortel's largest projects. A software developer since the late 1960s, Joe holds a B.A.Sc. degree in Engineering Science from the University of Toronto. You can contact Joe at farah@neuma.com

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!

Upcoming Events

Sep 22
Sep 24
Oct 12
Nov 09