作者:黃存玲(中國(guó)石油集團(tuán)東方地球物理勘探有限責(zé)任公司)
一、前言
對(duì)于一個(gè)軟件企業(yè),開(kāi)發(fā)出滿(mǎn)足用戶(hù)需求的、高質(zhì)量的軟件產(chǎn)品是其追求的目標(biāo),而實(shí)現(xiàn)這一目標(biāo)的關(guān)鍵是建立起一個(gè)穩(wěn)定、可控、可重用的軟件開(kāi)發(fā)過(guò)程。軟件企業(yè)要想永葆競(jìng)爭(zhēng)優(yōu)勢(shì)就必須不斷地改進(jìn)它的軟件開(kāi)發(fā)過(guò)程,而要進(jìn)行軟件開(kāi)發(fā)過(guò)程改進(jìn)就需要有明確的、量化的對(duì)現(xiàn)狀的分析和對(duì)未來(lái)的預(yù)期,這些數(shù)據(jù)來(lái)源于對(duì)軟件過(guò)程的度量,而進(jìn)行度量的前提和基礎(chǔ)就是軟件配置管理。所以,軟件配置管理工作是以整個(gè)軟件過(guò)程的改進(jìn)為目標(biāo),是為軟件項(xiàng)目管理和軟件工程的其他領(lǐng)域打好基礎(chǔ),以便于穩(wěn)步推進(jìn)整個(gè)軟件企業(yè)的能力成熟度。而做好軟件配置管理是邁向軟件開(kāi)發(fā)規(guī)范化管理的第一步。
對(duì)于中小型軟件開(kāi)發(fā),軟件配置管理的作用不是很明顯,但對(duì)大型軟件開(kāi)發(fā),由于開(kāi)發(fā)人員眾多,程序量大,系統(tǒng)復(fù)雜,軟件配置管理至關(guān)重要。
軟件配置管理對(duì)于軟件開(kāi)發(fā)管理是如此重要,它的主要思想和具體內(nèi)容在于版本控制。版本控制是軟件配置管理的核心思想之一,是指對(duì)軟件開(kāi)發(fā)過(guò)程中各種程序代碼、配置文件及說(shuō)明文檔等文件變更的管理。版本控制最主要的功能就是追蹤文件的變更。它將什么時(shí)候、什么人更改了文件的什么內(nèi)容等信息忠實(shí)地記錄下來(lái)。每一次文件的改變,文件的版本號(hào)都將增加。除了記錄版本變更外,版本控制的另一個(gè)重要功能是并行開(kāi)發(fā)。軟件開(kāi)發(fā)往往是多人協(xié)同作戰(zhàn),版本控制可以有效地解決版本的同步以及不同開(kāi)發(fā)者之間的開(kāi)發(fā)通訊問(wèn)題,提高協(xié)同開(kāi)發(fā)的效率。并行開(kāi)發(fā)中最常見(jiàn)的不同版本軟件的Bug修正問(wèn)題,就可以通過(guò)版本控制中分支與合并的方法有效地解決。
二、大型軟件系統(tǒng)
大型一體化系統(tǒng)軟件是為了滿(mǎn)足石油勘探開(kāi)發(fā)對(duì)地震數(shù)據(jù)處理與解釋日益增長(zhǎng)的需要,而開(kāi)發(fā)的大型處理、解釋一體化系統(tǒng),該系統(tǒng)由系統(tǒng)平臺(tái)和應(yīng)用系統(tǒng)組成,系統(tǒng)平臺(tái)包括數(shù)據(jù)平臺(tái)、交互框架平臺(tái)、通用顯示工具、可視化顯示平臺(tái)。在這個(gè)平臺(tái)上構(gòu)建處理系統(tǒng)、解釋系統(tǒng)和一體化應(yīng)用系統(tǒng)。項(xiàng)目計(jì)劃在兩年內(nèi)完成,預(yù)計(jì)程序行數(shù)400萬(wàn)以上、開(kāi)發(fā)人員200余人。
經(jīng)驗(yàn)表明,軟件規(guī)模越大生產(chǎn)率越低。而且隨著軟件規(guī)模增大,軟件開(kāi)發(fā)成功率也越低,在我們國(guó)家,軟件業(yè)還沒(méi)有脫離手工作坊的方式。如此大規(guī)模的軟件開(kāi)發(fā),已往手工作坊式的管理方式要改變,軟件配置管理要?jiǎng)?chuàng)新。與其他的一些軟件工程活動(dòng)不一樣,軟件配置管理的對(duì)象——(軟件)配置項(xiàng),它們不僅是大量人力物力投入的結(jié)晶,更是開(kāi)發(fā)經(jīng)驗(yàn)的積累,是軟件組織最寶貴的財(cái)富。
軟件配置管理貫穿于軟件開(kāi)發(fā)活動(dòng)的始終,覆蓋了開(kāi)發(fā)活動(dòng)的各個(gè)環(huán)節(jié),它的重要作用之一就是要全面的管理保存各個(gè)配置項(xiàng),監(jiān)控各配置項(xiàng)的狀態(tài),并向項(xiàng)目經(jīng)理及項(xiàng)目長(zhǎng)提交配置報(bào)告。配置管理工作更強(qiáng)調(diào)工具的支持,缺乏良好的配置管理工具的話(huà),要做好配置管理的實(shí)施會(huì)非常困難。軟件配置管理是一項(xiàng)十分繁瑣的工作,同時(shí)又和整個(gè)軟件的開(kāi)發(fā)活動(dòng)緊密地聯(lián)系在一起,為使軟件開(kāi)發(fā)能夠始終處于受控之中,就必須建立一套體現(xiàn)軟件工程特點(diǎn)的配置管理體系,并依據(jù)體系要求選用軟件配置管理工具。
三、軟件配置管理工具
Firefly是Hansky公司軟件開(kāi)發(fā)管理套件中的重要組件。Firefly可以對(duì)大型軟件開(kāi)發(fā)的程序代碼和相關(guān)文檔進(jìn)行管理,具有以下突出的特點(diǎn):
1、?本地工作區(qū)(Local Workspace)
Local Workspace存儲(chǔ)從服務(wù)器上下載的一個(gè)分支的下的文件,開(kāi)發(fā)人員在工作時(shí)首先要從服務(wù)器上將最新修改的項(xiàng)目文件下載到本地工作區(qū),然后才能對(duì)項(xiàng)目文件進(jìn)行編輯、編譯、調(diào)試等工作。有了Local Workspace,可以保持本地的工作文件和服務(wù)器上的工作文件的同步。同時(shí),還可以比較本地工作區(qū)文件與服務(wù)器文件的不同,在每次下載和上傳時(shí)不必將所有的項(xiàng)目文件都傳輸一遍,從而提高了工作的效率。
2、?標(biāo)簽(Label)
Label采用索引技術(shù)提高了操作效率,通過(guò)下載Lable的功能為編譯、測(cè)試提供了便利。
3、?兩種開(kāi)發(fā)模式
Firefly支持并行/串行兩種開(kāi)發(fā)模式,并且提供向?qū)?lái)檢驗(yàn)和解決文件的沖突,使得團(tuán)隊(duì)的開(kāi)發(fā)快速、便捷而且高效。
4、?分支
在Firefly中可以方便的建立項(xiàng)目的分支,可以在主分支上建立分支,也可以在次分支上建立分支,還可以在Label的基礎(chǔ)上建立分支;建立分支的時(shí)候可以選擇父分支的一部分文件。
在開(kāi)發(fā)主分支的同時(shí)有可能同時(shí)開(kāi)發(fā)修正Bug的分支,當(dāng)主分支的開(kāi)發(fā)工作告一階段后,通常會(huì)把Bug修正分支合并到主分支上去,如下圖:

