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