Skip to main content

Versioning process and its components

Short answer

Versioning tracks versions of configuration items in a repository, using version identification, codelines, baselines, check-in/check-out, deltas, branching and merging, and releases. The process is: identify CIs, store them, set a baseline, check out/change/check in, branch and merge, create new baselines, and release.

Explain versioning process with all the associated components.

Versioning (version management) is the process of keeping track of the different versions of software components and systems, so that changes made by different developers do not interfere and any earlier version can be retrieved. It is a core part of software configuration management (SCM).

Components of the versioning process

  1. Configuration items (CIs): the objects placed under version control, such as source code, SRS, design models, test cases and build scripts.
  2. Repository (project database): the store that holds every version of every configuration item, along with information about who changed it, when and why.
  3. Version identification: a unique name for each version, by version numbering (1.0, 1.1, 2.0), attribute-based naming (date, platform, customer), or change-oriented naming (by the change sets applied).
  4. Codeline: the sequence of versions of a component, each derived from the one before it.
  5. Mainline: the main sequence of system versions developed from an original baseline.
  6. Baseline: a formally reviewed and approved set of component versions that forms a fixed base for further work. It can be changed only through formal change control.
  7. Workspace and check-in/check-out: developers check out files into a private workspace, make changes, and check them in, creating new versions.
  8. Deltas: instead of storing complete copies, the system stores one full version plus the differences (deltas) between versions, to save space.
  9. Branching and merging: a branch is a separate codeline (for a bug fix, a customer variant or a new feature); merging combines changes from branches back into the mainline.
  10. Release: a version distributed to customers, with a recorded list of all component versions used to build it.
         Baseline V1           Baseline V2
             |                     |
Mainline: A1.0 -> A1.1 -> A1.2 -> A2.0 -> A2.1
                    |               ^
Branch:             +-> A1.1.1 -----+  (merge)

Process: identify CIs, put them in the repository, set an initial baseline, check out and change items, check them in as new versions, branch and merge when needed, create new baselines at milestones, and release.

Tools: Git, Subversion, CVS and Mercurial automate these steps.

✓ Answer checked by Claude Opus 5.5 (high effort)

All Software Engineering chapter 10 questions →