Concepts: Baselining
Topics
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.
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.
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 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 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 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.
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)
|