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