Overview > Concepts > CCM Concepts > Baselining

Topics

Definition To top of page

A baseline is a 'snapshot' in time of one version of each artifact in the project repository. It provides an official standard on which subsequent work is to be based, and to which only authorized changes can be made. After an initial baseline is established every subsequent change to a baseline is recorded as a delta until the next baseline is set. 

Uppon joining a project, Developers populate their work areas with versions of directories and files represented by a baseline. As work proceeds, a baseline incorporates work that developers have delivered since the last baseline was created. Once changes have been incorporated into a baseline, developers rebase to the new baseline to stay current with changes in the project. Rebasing merges files from the integration workspace into the development workspace.

Explanation To top of page

The three main reasons for creating baselines are reproducibility, traceability, and reporting.

Reproducibility is the ability to go back in time and reproduce a given release of a software system, or reproduce a development environment at a prior time in the project. Traceability establishes the predecessor-successor relationship between project artifacts. Its purpose is to ensure that design fulfills requirements, code implements the design, and executables are built from the correct code. Reporting is based on comparing the contents of one baseline against another. Baseline comparison assists in debugging and generating release notes.

When baselines are created, all constituent components and baselines need to be labeled such that they are uniquely identifiable and re-creatable.

There are several advantages to creating baselines:

  • A baseline provides a stable point, and a snapshot of the development artifacts.
  • Baselines provide a stable point from which new projects can be created. The new project, as a separate branch, would be isolated from subsequent changes to the original project (on the main branch).
  • Individual developers can take baselined components as a basis for updates in their isolated private workspaces.
  • A baseline provides a way for a team to roll back changes in case the updates are considered to be unstable or suspect.
  • A baseline provide a way to reproduce reported bugs given that you can recreate the configuration when a particular release was built.

Use To top of page

Make baselines regularly to make sure that developers stay in sync with each other's work. However, during the course of the project baselines should be created routinely at the ends of iterations (minor milestones) and major milestones associated with the end of the lifecycle phases:

  • Lifecycle Objectives Milestone (Inception Phase)
  • Lifecycle Architecture Milestone (Elaboration Phase)
  • Initial Operational Capability Milestone (Construction Phase)
  • Product Release Milestone (Transition Phase)