姜 文,劉立康
(西安電子科技大學 通信工程學院,陜西 西安 710071)
軟件配置管理中的基線問題研究
姜 文,劉立康
(西安電子科技大學 通信工程學院,陜西 西安 710071)
基線是軟件配置管理中的一個重要概念。基線有多種不同的定義,是一個比較模糊的工程概念。每種基線定義只反映了基線內涵的某個側面,需要分析研究各種基線定義之間的區別和內在聯系。文中結合配置管理的基本概念,分別歸納并給出了五種不同的基線定義;敘述了基線的層級、軟件項目的階段基線、實現階段基線的水平等級和粒度;之后介紹了基線管理的過程和基線管理在軟件開發中的優點。通過敘述各種基線的相關概念,理清了各種基線概念之間的關系和內在聯系。集中介紹了基線相關的技術問題,有助于更好地應用和管理基線。工作實踐表明,深入理解基線概念的內涵有助于掌握各種軟件配置管理工具的區別和共同之處,從而在各種環境下做好軟件開發的配置管理工作。
配置管理;配置項;版本;版本庫;基線
軟件配置管理是對軟件配置項的管理。為了使軟件配置項能夠隨項目的進展有序、準確的變化,為項目提供有效的參考,引入了“基線(Baseline)”的概念。在一個開發階段結束或一組功能開發完成后,要對相應的配置項進行基線化,形成各類基線。
基線是軟件配置管理[1-9]中的一個重要的基本概念。基線有多種不同的定義,也是一個比較模糊的工程概念。文中介紹了配置管理的基本概念,分別歸納并給出了五種不同的基線定義;敘述了基線的層級、軟件項目的階段基線、實現階段基線的水平等級和粒度;介紹了基線管理的過程和基線管理的優點。各種基線定義都反映基線內涵的某個側面,文中厘清了各種基線定義的區別和內在聯系。
1.1 配置項(Configuration Item)
配置項是配置管理的基本單位,可以分為三個主要類別:計算機程序(源代碼和可執行程序)、文檔和數據。配置項包含了軟件開發過程中產生的各種信息。
配置項的識別是配置管理活動的基礎,也是制定配置管理計劃的重要內容。
1.2 元素(Element)
在配置管理工具ClearCase中,元素是版本控制下的文件和目錄。文件元素可以是文件系統中的任何文件。目錄元素可以包含文件元素及其他目錄元素。
配置項和元素之間的關系:元素是軟件配置項的載體,配置項以元素的形式保存在計算機中。配置項是元素存儲的內容。
1.3 版本(Version)
版本亦稱配置標識,是實例化了的配置項。在軟件開發過程中,配置項的版本隨項目進展而不斷變化,會被賦予不同的版本號。
版本的演變一般有兩種方式:串行演變和并行演變。版本的這兩種演變形式通常結合在一起,形成更為普通的帶分支的版本樹。版本樹反映了項目開發演變的歷史。每個元素記錄了它所代表的文件或目錄的版本。
1.4 分支(Branches)
分支描述了元素的樹狀版本結構;每個元素都有一個主分支,代表開發的主線,可以有多個獨立開發線的子分支,子分支還可以再有子分支。
1.5 版本庫(VOB)
版本對象庫(Version Object Base,VOB)簡稱版本庫(VOB),也稱為配置管理庫。版本庫是軟件配置管理系統的核心,用來存儲文件、目錄和元數據的數據存儲庫。版本庫以目錄樹結構形式的文件系統來保存信息。它存儲了版本控制下所有的文件、目錄和元數據等。
通常邏輯上版本庫可以分為開發庫—DL(動態庫、程序員庫、工作庫)、受控庫—CL(靜態庫、主庫)、產品庫—PL。版本庫的實際物理存儲結構可根據軟件項目具體情況來確定。受控庫和產品庫是由配置管理員管理,所有的配置項經評審通過后才能入庫。
版本庫的結構見表1。
1.6 構件(Component)
構件通過一個根目錄來定義。將開發團隊進行開發的文件和目錄組合在一起形成了構件。開發團隊以構件為單位進行開發、集成和發布。一個VOB可以包含一個或多個構件。
1.7 軟件項目
簡單地說,項目就是實現某個目標的工作任務。一個軟件項目要素包括軟件開發過程、軟件開發結果、軟件開發資源和軟件項目的客戶。一個軟件項目可以有多個版本庫。