這種建立和管理項(xiàng)目分支和記錄分支間父子關(guān)系的功能,避免了由于兩方歸并所造成的混亂問(wèn)題,為軟件產(chǎn)品的多個(gè)版本的同時(shí)開(kāi)發(fā)提供了強(qiáng)有力的支持。
4、變更集
Firefly將每一次工作區(qū)的檢入都視作一個(gè)變更集,每一個(gè)變更集都作為項(xiàng)目分支的歷史被保存下來(lái),管理人員可以通過(guò)WEB界面方便的查詢(xún)分支的歷史。
5、原子事務(wù)
利用原子事務(wù)的概念,將一個(gè)包含多個(gè)文件改變的入庫(kù)操作作為一個(gè)事務(wù)(Transaction)來(lái)對(duì)待,全部文件的提交只有成功或者不成功兩種情況,沒(méi)有中間狀態(tài)(如一部分成功提交,而另一部分提交失敗的狀態(tài))。這樣能夠處理一些操作過(guò)程中的異常情況,比如提交過(guò)程中網(wǎng)絡(luò)中斷等,保證軟件系統(tǒng)的一致性,防止其他開(kāi)發(fā)人員取到錯(cuò)誤的代碼而編譯、運(yùn)行失敗。
6、本地記錄
通過(guò)Delta操作支持本地版本的記錄。在某一工作區(qū)中,修改了一個(gè)文件,然后通Delta操作,可以在本地記錄下一個(gè)新的版本。提交到服務(wù)器上后,其他人也可以訪(fǎng)問(wèn)這一版本。
7、權(quán)限控制
Firefly采取了類(lèi)似于NTFS的權(quán)限控制體系,不僅能夠控制項(xiàng)目分支一級(jí)的權(quán)限,還可以深入到目錄/文件一級(jí)進(jìn)行權(quán)限設(shè)定,文件的權(quán)限缺省從目錄繼承,還可以手工對(duì)特定文件的權(quán)限進(jìn)行調(diào)整;并且可以細(xì)分權(quán)限的等級(jí)。這種權(quán)限體系可以保證項(xiàng)目所涉及到的開(kāi)發(fā)工作都處于受控的狀態(tài)下,從而保障項(xiàng)目不受干擾,能夠順利開(kāi)發(fā)。
四、建立配置管理體系
1、管理層次
依據(jù)配置管理系統(tǒng)功能特性,結(jié)合我們實(shí)際情況和需要,建立自己的管理體系。以往,我們已經(jīng)成功地開(kāi)發(fā)了其他大中型軟件,但配置管理體系很不完善,一些主要配置項(xiàng)(源代碼和程序文檔)是靠手工管理,由于人員流動(dòng)性大,又沒(méi)有統(tǒng)一的配置管理體系,開(kāi)發(fā)活動(dòng)不能受到有效的控制,不能形成團(tuán)隊(duì)財(cái)富的積累。有人對(duì)配置管理是什么都不清楚,對(duì)配置管理系統(tǒng)的使用在思想上不容易接受,認(rèn)為使用配置管理系統(tǒng)進(jìn)行程序版本控制使開(kāi)發(fā)活動(dòng)受到了限制,給開(kāi)發(fā)增加了工作量。特別是這次超大規(guī)模軟件系統(tǒng)的開(kāi)發(fā),時(shí)間緊,任務(wù)重,如果配置管理系統(tǒng)使用不當(dāng)影響項(xiàng)目進(jìn)度或造成源程序丟失,會(huì)給開(kāi)發(fā)帶來(lái)巨大損失,后果不堪設(shè)想。
為此,從管理層次和系統(tǒng)集成兩個(gè)方面考慮,選擇了降低管理風(fēng)險(xiǎn)方案,首先采用了兩層管理層次(圖1? 二層管理層次圖)。
2、存儲(chǔ)庫(kù)創(chuàng)建
依據(jù)兩層管理模式,配置管理和版本控制主要在項(xiàng)目級(jí)和子項(xiàng)目級(jí)配置管理員中使用。從一體化系統(tǒng)的結(jié)構(gòu)來(lái)說(shuō),盡管該系統(tǒng)龐大,包括許多子系統(tǒng),但是,最終要集成一個(gè)系統(tǒng),而且管理模式?jīng)Q定了版本控制是在項(xiàng)目開(kāi)發(fā)到一定階段,形成初步系統(tǒng)模型時(shí)納入版本控制。因此在Firefly服務(wù)器上創(chuàng)建一個(gè)程序代碼庫(kù),用來(lái)存儲(chǔ)初步集成的源代碼。使用這樣的庫(kù)結(jié)構(gòu)有利于對(duì)配置項(xiàng)的統(tǒng)一管理和控制,同時(shí)也能提高編譯和發(fā)布的效率?!?/font>

