What is software versioning (version management)?

Definition of software version management

Software versioning is the practice of assigning unique numbers or names to individual software releases (versions) during development and maintenance. The purpose of versioning is to uniquely identify each release, track changes made between releases, manage dependencies and facilitate communication about specific releases between the development team, testers, users and other stakeholders.

Why is versioning important?

In the software development process, changes are constantly being made – new features are added, bugs are fixed, performance is improved. Without systematic versioning, keeping track of these changes, managing different software variants (e.g., stable and development versions), and communicating which version is currently in use or being tested would be extremely chaotic and error-prone. Versioning brings order and makes it possible:

  • Tracking the history of changes: Each version represents a specific state of software development, allowing you to easily track the history of modifications made.
  • Release identification: A unique version number uniquely identifies a specific software release.
  • Dependency management: Many software components (such as libraries) depend on specific versions of other components. Versioning makes it possible to precisely identify these dependencies.
  • Communication: Facilitates communication about specific versions (e.g. “the bug reported is for version 1.2.3”, “the latest stable version is 2.0.0”).
  • Support and Maintenance: Enables the provision of support for specific versions used by customers.
  • Release process management: Forms the basis of the release management process (release management).

Popular versioning schemes

There are several popular schemes (conventions) for assigning version numbers:

  • Semantic Versioning (SemVer): A very popular standard (e.g. 2.1.0) in which the version number consists of three parts: MAJOR.MINOR.PATCH.

— MAJOR: Increased when making backward-incompatible changes (breaking changes).

— MINOR: Increased when new functionality is added in a backward-compatible manner.

— PATCH: Increased when introducing backward-compatible bug fixes. SemVer makes it easy to understand the nature of changes between versions and manage dependencies.

  • Date-based versioning: The version number includes the release date (e.g. YYYY.MM.DD or YYYYMMDD). Often used, for example, in operating systems (Ubuntu) or some applications.
  • Sequential Numbering: Simple assignment of sequential numbers (e.g. 1, 2, 3…) or build numbers. Less informative than SemVer.
  • Code names: Sometimes versions are given additional code names (e.g. Windows XP, macOS Mojave), often for marketing purposes.

Versioning vs. version control systems (VCS)

Software version management is closely related to the use of version control systems (VCS), such as Git. VCS allows you to track every change in source code and mark (tag) specific points in history as official versions. The version number is usually assigned to a specific tag in the code repository.

Where is versioning used?

Versioning is used virtually everywhere in the software world: in operating systems, desktop and mobile applications, web applications (both backend and frontend), libraries, frameworks, APIs and internal components of systems.

Summary

Software version management is a fundamental engineering practice that brings order and enables effective management of software evolution. Using a consistent versioning scheme, such as Semantic Versioning, makes it easier to track changes, manage dependencies and communicate about subsequent releases of a software product.


author

ARDURA Consulting

ARDURA Consulting specializes in providing comprehensive support in the areas of body leasing, software development, license management, application testing and software quality assurance. Our flexible approach and experienced team guarantee effective solutions that drive innovation and success for our clients.


SEE ALSO:

Preventing data loss

Data loss prevention, also known as Data LossPrevention (DLP), is a set of strategies, processes and technologies designed to protect sensitive data from unauthorized access, loss or theft. DLP focuses...

Read more...

IT asset inventory management

IT asset inventory management is the comprehensive process of identifying, cataloging, tracking and managing all IT assets in an organization. It includes computer hardware, software, licenses, network devices and other...

Read more...