表1 版本庫的結構
1.8 流(Stream)
流是一種ClearCase對象,UCM定義了兩種流:開發流(Development Stream)和集成流(Integration Stream)。開發流主要是單個開發工程師的工作流;集成流則是對項目中所有開發工程師的活動進行合并的流。
基線和流的相互關系:基線由流產生,流使用基線作為其配置。
基線[10-12]是軟件配置管理中的一個重要的基本概念,有多種定義,大致分為如下幾類。
2.1 基于產品
這種定義方式比較寬泛,不僅僅適用于軟件配置管理。
IEEE的基線定義:己經通過正式評審和批準的某規約或產品,它可以作為進一步開發的基礎,并且只能通過正式的變更控制過程進行變更。
基線定義1:基線是某個規約或者產品,具有三個特點:
(1)通過正式評審并得到認可;
(2)下一步工作的基礎;
(3)基線變更需要通過嚴格的變更管理過程。
2.2 基于配置項
基線定義2:在軟件配置管理過程中,一個配置項或一組配置項在不同時間點,通過正式評審而進入受控的一種狀態,就是基線。
一些配置項成為相對穩定的邏輯實體,這個過程稱為“基線化”。基線建立之后,該基線的內容被“凍結”,不能隨意修改。基線是下一步開發的出發點和參考點。對基線進行修改將嚴格按照變更管理的過程進行。作為配置管理的基礎,基線保證了后續開發活動所需信息的穩定性和一致性。
2.3 基于版本
基線定義3:基線是項目文檔或者源代碼等文件的一個穩定的版本。基線有名稱、版本、標識符、日期等屬性。它是進一步開發的基礎,其變更必須通過正式的變更程序。
如果某一產品版本被定為基線,那么它就被凍結,要想變更基線必須建立一個新的版本。
2.4 基于里程碑(Milestone)
里程碑就是開發過程中的“階段”。“階段”強調的是過程,而“里程碑”則強調過程的終點和終點的標識。
基線定義4:基線是軟件開發過程中的一個里程碑,其標志是一些軟件配置項的交付,并且這些配置項通過技術審核獲得認可。這些配置項納入基線管理,作為后續工作的標準,標志著項目可以進入下一個過程。
2.5 UMC構件的基線和復合基線
在ClearCase UCM[11-17]中,一個構件表示一組元素,基線表示構件中的一組版本。基線確定了一個構件中的每個元素的一個版本,如圖1所示。

圖1 基線
基線定義5:基線是一個構件在某一特定時刻一組元素的集合,包含了該時刻所選取元素版本的集合,記錄了軟件開發過程中完成的工作。
UCM工程項目只有一個構件,該構件的基線就是該工程項目的基線。一般來說,工程項目可能有多個構件,工程項目基線包含每個構件的特定基線。
復合基線:如果工程項目中構件較多,采用復合基線進行管理。復合基線選取每個構件中的特定基線來表示整個工程項目的基線。
基線的定義是一個實用的工程定義,以上五種定義有著內在的聯系,反映了基線內涵的某個側面。在一些書中通常將幾種定義糅合在一起作為基線的定義。
基線分為三個層級(項目基線、構件基線、單項基線),如表2所示。

表2 基線的層級
(1)項目基線是項目組使用的基線,保存在版本庫的受控庫(CL)中。一個軟件項目可以有多個版本庫。每個版本庫可能由多個構件組成,但至少包含一個構件。
(2)構件基線是供開發該構件的團隊使用。
(3)單項基線是指對單個配置項建立的基線,供開發該配置項的開發人員使用。
軟件開發過程中的主要階段基線如表3所示。

