軟件版號訂定

**軟體版本編號訂定**是指為軟體設定版本號碼的方式。通常，版本號碼會以數字訂定，但亦有不同的方式。

## 小數

這是最常用的一種訂定方式。大部份軟體的版號都是用此方法去計算。一個以此方式來訂定編號的例子如：2.4。通常訂定規則為：

 $major.minor(.build)$ 
_major_ 是最大的版本編號，_minor_ 為其次，某些軟體可能再細分作 _build_，為更小的版本編號。

通常，正式版的版本編號為「1.0」。1.0 以下的版本（0.x）為測試版，代表仍有一些重大錯誤（bugs），未正式推出。

在新版本推出時，應更新 _major_、_minor_ 或是 _build_（如有）的版號，決定於變更的大小。當有極大的更新時，會增加 _major_ 的版號。而當有大更新，但不至於更新 _major_ 時，會更新 _minor_ 的版號。若更新比較小，例如只是修正錯誤，則會更新 _build_ 的版號。以下是一個例子： 

　
: 1.0→1.0.1→1.0.2→1.1→1.1.1→2.0→2.1→2.1.1→3.0→…

以上例子中，1.0 至 1.0.1 至 1.0.2、1.1 至 1.1.1、2.1 至 2.1.1 都是小更新；1.0.2 至 1.1、2.0 至 2.1 都是較大的更新；而 1.1.1 至 2.0 和 2.1.1 至 3.0 則是重大更新。

有時，小數版本號碼後面會有「a」、「b」、「rc」等字樣，代表某版本的測試版。「a」、「b」、「rc」分別代表「alpha」、「beta」和「release candidate」。（詳見軟體出版周期，軟體版本週期）例如「2.0a」是 2.0 的 alpha 測試版，接著可能發佈「2.0b」，是 2.0 的 beta 測試版。跟著，又可能出現「2.0b2」，代表 2.0 的第 2 個 beta 測試版。當 beta 測試完結後，又可能推出「2.0rc1」、「2.0rc2」兩個版本，分別代表 2.0 的第一和第二個 release candidate 測試版。當一切測試結束後，就會有「2.0」正式版。

### 實例

只有 _major_ 和 _minor_ 的軟體有如 MediaWiki。當 MediaWiki 發佈 1.9 版本後，下一個版本是 1.10。

Mozilla Firefox 的 3.x 版本有 _major_、_minor_ 和 _build_。例如其中兩個版本為 3.0 和 3.0.1。而 Firefox 的 2.x 版本更有四個數字，此時版本結構改為 $major.minor.maintenance.build$ 。例如 Firefox 2.x 的其中一個版本為 2.0.0.14。（更多資料：Mozilla Firefox 歷史）

## 日期

除了依照版本發佈次序逐個數以外，軟體版本編號亦有可能使用日期。例如版本「20080101」代表該版本於 2008 年 1 月 1 日發佈。通常日期的排列方法會是「YYYY-MM-DD」，因為這樣做的好處是，當電腦排序時，可以自動分辨哪個是較舊或較新的版本。

有時候，版本編號更會由小數和日期結合，即是類以 1.5.20080101 等方式。

### 實例

使用小數和日期結合的版本編號軟體，例如 Firefox 的其中一個擴充套件「IE Tab」的其中一個版本編號為 1.5.20080823。

而 Ubuntu 亦是採用日期的訂定版本編號方式，但卻看起來像以普通小號訂定。例如 Ubuntu 8.04 版本代表該版本於 2008 年 4 月發佈。事際上，由於 Ubuntu 並非每個月發佈，而是每半年發布一個版本，因此版本編號會跳序。而一年只有 12 個月，所以亦沒有像 6.13 這樣的版本。

## 年份

有些軟體，尤其不會在一年中出版兩次的軟體會使用年份作版本編號。例如 2003 版代表該軟體於 2003 年發佈。有時軟體亦採用兩字的年份縮寫，例如以 04 代表 2004 年。

### 實例

微軟的很多產品都以此方式訂定版本編號。例如 Windows 95、Windows 2000、Microsoft Office 2007 等。但是，微軟這些產品一般還具有小數版本號。例如：Microsoft Visual Studio 2010 的版本號是 10.0；Windows 2000 的版本號是 5.0，Windows XP 的版本號是 5.1，Windows Vista 的版本號是 6.0，Windows 7 的版本號是 6.1 等等。

MATLAB 通常一年中釋出兩個版本，自 2006 年後以「R」+ 四位年份 +「a」或「b」的方式區分。例如 MATLAB R2011a、MATLAB R2011b 等。

## 數學常數

