基本含義
版本管理是為滿足不同需求,對同一產品或系統進行局部的改進 和改型所產生的產品或系統系列的變更情況進行記錄、跟 蹤、維護和控制的過程。
它的主要功能有:
(1)
集中管理檔案,安全授權機制:檔案集中地存放在伺服器上,經
系統管理員授權給各個用戶。用戶通過check in和check out的方式訪問伺服器上的檔案,未經授權的用戶則無法訪問伺服器上的檔案。
(2) 軟體版本升級管理:每次登入時,在
伺服器上都會生成新的版本,任何版本都可以隨時檢出編輯。
(3) 加鎖功能:在檔案更新時保護檔案,避免不同的用戶更改同一檔案時發生衝突。
版本管理模型
(1)線性版本管理模型
這是按版本出現的先 後次序排列的一種簡單模型。一個對象的版本聚集 在一起組成一個版本集,版本集中的元素之間滿足 “successor-of”的
有序關係。版本集中的元素是
全序關係,新元素只能朝一個方向上增加,除最新版本外,其餘版本均是
唯讀版本。
(2)樹型版本管理模型:
樹型版本管理模型中 各版本的出現呈現樹狀結構。同樣一個對象的版本 聚集在一起組成一個版本集,版本集中的元素之間 滿足“successor-of”的有序關係。但版本集中的元 素是半序關係,即一個版本可以有多個後繼版本, 因此,可以有多個最新版本。同樣,除最新版本外, 其餘版本均是唯讀版本。這種模型可以反映設計過 程中以某一中間版本為基礎,選擇多種設計方案而 形成多個設計結果的情況。
(3)有向無環圖版本管理模型:
有向無環圖版 本管理模型中各版本的出現呈現無循環圖的結構。 同樣一個對象的版本聚集在一起組成一個版本集, 版本集中的元素之間滿足“successor-of”的有序關 系,版本集中的元素是半序關係,即一個版本可以 有多個後繼版本,因此,可以有多個最新版本。但 是一個版本可以有多個前驅版本。同樣,除最新版 本外,其餘版本均是唯讀版本。這種模型可以表達 由多個設計零部件合成一個完整對象的情況,即由 多個設計版本融合出一個新版本的情況。此模型是 較為完善的模型,線性及樹型模型是它的特例。
版本管理方法
版本管理的常用方法有: 向前版本管理法、有限記錄版本管理法、向後版本管理法、關鍵版本管 理法和設計版本的重新組織等方法。
(1) 向前版本管理法:
只完整的存儲原始版本數據,後繼的版本僅存儲與前驅版本的差。這種方法的優點是
數據冗餘少,生成新版本簡單; 缺點是對原始版本以外的所有版本的訪問都必須依據一定的算法臨時生成相應的版本,比較繁瑣。
(2) 向後版本管理法:
與向前版本管理法正好相反,該方法只完整存儲最新版本數據,其他版本只存儲其與後繼版本之間的差。因此同樣
數據冗餘少,而且一般情況下對新版本的訪問頻度較高,效率比向前版本管理法高。缺點是每次生成的新版本 都是完整的版本,比較費時和複雜,訪問新版本以 外版本時也必須依據一定的算法臨時生成相應的版本。
(3)有限記錄版本法:
為減少數據冗餘,實際套用中不大可能保存每個對象的所有版本。有限記 錄版本法提供為每個對象保留有限數量的不同版本 的方法進行版本管理,在新版本生成時,系統自動廢除一些老版本,這樣可以重用其占有的空間,從 而不會擴大
資料庫所占用的總空間。
(4)關鍵版本法:
在工程產品設計過程中產生 的諸多版本中,其重要性是有很大差別的。因此, 根據各資料庫在整個產品設計過程中的重要性,可 以將其分為關鍵版本和非關鍵版本,在生成資料庫 的新版本之時,可以廢除某個非關鍵版本,以重用 其所占有的存儲空間,但不允許系統自動廢除某一 關鍵版本。
(5)設計版本的重新組織:
重新組織的方法是 利用已有的多個資料庫版本融合出一個新的
資料庫版本。充分利用資料庫中已經存儲的大量歷史數據 來生成資料庫的新版本是有可能的和富於價值的。
(6)版本管理的新方法:
用於減少
數據冗餘和 實現版本間的引用和比較,如版本集和選擇的概念。 版本集是通過修改一個已存在的實體而產生的版 本,同一
實體的不同版本實質上是相似的。而選擇則是通過創建一個新的實體以表示相同功能的實體 而產生的,兩個選擇之間可能沒有任何共同之處。 從中可以看出版本集和選擇雖然都與實體相關聯, 但兩者間存在很大的差別,應該採用不同的方式實現。若版本之間只是部分的修改,且修改多集中在 一些記錄上,可以採用“記錄級版本”的方法;若 兩個選擇之間的差別較大,應採用“檔案級版本” 的方法。
在記錄級版本法中,用一個唯一的記錄標識來 標識每條物理記錄,並作為該記錄在資料庫中的物 理地址。一個版本檔案由三個內部檔案支持: 歷史 索引、當前版本檔案、舊版本檔案。三個檔案組織 成一個樹型結構,其中歷史索引是根,其孩子是記 錄級版本順序號,不同的版本順序號通過鍵與當前 版本檔案和舊版本檔案連線,表示版本的變遷情況。
在檔案級版本法中,每個選擇用一個檔案的命名
集合來表示,對集合中每個檔案,在檔案名稱後用 一個後綴序號表示。如:
cmp.1 ——表示原始版本
cmp.2
…
對於每個檔案下擴充,可以採用子序列1.1、 1.2、1.3的形式加以擴充。
(7)C/S體系結構的版本管理:
工程資料庫技術 是
client/server 結構最典型的套用領域之一。在C/S 結構的工程資料庫套用系統中,資料庫應用程式運行在
客戶端(client),負責用戶界面和I/O處理; 數 據庫管理系統運行在
伺服器端(server),負責數據處 理和存儲。在這種體系結構中,版本的管理有自身的特點。
C/S資料庫體系中一般採用版本的不同類型實 現版本管理,即多種語義版本模式,由public數據 庫、若干個project資料庫和若干個private資料庫組 成。這種版本模式可用三種不同的語義類型加以區 分: ①發布版本(released version): 發布版本駐留在 public資料庫中,具有刪除和修改保護。其他對象 對發布版本的使用是安全的。②工作版本(working version): 與發布版本一樣,工作版本也是不能修改 的。但它可由創建者來修改,可以駐留在private數 據庫中,也可以駐留在project資料庫中。工作版本 通過檢驗進入public資料庫後,就成為發布版本。 ③過渡版本(transient version): 過渡版本駐留在 private資料庫中,禁止該private資料庫外的其他對 象訪問。一個過渡版本可以從工作版本或發布版本 中派生出來,也可以通過自動升級成為工作版本。
(8)面向對象版本管理:
在面向對象版本管理 中通過引入“類版本”,將版本分為類版本和實例 版本兩種類型,其中類版本是模式版本化生成的, 而實例是模式的具體實現,不同的實現形成不同的 實例版本。版本的演化過程通過樹型結構體現,被 修改的版本是父版本,修改後得到的版本是其子版 本。版本在不同的資料庫中具有不同的狀態,主要 包括: ①臨時版本: 在私有庫中,沒有子版本的版 本稱為臨時版本,可以進行修改和刪除; ②有效版 本: 在臨時版本上導出子版本後,臨時版本提升為 有效版本,此時可以刪除但不可修改;③提交版本: 設計人員完成設計後,將私有庫中最完善的版本提 交到公有庫中,公有庫中的版本稱為提交版本,此 時不可刪除也不可修改。
複雜管理模式
在面向對象版本管理的模式演化過程中,根據對象的不同類型,對版本的修改採用不同的處理方 式,在原有類版本上進行修改或形成新的類版本; 對實例版本只在模式修改的情況下才作相應的修 改,其他情況則仍屬於原來的類版本。針對簡單對 象和複雜對象,版本管理採用的處理方式也不同。
簡單對象的模式演化,即類定義的改變,包括 類的屬性和方法的增、刪、改操作。如果增加的屬 性是對原有類版本更細緻的描述,只需修改原有類 版本的屬性定義,不需形成新的類版本; 如果增加 的屬性引起類性質的變化,則需生成新的版本,舊 版本的實例版本保持不變。刪除屬性是增加屬性的 逆過程,其處理方式與增加的處理方式相同。對於 屬性修改,一般情況均生成新版本,只有方法的修 改和增加時不生成新版本。
複雜對象是由簡單對象
遞歸聚合而成的,增加 或刪除其中的簡單對象,都會引起複雜對象的結構 層次發生變化,均需生成複雜對象的新版本。
在版本管理過程中還需維護屬性和方法的一 致,如果所刪除或修改的屬性與方法的接口相關聯, 須在屬性改變後立即修改方法,保證屬性和方法的 一致性。
常用控制軟體
CVS(Concurrent Versions System)
VSS(Micorosoft Visual SourceSafe)
TFS(Team Foundation Server)
SourceSafe for SQL Server