3、權(quán)限設(shè)置
創(chuàng)建一個(gè)代碼存儲(chǔ)庫(kù),是為了便于統(tǒng)一管理,但是如何讓開(kāi)發(fā)人員根據(jù)任務(wù)分工的不同而獲得對(duì)相應(yīng)配置項(xiàng)(源代碼)的操作許可,而對(duì)于其他源代碼不能操作。為此,利用Firefly提供的文件級(jí)訪(fǎng)問(wèn)權(quán)限設(shè)置,對(duì)不同目錄進(jìn)行用戶(hù)權(quán)限設(shè)置,只有對(duì)該目錄具有讀寫(xiě)權(quán)限的用戶(hù)才能對(duì)其進(jìn)行操作,為子系統(tǒng)配置管理員授權(quán)一個(gè)文件目錄,如圖2權(quán)限設(shè)置圖中src/ap目錄授權(quán)給smq用戶(hù)。
圖2 權(quán)限設(shè)置
4、分支的劃分
· 集成分支
為了系統(tǒng)集成測(cè)試需要,創(chuàng)建集成分支,并對(duì)該分支進(jìn)行了不同子項(xiàng)目的權(quán)限控制,各子項(xiàng)目必須將開(kāi)發(fā)成果納入到該分支,凡是對(duì)納入到該分支的配置項(xiàng)進(jìn)行的任何變更,都必須首先從該分支獲得,變更后再上傳到該分支。軟件的集成測(cè)試工作在這一分支中進(jìn)行。項(xiàng)目級(jí)配置管理員擁有對(duì)該集成分支的管理和讀寫(xiě)權(quán)限,子項(xiàng)目級(jí)配置管理員只有對(duì)指定的目錄有讀寫(xiě)權(quán)限。(圖3分支圖)
· 主干分支
主干分支對(duì)應(yīng)的是整個(gè)軟件開(kāi)發(fā)組織的發(fā)布分支。各個(gè)子項(xiàng)目在現(xiàn)階段的任務(wù)完成后,將可以發(fā)布的版本歸并到該分支上,由該分支產(chǎn)生發(fā)布版本,對(duì)每次的發(fā)布基線(xiàn)和相關(guān)資料,以該分支上的版本為準(zhǔn)。該分支的管理工作由項(xiàng)目級(jí)配置管理員負(fù)責(zé)。(圖4分支及標(biāo)簽)
上面定義的2類(lèi)(分支)由配置管理員統(tǒng)一管理,根據(jù)各開(kāi)發(fā)階段的實(shí)際情況定制相應(yīng)的版本選取規(guī)則,來(lái)保證開(kāi)發(fā)活動(dòng)的正常運(yùn)作。
比如,軟件已經(jīng)發(fā)布了1.0版本,開(kāi)發(fā)小組在為該軟件添加新的功能,正在進(jìn)行2.0版本的開(kāi)發(fā)。而此時(shí),如果Release 1.0中發(fā)現(xiàn)了Bug必須修正,我們就必須從Release 1.0中建立bugfix分支,進(jìn)行必要的修正后,發(fā)布修正版Release 1.1,而這個(gè)版本的發(fā)布與2.0版本的開(kāi)發(fā)沒(méi)有直接關(guān)系。當(dāng)2.0版本測(cè)試結(jié)束后,要與1.0版本中bugfix分支合并,從而發(fā)布2.0的版本。在這個(gè)并行開(kāi)發(fā)過(guò)程中,創(chuàng)建分支和分支的合并起了非常重要的作用。