表3 軟件的主要階段基線及相應的軟件配置項列表
計劃基線、需求基線、概要設計基線和詳細設計基線是設計階段基線,以文檔的形式存在。編碼基線、測試基線和產品基線是實現階段基線,包括文檔、代碼和可執行程序。常見的產品版本和補丁發布,對應產品基線。
對于需求、設計、編碼、測試來說,需求是設計的上游,設計是編碼的上游,編碼是測試的上游。如果上、下游之間采用基線的方式,也就是明確需求基線、設計基線、代碼基線、測試基線,不僅能夠為下游環節提供穩定的工作基礎,而且分別記錄需求、設計、編碼工作產生的缺陷情況,能夠明確各自的職責。
5.1 實現階段基線的水平等級
每個基線有一個相應的級別,通過級別劃分,可以大致了解基線的狀況。ClearCase中實現階段基線的等級分為5級(Rejected、Initial、Builted、Tested、Released)。
(1)Rejected:沒有通過測試,或者已經被新基線取代的基線。
(2)Initial:軟件開發初始階段確定的基線。
(3)Builted:集成構建生成的基線,通常采用增量構建。
(4)Tested:進行全量構建生成內部轉測試版本,提交測試組進行全面的測試工作,通過后產生測試(Tested)基線。
(5)Released:代碼開發工作完成后,測試(Tested)基線通過全面測試驗證、評審后升級為發布基線。
注:
(1)構建:一次構建通常可能包含編譯、測試、審查和部署,以及其他一些事情。
(2)增量構建:僅對新提交的代碼進行編譯,利用原有項目資源快速構建一個新的版本。構建成功后生成新的基線(增量基線)。
(3)全量構建:對全部代碼進行編譯、鏈接,構建生成新的基線(全量基線)。
5.2 基線的粒度
現在軟件開發通常采用持續集成(Continuous Integration)技術。持續集成服務器可以自動檢查動態庫的變化,設定時間區間,定時自動完成集成構建工作。幾個小時就可以建立一條新的基線。構建的頻率越高產生的基線粒度越小。
頻繁集成構建有利于及時發現和解決各種問題,加快了代碼流動,減少了任務間的等待時間;但是加大了提交代碼和測試的工作量,需要采取一種折中的選擇。
通常采用每日構建生成Builted基線,每周構建生成測試(Tested)基線。
軟件開發過程中與軟件基線管理相關的工作人員如下:項目經理(PM)、軟件系統工程師(SE)、配置管理員(CMO)、持續集成工程師(CIE)、軟件開發工程師(DEV)、軟件測試工程師、質量保障工程師(QA)、資料開發工程師。
其中,項目經理、質量保障工程師、配置管理員、開發組長、測試組長、系統工程師組成了產品配置控制委員會(Change Control Board,CCB)。
與基線相關的配置管理活動如下所述。
6.1 基線的建立
設計階段,軟件系統工程師完成軟件配置項的設計工作,經過評審后成為設計基線。
在實現階段,持續集成工程師從動態庫檢出代碼,生成新的代碼基線。
配置管理員負責將新的基線加入受控庫中,進行管理和維護。
6.2 基線標識和發布
基線由配置項組成,標識基線首先應該標識配置項。
配置項(CI)應分配唯一標識。標識規則可參考以下示例:
CI標識=項目標識/CI類型/CMI名稱/CI版本
例如:Prj1/DOC/用戶手冊/1.00
基線標識包括項目名稱、項目標識、基線名稱、版本、發布時間和所包含的配置項清單。
基線經過CCB審批后就可以發布(基線發布表可參考圖2)。

