Software versioning is a way to name different versions of computer software. A computer software has different states in its life-cycle process from development through deployment into production and sustainment. Each state in the process is given a unique version and version number. Versions are most often a sequence of one to four numbers (for example, 12.2.3) to represent Major.Minor.Maintenance actions, but they can also use names, dates, or other sequencing mechanisms. In some practices, the numbers are used with variations like the 3rd digit being replaced by a letter (for example, 4.1a). The changes are all revisions in that something is being changed and the version number tells people how complex the change is to the software.
Many times, after a program has been made, things called patches can be downloaded from the program's website. The patches usually make small updates or fixes to the main program, such as fixing bugs or updating information or program functions. When a patch is used, the program is advanced to the next version, advancing the version number by the appropriate level.