圖3 分支

圖4 分支及標(biāo)簽
· 產(chǎn)品基線(xiàn)
當(dāng)一個(gè)開(kāi)發(fā)里程碑結(jié)束,或有重大事件發(fā)生時(shí),利用配置管理系統(tǒng)提供的標(biāo)簽功能,對(duì)集成分支和主干分支進(jìn)行標(biāo)記,該標(biāo)記作為產(chǎn)品基線(xiàn),可以按標(biāo)記進(jìn)行版本發(fā)布和再現(xiàn)(圖4分支及標(biāo)簽)。
· 與分支對(duì)應(yīng)的本地工作區(qū)
把相關(guān)配置項(xiàng)納入集中的存儲(chǔ)庫(kù)、為不同目的建立了不同分支后,按照初始設(shè)定的管理層次,子項(xiàng)目級(jí)配置管理員遵照“檢出/檢入”的工作模式對(duì)配置項(xiàng)進(jìn)行修改,就要為每位子項(xiàng)目級(jí)配置管理員設(shè)定本地工作區(qū),對(duì)所授權(quán)的目錄進(jìn)行的任何變更都要在本地工作區(qū)進(jìn)行。
· 開(kāi)發(fā)工作區(qū)
開(kāi)發(fā)人員根據(jù)項(xiàng)目要求在自己的私有工作區(qū)中對(duì)配置項(xiàng)進(jìn)行修改和測(cè)試活動(dòng),私有工作區(qū)可以是CVS版本控制軟件工作空間或其他,自己的修改活動(dòng)不會(huì)受到他人的影響,也不會(huì)影響到其他開(kāi)發(fā)人員,修改和測(cè)試后的配置項(xiàng)提交給子系統(tǒng)配置管理員,由子項(xiàng)目級(jí)配置管理員上傳到集成分支。
五、逐步完善分支創(chuàng)建方式
1、依據(jù)開(kāi)發(fā)需要,創(chuàng)建平臺(tái)分支
由管理層次決定的分支是一個(gè)主分支一個(gè)集成分支,但隨著開(kāi)發(fā)活動(dòng)的深入,系統(tǒng)平臺(tái)開(kāi)發(fā)和應(yīng)用開(kāi)發(fā)之間出現(xiàn)互相牽制問(wèn)題,平臺(tái)程序變更后在沒(méi)有與應(yīng)用程序聯(lián)調(diào)之前,會(huì)影響到應(yīng)用程序的開(kāi)發(fā),嚴(yán)重時(shí)會(huì)使應(yīng)用程序開(kāi)發(fā)工作無(wú)法正常進(jìn)行,為了查找原因,有時(shí)需要花上一兩天時(shí)間,影響了開(kāi)發(fā)進(jìn)度。鑒于這種情況,新創(chuàng)建了系統(tǒng)平臺(tái)分支,系統(tǒng)平臺(tái)子項(xiàng)目組在該分支開(kāi)發(fā)集成,待測(cè)試通過(guò)并與應(yīng)用聯(lián)調(diào)后再利用分支歸并功能,將程序歸并到集成分支,既達(dá)到了程序控制的目的,又不影響開(kāi)發(fā)進(jìn)度,有效的提高了開(kāi)發(fā)效率。這一分支方式說(shuō)明了通過(guò)科學(xué)管理可以出效率。
2、為了方便管理,建立鏈接分支
平臺(tái)分支和集成分支應(yīng)用一段時(shí)間后,又出現(xiàn)了新的問(wèn)題,平臺(tái)的變更,需要通過(guò)應(yīng)用程序進(jìn)行測(cè)試。但是,系統(tǒng)平臺(tái)分支上的應(yīng)用程序不能時(shí)時(shí)更新,除非將集成分支的應(yīng)用合并到平臺(tái)分支,這樣給管理帶來(lái)許多麻煩,為了解決該問(wèn)題,利用FireflyV3.0版本中提供的鏈接功能,在系統(tǒng)分支上創(chuàng)建了鏈接,鏈接到集成分支的應(yīng)用部分,這樣,平臺(tái)分支可以隨時(shí)得到應(yīng)用系統(tǒng)變更的文件,大大方便了測(cè)試版本的制作。(圖5鏈接點(diǎn))。
開(kāi)發(fā)過(guò)程中系統(tǒng)分支和應(yīng)用集成分支以及鏈接的應(yīng)用,使平臺(tái)開(kāi)發(fā)和應(yīng)用開(kāi)發(fā)可以有序進(jìn)行,消除了平臺(tái)變更對(duì)應(yīng)用開(kāi)發(fā)帶來(lái)的影響,促進(jìn)了開(kāi)發(fā)進(jìn)度,有效地控制了平臺(tái)和應(yīng)用的變更,為開(kāi)發(fā)階段版本管理和控制起到了很好的作用。