圖2 基線發布表單示例
配置管理員負責基線的標識和發布工作。基線只有經過審核,確認其是正確、有效、一致時,才能正式發布。基線發布后開始正式使用。
6.3 基線變更
基線變更是對基線的配置項的更改,必須通過嚴格的變更步驟,在配置管理系統的變更控制下進行。
主要由以下4個步驟組成:
(1)提交變更申請:基線變更的范圍、變更的優先級、變更的影響、變更方案。
(2)變更評估:CCB對基線變更請求進行評估、分析和評審。
(3)變更審批:若接受變更請求,則確定變更方案。在項目經理的指導下,由配置管理員負責授權。
(4)變更實現:執行基線變更并驗證;驗證通過后,合入受控庫中的基線庫;關閉變更請求并發布。
配置管理員對基線變更進行審核,將審核結果和當前配置情況提交項目經理批準。批準后,配置管理員執行基線化的操作,并發布基線建立的報告。
軟件開發過程中實施基線管理主要有如下優點:
(1)提供統一規范和同步開發工作:基線為后繼的開發工作統一標準規范,確保團隊開發工程師工作保持同步。
(2)及時處理各種問題:采用持續集成技術,選擇合適的基線粒度,有助于項目經理及時了解工作進度和存在的問題,及時處理。
(3)配置項關聯性:通過項目基線確保配置項之間正確的關聯狀態。保證設計滿足需求方案、產品的實現符合設計要求。
(4)版本差異分離:新項目可以從基線的版本序列中選擇合適的版本開始工作,與原項目(主要分支上)進行的變更實現隔離。
(5)變更可回退性:如果變更有問題,可采用取消變更的方式,回退至穩定版本。
(6)問題可追蹤性:通過基線版本序列可以追蹤產品的各種問題,可以重新建立基于某個版本的配置,可以重現軟件開發過程中的軟件缺陷和各種問題。
各種軟件配置管理工具有不同的設計理念,但都采用基線作為配置管理的基礎。基線管理能夠明確各個開發階段的職責,使上游階段為下游階段提供穩定的工作基礎;為軟件產品的維護和新版本開發提供了良好的基礎。各種基線定義都反映基線內涵的某個側面,需要研究各種基線定義的不同和內在聯系。文中厘清了各種基線相關概念之間的關系,有助于更好地應用和管理基線。工作實踐表明,深入理解基線概念的內涵有助于掌握各種軟件配置管理工具的區別和共同之處,從而在各種環境下做好軟件開發的配置管理工作。
[1] 劉文紅.CMMI項目管理實踐[M].北京:清華大學出版社,2013.
[2] 王安生.軟件工程化[M].北京:清華大學出版社,2014.
[3] 韓萬江,姜立新.軟件項目管理案例教程[M].第2版.北京:機械工業出版社,2009.
[4] 董 越.未雨綢繆—理解軟件配置管理[M].第2版.北京:電子工業出版社,2012.
[5] 董 越.軟件集成策略—如何有效率地提升質量[M].北京:電子工業出版社,2013.
[6] 劉江華,王 立,馬 玲,等.軟件開發過程與配置管理:基于Rational的敏捷方案設計與應用[M].北京:電子工業出版社,2011.
[7] 相玉娟.基于變更管理的持續集成研究與應用[D].合肥:合肥工業大學,2009.
[8] 劉 海,張衛民,任開軍. 一種網格環境下的軟件配置管理系統[J].計算機工程與科學 2007, 29(8) 105-107.
[9] 陳 帆,尹黎明,肖衛軍,等.軟件配置管理中的分支管理與協作機制研究[J].計算機工程與科學,2005, 27(1) 70-73.
[10] 周 念.基于SVN的軟件配置管理的應用研究[D].武漢:武漢理工大學,2013.
[11] Aiello B,Sachs L.配置管理最佳實踐[M].北京:人民郵電出版社,2013.
[12] Bellagio D E,Milligan T.Software configuration management strategies and IBM rational clearcase:a practical introduction[M].2nd ed.USA:IBM Press,2005.
[13] 彭德良.基于RUP的軟件配置管理[D].西安:西北工業大學,2007.
[14] Tykal J.Best practices for using composite baselines in UCM[R].[s.l.]:Prentice Hall,2004.
[15] Collins-Sussman B,Fitzpatrick B W,Pilato C M.Version control with subversion for subversion 1.5[M].[s.l.]:[s.n.],2005.
[16] Koskela J.Software configuration management in agile methods[R].[s.l.]:[s.n.],2003.
[17] Lee K A.IBM rational clearcase,ant and cruisecontrol[M].USA:IBM Press,2006.
Research on Baseline in Software Configuration Management
JIANG Wen,LIU Li-kang
(School of Telecommunication Engineering,Xidian University,Xi’an 710071,China)
Baseline is an important concept in software configuration management.There are many different definitions of baseline,which is a vague concept of engineering.Each baseline definition reflects the connotation of the baseline from a profile,only needing to analyze the difference and inner link for various definitions between the baseline.In this paper,combined with the basic concept of configuration management,five different baseline definitions are summarized respectively.It describes the baseline level,baseline phase of software project,and baseline levels and granularity in implementation phase.Then it introduces the baseline management process and the advantages for baseline management in software development.Through a variety of related concepts of the baseline,the relationship between the concept of baseline and inner link is clarified.It focuses on the baseline related technical problems,which contributes to application and management of the baseline.Practice shows that to understand the connotation of the concept of baseline in depth helps to grasp the difference and common of software configuration management tools,doing a good job of software configuration management in a variety of circumstances.
configuration management;configuration items;version;repository;baseline
2015-09-05
2015-12-09
時間:2016-05-25
國家部委基礎科研計劃:國防預研基金項目(A1120110007)
姜 文(1986-),女,工程師,碩士研究生,CCF會員,研究方向為圖像處理與分析、文字信息分析處理、數據庫應用和軟件工程;劉立康,副教授,研究方向為數字通信、圖像傳輸與處理、圖像分析與圖像識別等。
http://www.cnki.net/kcms/detail/61.1450.TP.20160525.1706.024.html
TP391.41
A
1673-629X(2016)06-0006-05
10.3969/j.issn.1673-629X.2016.06.002