有些軟體採用數學常數來進行訂定版本編號。具體方法為先選定一個數學常數，每個新版本都距離該數學常數更近。其含義是該軟體有一個確定的功能目標，而不是在未來無限擴充其功能範圍，所以採用數學常數作為版本號表示距離軟體的目標越來越逼近。例如選用圓周率的軟體，其版本應為 3、3.1、3.14、3.141、……

### 實例

TeX 選定的數學常數為 π。而 METAFONT 選定的數學常數則為 _e_。

## 英文縮寫

有些軟體採用英文縮寫來為版本制定編號。

### 實例

Macromedia 於 2004 年推出 Flash MX。Adobe 收購 Macromedia 後，為其推出之後續版本為 Flash CS2，當中「CS」代表 Creative Suite。

Windows 有兩個版本採用英文縮寫作版本編號，分別是 Windows Me 和 Windows XP。「Me」代表「Millennium」（千禧年）或「me」（自己）；「XP」代表「experience」（體驗），當讀出 experience 時，讀音像讀出 x 和 p。

Ubuntu 於 2008 年 4 月推出 8.04 LTS 版本。Ubuntu 將長期為 8.04 版本提供技術支援。支援時間最少為三年。LTS 是 Long Term Support 的英文縮寫，意為長期支援。

## 特別注意事項

### 混合使用各種訂定方式

有些軟體會混合使用各種版本編號訂定方式，即不同的版本分別採用不同的訂定方式。

例如 Windows，曾採用普通小數方式（Windows 1.0 至 Windows 3.11），年份（Windows 95、Windows 98、Windows 2000），縮寫（Windows Me、Windows XP）和英文字（Windows Vista）。

### 同時擁有兩個版本編號

有些軟體會同時擁用兩個版本編號，即是以兩種不同的訂定方式，賦予同一個版本兩個編號。

例如 Windows：Windows 95 亦即 Windows 4.0，Windows 98 亦即 Windows 4.10，Windows Me 亦即 Windows 4.90，Windows 2000 亦即 NT 5.0，Windows XP 亦即 NT 5.1，Windows Vista 亦即 NT 6.0，Windows 7 亦即 NT 6.1。

### 小數版本序號可能會跳序

有些軟體的小數版本序號可能會出現跳序。此處「跳序」是指同一個軟體，兩個相鄰的使用小數版本序號的版本，並不是 _major_、_minor_ 或 _build_ 其中一個值相差 1。

例如 Simutrans 自 2005 年的 _major_ 版本序號為 86.x、88.x、89.x、99.x、100.x。當中 86 至 88 和 89 至 99 出現了跳序。

除此以外，還有軟體會因為「不幸運數字」（例如 4、13）的原因而跳序。

## 在軟體以外的領域

除了軟體以外，還有其他東西也採用類似的版本編號訂定。

* 電影的續集通常為「XXX 2」，當中 XXX 是電影名稱。如果再有續集，則會是「XXX 3」。
  * 例如**魔鬼終結者**、**魔鬼終結者 2** 和**魔鬼終結者 3**
* Web 2.0 並不是指軟體「Web」的第二個版本，而是指網際網路的一個新定義，新轉變。

## 參見

* 軟體
* 版本
* 軟體出版周期

## 參考資料及注釋

## 外部連結

* Windows Version Numbers
* TN 1132 - Version Territory （頁面存檔備份，存於網際網路檔案館）, the Apple technical note specifying the use of the NumVersion scheme
* Software Release Practice Howto （頁面存檔備份，存於網際網路檔案館）
* http://netrik.sourceforge.net/?versions.html （頁面存檔備份，存於網際網路檔案館）
* http://www.everything2.com/index.pl?node\_id=1128644 （頁面存檔備份，存於網際網路檔案館）
* http://pear.php.net/group/docs/20040226-vn.php （頁面存檔備份，存於網際網路檔案館）
* http://openacs.org/doc/openacs-5-0-0/eng-standards-versioning.html （頁面存檔備份，存於網際網路檔案館）
* http://wiki.eclipse.org/index.php/Version\_Numbering （頁面存檔備份，存於網際網路檔案館）
* https://web.archive.org/web/20080919105207/http://www.linux.com/articles/45507
* http://blogs.ittoolbox.com/database/soup/archives/guide-to-postgresql-version-numbers-19177 （頁面存檔備份，存於網際網路檔案館）
* http://www.xfree86.org/4.1.0/Versions2.html （頁面存檔備份，存於網際網路檔案館）
* https://web.archive.org/web/20080503101533/http://www.phpbb.com/mods/documentation/appendix/versioning/index.php
* https://web.archive.org/web/20061110185820/https://help.ubuntu.com/6.10/ubuntu/about-ubuntu/C/version-numbers.html