圖5 鏈接點(diǎn)
3、為發(fā)布產(chǎn)品,啟用主干分支
在項(xiàng)目開(kāi)發(fā)階段基本結(jié)束,進(jìn)入產(chǎn)品發(fā)布階段后,除了建立產(chǎn)品基線(xiàn)外,啟用了主干分支為發(fā)布分支,集成分支上測(cè)試通過(guò)的程序,及時(shí)合并到發(fā)布分支制作發(fā)布版本。在產(chǎn)品發(fā)布初期,用戶(hù)和試生產(chǎn)發(fā)現(xiàn)問(wèn)題比較多,程序變更頻繁,每周要集成一個(gè)新版本,為了標(biāo)示不同時(shí)間編譯的版本,除了版本號(hào)之外,附加了BuildNumber來(lái)標(biāo)示,如圖4所示的標(biāo)簽。
六、依據(jù)測(cè)試階段,集成軟件版本
從軟件工程化和保證產(chǎn)品質(zhì)量出發(fā),軟件測(cè)試采用三級(jí)測(cè)試方式:?jiǎn)卧獪y(cè)試、集成測(cè)試和生產(chǎn)性測(cè)試(試生產(chǎn)),由于項(xiàng)目開(kāi)發(fā)時(shí)間緊,不能一級(jí)測(cè)試結(jié)束,再開(kāi)始下一級(jí)測(cè)試,而均采用滾動(dòng)開(kāi)發(fā)測(cè)試方式進(jìn)行,多數(shù)情況下是同時(shí)進(jìn)行,這給版本控制和集成帶來(lái)很大困難,為此,建立了三種集成環(huán)境。三個(gè)版本的版本控制和集成是通過(guò)分支、測(cè)試基線(xiàn)、分支合并來(lái)完成。
1、單元測(cè)試
單元測(cè)試由開(kāi)發(fā)人員在相對(duì)穩(wěn)定的系統(tǒng)開(kāi)發(fā)平臺(tái)上進(jìn)行,其中,相對(duì)穩(wěn)定的系統(tǒng)平臺(tái)需要集成一個(gè)系統(tǒng)平臺(tái)版本。
2、集成測(cè)試
集成測(cè)試是將各個(gè)子系統(tǒng)組成一個(gè)可運(yùn)行系統(tǒng)的重要階段。由于一體化軟件是系統(tǒng)平臺(tái)與應(yīng)用系統(tǒng)幾乎同時(shí)開(kāi)發(fā)的項(xiàng)目,系統(tǒng)平臺(tái)內(nèi)部、應(yīng)用系統(tǒng)內(nèi)部,以及平臺(tái)與應(yīng)用之間的組裝都需在集成測(cè)試階段完成。
3、生產(chǎn)測(cè)試
生產(chǎn)測(cè)試要求集成測(cè)試后比較穩(wěn)定的版本,該版本利用標(biāo)簽進(jìn)行標(biāo)示。
4、版本回溯
在測(cè)試中,經(jīng)常出現(xiàn)新修改的程序版本有問(wèn)題,需要回溯到上一個(gè)版本,這是,使用配置管理系統(tǒng)提供的版本管理功能非常方便地回到任意一個(gè)程序版本。
七、完善和改進(jìn)配置管理體系
在兩年來(lái)的開(kāi)發(fā)管理和版本控制中,有成功也有教訓(xùn),最初使用配置管理系統(tǒng)時(shí),對(duì)其功能和使用方式不熟悉,出現(xiàn)了許多問(wèn)題,對(duì)項(xiàng)目開(kāi)發(fā)產(chǎn)生了一些影響,一度出現(xiàn)了放棄配置管理工具的念頭,最終在各方面人員的支持下,使得配置管理系統(tǒng)得以繼續(xù)在管理中發(fā)揮作用。
1、?改進(jìn)管理層次
在系統(tǒng)集成階段使用配置管理系統(tǒng)進(jìn)行版本控制,解決了許多問(wèn)題,促進(jìn)了開(kāi)發(fā)效率,為項(xiàng)目按期完成提供了有利保證。但是,在管理層次中,開(kāi)發(fā)人員的開(kāi)發(fā)活動(dòng)沒(méi)有納入統(tǒng)一的控制之中,這種方式容易造成修改的版本不是最終版本問(wèn)題。
針對(duì)上述現(xiàn)象和兩年來(lái)的使用經(jīng)驗(yàn),在項(xiàng)目開(kāi)發(fā)進(jìn)入一個(gè)新的階段時(shí)(開(kāi)發(fā)2.0版本),將版本控制范圍擴(kuò)大到每一位開(kāi)發(fā)人員,使每個(gè)開(kāi)發(fā)人員的開(kāi)發(fā)活動(dòng)始終處于版本控制之中,管理層次如圖6所示。
2、?增加子分支
為達(dá)到上述目的,子系統(tǒng)配置管理員也應(yīng)該是分支管理員,為此,在集成分支下創(chuàng)建應(yīng)用子系統(tǒng)的子分支,子分支分別由子系統(tǒng)配置管理員管理并設(shè)置用戶(hù)權(quán)限,進(jìn)行子系統(tǒng)集成,然后再歸并到集成分支。
3、?本地工作區(qū)
每位開(kāi)發(fā)人員的工作空間都使用與配置管理系統(tǒng)相連的本地工作區(qū),開(kāi)發(fā)活動(dòng)始終處于受控之中。

