基于構件的軟件版本管理系統(tǒng)研究
3.3 文件的操作權限管理
操作權限用于管理特定用戶對構件中文件的使用權限,分為/只讀0和/可寫0兩種。它控制的是用戶對文件的操作能力。用戶操作模式是用戶檢出構件時對文件的實際操作。用戶操作模式不能超過操作權限。例如,擁有/只讀0權限的用戶只能用/只讀0模式檢出文件,擁有/可寫0權限的用戶才可以用/只讀0、/排他寫0和/共享寫0模式修改文件。操作權限與操作模式一樣,都是針對構件中的文件。通過操作權限的管理,可以劃分不同用戶對同一構件所承擔的工作任務。操作模式和操作權限相結合,有效地解決了多個用戶協(xié)同開發(fā)同一個構件時的并發(fā)控制問題。
圖3 各種文件操作模式間的轉換
4 基于構件的版本管理系統(tǒng)的實現(xiàn)
在上述研究基礎之上,研制了青鳥配置管理系統(tǒng)JBCM的核心部分。基于構件的版本管理系統(tǒng)JBVM. JBVM對基于構件的軟件開發(fā)方法提供了充分支持,其最主要的特點是將構件與文件版本管理分布于兩個不同層次,在系統(tǒng)設計方面也就具有相應的層次性。本節(jié)主要討論設計與實現(xiàn)中的關鍵問題及其解決策略。
4.1 版本庫的組織結構
版本庫是構件版本演化歷史的存儲區(qū)。版本庫中記錄的數(shù)據(jù)分為版本構件和元數(shù)據(jù)兩類。版本構件是用戶交付的各類構件,由于同時具有版本信息,故稱為版本構件。元數(shù)據(jù)是管理系統(tǒng)維持自身運行所需的各種控制文件與完成各種版本管理功能所需的信息,包含日志、用戶管理、并發(fā)控制、權限控制、操作模式、統(tǒng)計與審計等信息。
圖4 版本庫的層次結構
版本管理系統(tǒng)設計的核心內容包括版本庫的組織、結構與維護。 版本庫的組織結構分為兩個層次: 項目層和構件層。對于系統(tǒng)開發(fā)人員來說, 版本庫中的項目可以與系統(tǒng)開發(fā)中的工作劃分相對應, 一個軟件系統(tǒng)的整體或子系統(tǒng)都可以作為一個項目。 而構件對應于軟件系統(tǒng)結構中最低層的不可再分的基本邏輯單元, 可以是系統(tǒng)開發(fā)過程中需要作為一個整體的文件集合, 例如用于實現(xiàn)一個C+ + 類的所有。 cpp 和。 h文件。 下面是版本庫的一個簡化結構示例圖。 在項目a( 用a.Prj 表達) 下, 有c 和d 兩個構件( 用c. Comp 和d. Comp 表達) ,而c 構件由e. cpp、f. h 和一個g 目錄組成。 TempFile 是版本庫的臨時文件存儲區(qū)。
4.2 構件的增量存儲
構 件的不同版本間具有較大的內容相似性, 不同版本的存儲有必要使用增量存儲方式, 以減少存儲冗余。 在傳統(tǒng)的文件版本管理系統(tǒng)中, 已較深入地研究了文件的增量存儲技術, 有實際的算法及實現(xiàn), 如最長公共子序列算法[ 5] 等。 根據(jù)基于構件的版本管理的特點,提出了按構件和文件兩個層次分別進行增量存儲的設計方案:
?。?1) 對于構件中具體文件的修改, 使用傳統(tǒng)的文件逆向增量存儲技術[ 2] , 保存最新文件版本與增量部分。
?。?2) 構件的版本由附屬目錄及文件的版本組成。 構件的增量存儲體現(xiàn)在版本中記錄的是相比前一版本組成成分的不同部分。
?。?3) 對于文件和構件存在多個分支的情況, 對各分支獨立進行增量式存儲。 保存每個分支上的最新版本和其他版本相對于各自后一版本的增量。
4.3 構件版本的比較與合并
構件演化過程中會產生多個分支,各分支都會實現(xiàn)一些不同于其他分支的新特性。有時需要將這些特性都合并到一個版本中。為了保證在多個用戶協(xié)同工作時的正確性,也經(jīng)常需要合并多個用戶分別修改過的構件版本。構件不同版本的合并采用如下策略:不同版本添加的文件有選擇地添加到合并版本中,修改過的文件逐一進行合并。
構件版本的比較是版本合并的基礎。在合并之前,可以通過構件版本的比較得到不同版本間的差異。除此之外,為了查看構件的演化歷史,實現(xiàn)對構件的變化與過程控制,也需要比較構件的新老版本;在基于構件的版本管理系統(tǒng)中,構件版本的比較分為兩個層次。底層是文件級的比較,通過比較不同版本文件的具體內容,得到文件內容的差異。上層是構件級的比較,通過比較構件不同版本組成成分,來獲取構件整體的變化情況。在JBVM系統(tǒng)中,通過構件級別上的比較則可分析出構件的不同版本各自包含哪些文件,以及分別對哪些文件進行了修改。
5 結束語
本 文著重討論了基于構件的軟件版本管理模型, 以及相應系統(tǒng)的設計與實現(xiàn)。 基于構件的思想不僅可以應用于版本控制, 配置管理中的其它功能, 例如配置支持、構造支持、審計控制、統(tǒng)計報告、過程支持和團隊支持等方面都可以建立在構件的基礎上。 我們將進一步研究以構件為粒度配置支持、構造支持和變化控制方法。
評論