Concept: Baselining
Baselining is the process of storing a 'snapshot' in time of one version of a work product in order provide a reference point on which subsequent work is to be based, and to which only authorized changes can be made.
Relationships
Main Description

Definition

A baseline is a 'snapshot' in time of one version of each work product 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.

Developers on joining a project 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

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 work products. Its purpose is to ensure that design fulfills requirements, code implements the design, and executable programs 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 elements 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 work products.
  • 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 elements 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

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)


More Information