八、經(jīng)驗(yàn)與體會(huì)
在版本控制和管理方面的經(jīng)驗(yàn)主要體現(xiàn)以下幾個(gè)方面:
1、創(chuàng)建以“版本控制”為中心的大規(guī)模軟件配置管理體系
對(duì)于一體化系統(tǒng)這樣前所未有的超大規(guī)模、且開(kāi)發(fā)周期僅兩年的軟件開(kāi)發(fā)項(xiàng)目,如何保證軟件開(kāi)發(fā)在有序與受控方式下進(jìn)行,是項(xiàng)目成功開(kāi)發(fā)要解決的關(guān)鍵問(wèn)題。
首先,要制定一套體現(xiàn)項(xiàng)目特點(diǎn)的軟件配置管理體系,才能使開(kāi)發(fā)處于受控之中。據(jù)此,項(xiàng)目組決定引進(jìn)配置管理系統(tǒng)進(jìn)行配置管理和版本控制,這也是首次在如此大規(guī)模的軟件項(xiàng)目中使用配置管理系統(tǒng)。由于是初次使用,基于過(guò)去軟件開(kāi)發(fā)的經(jīng)驗(yàn),結(jié)合本項(xiàng)目的特點(diǎn)和軟件配置管理的現(xiàn)狀,制定了適合本項(xiàng)目的版本控制層次結(jié)構(gòu)(見(jiàn)圖1),分支策略和權(quán)限控制。
2、依據(jù)軟件開(kāi)發(fā)的需要,創(chuàng)建配置管理體系
在項(xiàng)目開(kāi)發(fā)過(guò)程中,依據(jù)每個(gè)開(kāi)發(fā)階段的具體運(yùn)作實(shí)踐,對(duì)版本控制層次結(jié)構(gòu)和分支策略進(jìn)行完善與實(shí)用化改進(jìn)。配置管理體系的建立,使開(kāi)發(fā)機(jī)構(gòu)的開(kāi)發(fā)模式逐步邁入工程化開(kāi)發(fā)管理的新時(shí)期。
九、結(jié)束語(yǔ)
通過(guò)兩年項(xiàng)目開(kāi)發(fā)實(shí)踐,許多開(kāi)發(fā)人員對(duì)版本控制的概念有了新的認(rèn)識(shí),從最初的抵觸情緒到后來(lái)主動(dòng)要求要使用配置管理系統(tǒng),基本形成了軟件工程化的開(kāi)發(fā)氛圍。
兩年來(lái),在項(xiàng)目長(zhǎng)、各級(jí)子項(xiàng)目長(zhǎng)和項(xiàng)目部主管領(lǐng)導(dǎo)的支持下,一體化系統(tǒng)配置管理體系得到了有史以來(lái)的發(fā)展和完善,管理人員和開(kāi)發(fā)人員的觀念得到了轉(zhuǎn)變,初步形成了一套適合大規(guī)模應(yīng)用軟件項(xiàng)目開(kāi)發(fā)的版本控制與管理體系,積累了比較豐富的技術(shù)與管理經(jīng)驗(yàn)。配置管理體系的建立,增強(qiáng)了開(kāi)發(fā)團(tuán)隊(duì)對(duì)大規(guī)模軟件開(kāi)發(fā)的版本控制能力,為開(kāi)發(fā)團(tuán)隊(duì)的可持續(xù)發(fā)展奠定了技術(shù)基礎(chǔ),積累了軟件財(cái)富。
有效地記錄并控制軟件開(kāi)發(fā)過(guò)程產(chǎn)品版本演化進(jìn)程,是搞好過(guò)程控制的基礎(chǔ)。軟件配置管理體系的有效實(shí)施,使軟件開(kāi)發(fā)活動(dòng)合理有序,為進(jìn)一步搞好軟件項(xiàng)目管理和開(kāi)發(fā)管理奠定了基礎(chǔ)。建立開(kāi)發(fā)、測(cè)試受控庫(kù),確定受控基線(xiàn),對(duì)源程序、運(yùn)行環(huán)境進(jìn)行嚴(yán)格的版本管理與變更控制,確保項(xiàng)目過(guò)程產(chǎn)品的一致性、正確性和安全性,有效地降低了開(kāi)發(fā)風(fēng)險(xiǎn),縮短了產(chǎn)品的開(kāi)發(fā)周期。因此,配置管理體系作為開(kāi)發(fā)管理的主要過(guò)程之一,對(duì)處理、解釋一體化系統(tǒng)的開(kāi)發(fā)成功起到了不可替代的作用。
十、參考文獻(xiàn)
1、《軟件配置管理及其工具應(yīng)用》人民郵電出版社;
2、《Firefly配置管理系統(tǒng)》Hansky產(chǎn)品培訓(xùn)手冊(cè)。