Wednesday, May 27, 2009

Baseline Semantics

The term Baseline can often be a source of confusion.

In my experience with Configuration Management and other tools (Microsoft Project etc), a baseline is anything “that can serve as a basis for comparison” – this may or may not be approved. SVN, in fact, skirts this baseline issue by defining the alternate terminology “tag” for the same thing!

I believe our problems stem from the–

1) Informal use of baseline as a verb, with the meaning ‘to approve’.

2) Lack of formalization of what type of baseline (and there are many kinds, refer below!) we refer to when we generically use the term baseline


Dictionary definition:

Noun: baseline

1. An imaginary line or standard by which things are measured or compared

(TJ: Other meanings for sake of completeness, also note “imaginary” J in 1)

2. The back line bounding each end of a tennis or handball court; when serving the server must not step over this line

3. The lines a baseball player must follow while running the bases

Wikipedia mentions:

Generally, a baseline may be a single work product, or set of work products that can be used as a logical basis for comparison. A baseline may also be established (whose work products meet certain criteria) as the basis for subsequent select activities. Such activities may be attributed with formal approval.

There are different kinds of baselines (from Wikipedia).

Functional Baseline: initial specifications established; contract, etc. Allocated Baseline: state of work products once requirements are approved

Developmental Baseline: state of work products amid development

Product Baseline: contains the releasable contents of the project

Others, based upon proprietary business practices

CMMi itself defines it multiply as (from CMMi-DEV 1.2 )

A baseline is a set of specifications or work products that has been formally reviewed and agreed on, that thereafter serves as the basis for further development or delivery, and that can be changed only through change control procedures. A baseline represents the assignment of an identifier to a configuration item or a collection of configuration items and associated entities. As a product evolves, several baselines may be used to control its development and testing.

For Systems Engineering

One common set of baselines includes the system-level requirements, system-element-level design requirements, and the product definition at the end of development/beginning of production. These are typically referred to as the “functional baseline,” “allocated baseline,” and “product baseline.”

For Software Engineering

A software baseline can be a set of requirements, design, source code files and the associated executable code, build files, and user documentation (associated entities) that have been assigned a unique identifier.


In my opinion, attaching extra, “holy” meanings to an-already polymorphic word would not be appropriate. It would be a classic case of jargon-clash and would lead to inter-personal communication problems and possibly conflict!

It would also mean an incurrence of training (un-training) overhead and would be the proverbial seed for discontent in a new adopter.