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 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.