配置管理(Configuration Management,CM)是通過(guò)技術(shù)或行政手段對軟件產(chǎn)品及其開(kāi)發(fā)過(guò)程和生命周期進(jìn)行控制、規范的一系列措施。配置管理的目標是記錄軟件產(chǎn)品的演化過(guò)程,確保軟件開(kāi)發(fā)者在軟件生命周期中各個(gè)階段都能得到精確的產(chǎn)品配置。
配置管理過(guò)程是對處于不斷演化、完善過(guò)程中的軟件產(chǎn)品的管理過(guò)程。其最終目標是實(shí)現軟件產(chǎn)品的完整性、一致性、可控性,使產(chǎn)品極大程度地與用戶(hù)需求相吻合。它通過(guò)控制、記錄、追蹤對軟件的修改和每個(gè)修改生成的軟件組成部件來(lái)實(shí)現對軟件產(chǎn)品的管理功能。
早在七十年代初期加利福利亞大學(xué)的Leon PrESser教授就撰寫(xiě)了一篇論文,提出控制變更和配置的概念,之后在1975年,他成立了一家名為SoftTOOl的公司,開(kāi)發(fā)了自己的配置管理工具:CCC,這也是最早的配置管理工具之一。之后,隨著(zhù)軟件開(kāi)發(fā)規模的逐漸增大,越來(lái)越多的公司和團隊意識到了軟件配置管理的重要性,而相應的軟件配置管理工具也如雨后春筍一般,紛紛涌現,比較有代表性的有:Marc Rochkind的SCCS(Source Code Control SySTem)和Walter Tichy的RCS(Revision control System),這兩種工具對日后的配置管理工具的發(fā)展做出了重大的貢獻,目前絕大多數廣泛使用的配置管理工具基本上都是基于這兩者的設計思想和體系架構。
一、配置管理在軟件開(kāi)發(fā)過(guò)程和項目管理過(guò)程中的作用
隨著(zhù)軟件系統的日益復雜化和用戶(hù)需求、軟件更新的頻繁化,配置管理逐漸成為軟件生命周期中的重要控制過(guò)程,在軟件開(kāi)發(fā)過(guò)程中扮演著(zhù)越來(lái)越來(lái)重要的角色。一個(gè)好的配置管理過(guò)程能覆蓋軟件開(kāi)發(fā)和維護的各個(gè)方面,同時(shí)對軟件開(kāi)過(guò)程的宏觀(guān)管理,即項目管理,也有重要的支持作用。良好的配置管理能使軟件開(kāi)發(fā)過(guò)程有更好的可預測性,使軟件系統具有可重復性,使用戶(hù)和主管部門(mén)用軟件質(zhì)量和開(kāi)發(fā)小組有更強的信心。
軟件配置管理的最終目標是管理軟件產(chǎn)品。由于軟件產(chǎn)品是在用戶(hù)不斷變化的需求驅動(dòng)下不斷變化,為了保證對產(chǎn)品有效地進(jìn)行控制和追蹤,配置管理過(guò)程不能僅僅對靜態(tài)的、成形的產(chǎn)品進(jìn)行管理,而必須對動(dòng)態(tài)的、成長(cháng)的產(chǎn)品進(jìn)行管理。由此可見(jiàn),配置管理同軟件開(kāi)發(fā)過(guò)程緊密相關(guān)。配置管理必須緊扣軟件開(kāi)發(fā)過(guò)程的各個(gè)環(huán)節:管理用戶(hù)所提出的需求,監控其實(shí)施,確保用戶(hù)需求最終落實(shí)到產(chǎn)品的各個(gè)版本中去,并在產(chǎn)品發(fā)行和用戶(hù)支持等方面提供幫助,響應用戶(hù)新的需求,推動(dòng)新的開(kāi)發(fā)周期。通過(guò)配置管理過(guò)程的控制,用戶(hù)對軟件產(chǎn)品的需求如同普通產(chǎn)品的訂單一樣,遵循一個(gè)嚴格的流程,經(jīng)過(guò)一條受控的生產(chǎn)流水線(xiàn),最后形成產(chǎn)品,發(fā)售給相應用戶(hù)。從另一個(gè)角度看,在產(chǎn)品開(kāi)發(fā)的不同階段通常有不同的任務(wù),由不同的角色擔當,各個(gè)角色職責明確,涇渭分明,但同時(shí)又前后銜接,相互協(xié)調。
好的配置管理過(guò)程有助于規范各個(gè)角色的行為,同時(shí)又為角色之間的任務(wù)傳遞提供無(wú)縫的接合,使整個(gè)開(kāi)發(fā)團隊象一個(gè)交響樂(lè )隊一樣和諧而又錯雜地行進(jìn)。正因為配置管理過(guò)程直接連接產(chǎn)品開(kāi)發(fā)過(guò)程、開(kāi)發(fā)人員和最終產(chǎn)品,這些都是項目主管人員所關(guān)注的重點(diǎn),因此配置管理系統在軟件項目管理中也起著(zhù)重要。配置管理過(guò)程演化出的控制、報告功能可幫助項目經(jīng)理更好地了解項目的進(jìn)度、開(kāi)發(fā)人員的負荷、工作效率和產(chǎn)品質(zhì)量狀況、交付日期等信息。同時(shí)配置管理過(guò)程所規范的工作流程和明確的分工有利于管理者應付開(kāi)發(fā)人員流動(dòng)的困境,使新的成員可以快速實(shí)現任務(wù)交接,盡量減少因人員流動(dòng)而造成的損失。
二、配置管理的功能
配置管理系統應該具備以下主要功能:
并行開(kāi)發(fā)支持:因開(kāi)發(fā)和維護的原因,要求能夠實(shí)現開(kāi)發(fā)人員同時(shí)在同一個(gè)軟件模塊上工作,同時(shí)對同一個(gè)代碼部分作不同的修改,即使是跨地域分布的開(kāi)發(fā)團隊也能互不干擾,協(xié)同工作,而又不失去控制;
修訂版管理:跟蹤每一個(gè)變更的創(chuàng )造者、時(shí)間和原因,從而加快問(wèn)題和缺陷的確定 ;
版本控制:能夠簡(jiǎn)單、明確地重現軟件系統的任何一個(gè)歷史版本 ;
產(chǎn)品發(fā)布管理:管理、計劃軟件的變更,與軟件的發(fā)布計劃、預先定制好的生命周期或相關(guān)的質(zhì)量過(guò)程保持一致;項目經(jīng)理能夠隨時(shí)清晰地了解項目的狀態(tài) ;
建立管理:基于軟件存儲庫的版本控制功能,實(shí)現建立(build)過(guò)程自動(dòng)化 ;
過(guò)程控制:貫徹實(shí)施開(kāi)發(fā)規范,包括訪(fǎng)問(wèn)權限控制、開(kāi)發(fā)規則的實(shí)施等 ;
變更請求管理:跟蹤、管理開(kāi)發(fā)過(guò)程中出現的缺陷(DefECt)、功能增強請求(RFE)或任務(wù)(TASk),加強溝通和協(xié)作,能夠隨時(shí)了解變更的狀態(tài) ;
代碼共享:提供良好的存儲和訪(fǎng)問(wèn)機制,開(kāi)發(fā)人員可以共享各自的開(kāi)發(fā)資源 ;
三、配置管理的流程

圖17-1 配置管理流程圖
1、制定配置管理計劃
配置管理員制定《配置管理計劃》,主要內容包括配置管理軟硬件資源、配置項計劃、基線(xiàn)計劃、交付計劃、備份計劃等。CCB審批該計劃。
2、配置庫管理
配置管理員為項目創(chuàng )建配置庫,并給每個(gè)項目成員分配權限。各項目成員根據自己的權限操作配置庫。配置管理員定期維護配置庫,例如清楚垃圾文件、備份配置庫等。
3、版本控制
在項目開(kāi)發(fā)過(guò)程中,絕大部分的配置項都要經(jīng)過(guò)多次的修改才能最終確定下來(lái)。對配置項的任何修改都將產(chǎn)生新的版本。由于我們不能保證新版本一定比老版本“好”,所以不能拋棄老版本。版本控制的目的是按照一定的規則保存配置項的所有版本,避免發(fā)生版本丟失或混淆等現象,并且可以快速準確地查找到配置項的任何版本。
配置項的狀態(tài)有三種:“草稿”、“正式發(fā)布”和“正在修改”,本規程制定了配置項狀態(tài)變遷與版本號的規則。
4、變更控制
在項目開(kāi)發(fā)過(guò)程中,配置項發(fā)生變更幾乎是不可避免的。變更控制的目的就是為了防止配置項被隨意修改而導致混亂。
修改處于“草稿”狀態(tài)的配置項不算是“變更”,無(wú)需CCB的批準,修改者按照版本控制規則執行即可。
當配置項的狀態(tài)成為“正式發(fā)布”,或者被“凍結”后,此時(shí)任何人都不能隨意修改,必須依據“申請-審批-執行變更-再評審-結束”的規則執行。
5、配置審計
為了保證所有人員(包括項目成員、配置管理員和CCB)都遵守配置管理規范,質(zhì)量保證人員要定期審計配置管理工作。配置審計是一種“過(guò)程質(zhì)量檢查”活動(dòng),是質(zhì)量保證人員的工作職責之一。
四、配置管理的實(shí)施
實(shí)施配置管理系統,一般的步驟和需要考慮的問(wèn)題如下:
規劃、調整網(wǎng)絡(luò )開(kāi)發(fā)環(huán)境
一個(gè)規劃良好的開(kāi)發(fā)環(huán)境,是實(shí)施配置管理系統的前提。在此階段我們要對配置管理系統做出規劃,主要考慮以下問(wèn)題:
* 網(wǎng)絡(luò )的帶寬、拓撲結構
*服務(wù)器的選擇、命名規范
*存儲區的定位
*開(kāi)發(fā)人員及組的命名規約等
設計配置管理庫
根據項目開(kāi)發(fā)的要求,設計開(kāi)發(fā)資源的存儲模式,良好的存儲模式有利于減輕管理上的負擔,增強配置管理庫的訪(fǎng)問(wèn)性能,同時(shí)便于控制訪(fǎng)問(wèn)權限,保護軟件資產(chǎn)。
定義配置管理系統的角色
在此階段,我們需要確定與配置管理相關(guān)的所有角色,包括他們的相應的活動(dòng)。在開(kāi)發(fā)過(guò)程中,一個(gè)開(kāi)發(fā)人員可能兼任多種角色,但一項任務(wù)在同一時(shí)刻只能由一個(gè)角色來(lái)執行。
一般配置管理中的角色主要包括:
項目經(jīng)理:項目經(jīng)理在配置管理方面的職責是依靠配置管理員、系統管理員和系統體系結構設計人員的幫助,制定項目的組織結構和配置管理策略。這些工作包括:定制開(kāi)發(fā)子系統,定制訪(fǎng)問(wèn)控制,制定常用策略,制定集成里程碑,以及進(jìn)行系統集成;
配置管理員:配置管理員的職責是根據項目經(jīng)理制定的開(kāi)發(fā)組織結構和策略,實(shí)施、維護配置管理的環(huán)境。其主要職責如下:創(chuàng )建配置管理庫,對存儲庫進(jìn)行日常備份和恢復,維護配置管理環(huán)境,及管理配置管理相關(guān)的用戶(hù);
軟件開(kāi)發(fā)人員:軟件開(kāi)發(fā)人員依據項目的開(kāi)發(fā)和配置管理策略,創(chuàng )建、修改和測試開(kāi)發(fā)工件;
集成人員:對軟件進(jìn)行歸并,形成相應的基線(xiàn)或發(fā)布版本 ;
QA人員:需要對軟件配置管理有較深的認識,其主要工作是跟蹤當前項目的狀態(tài),測試,報告錯誤,并驗證其修復結果;
制定配置管理流程
這是配置管理實(shí)施的一個(gè)重要階段,其主要目的是根據項目開(kāi)發(fā)的需要,制定相應的配置管理流程,以更好地支持開(kāi)發(fā),主要活動(dòng)包括:
定制并行開(kāi)發(fā)策略:合理的并行開(kāi)發(fā)策略應該具有以下特點(diǎn):協(xié)調項目的復雜性和需求,統一創(chuàng )建分支類(lèi)型和元數據,為開(kāi)發(fā)過(guò)程中的變更集成制定有效的規范,適時(shí)反映開(kāi)發(fā)過(guò)程中方法和需求的變化
發(fā)布版本管理:軟件開(kāi)發(fā)過(guò)程中的一個(gè)關(guān)鍵活動(dòng)是提取工件的相關(guān)版本,以形成軟件系統的階段版本或發(fā)布版本,我們一般將其稱(chēng)為穩定基線(xiàn)。一個(gè)穩定基線(xiàn)代表新開(kāi)發(fā)活動(dòng)的開(kāi)始,而一系列定制良好的活動(dòng)之后又會(huì )產(chǎn)生一個(gè)新的穩定基線(xiàn)。有效地利用此項功能,在項目開(kāi)發(fā)過(guò)程中可以自始至終管理、跟蹤工件版本間的關(guān)聯(lián)。
相關(guān)人員的培訓
一般來(lái)講,實(shí)施配置管理系統,相關(guān)人員需要接受以下培訓:
管理員培訓:針對配置管理員,主要學(xué)習配置管理工具管理相關(guān)內容
開(kāi)發(fā)人員培訓:針對開(kāi)發(fā)人員,主要學(xué)習配置管理工具與開(kāi)發(fā)相關(guān)的常用操作
管理流程培訓:針對全體人員,目的是了解配置管理策略和流程,以及如何與開(kāi)發(fā)管理、項目管理相結合
五、配置管理經(jīng)驗談
圍繞配置管理,世界一些致力于軟件工程研究的公司在深入理解ISO 9000的基礎上, 推出了各種符合ISO 9000配置管理標準的工具軟件,如INTERSOLV公司的PVCS,Rational公司的Clear Case等。這些配置管理工具面向軟件規范化、工程化、自動(dòng)化的需要,幫助開(kāi)發(fā)團隊提高科學(xué)管理水平,從而提高工程效率,降低工程成本?,F以PVCS為例,結合我們的實(shí)際經(jīng)驗,談?wù)勎覀儗?shí)施配置管理的益處:
1. 節約費用
(1) 縮短開(kāi)發(fā)周期
利用PVCS的Version Manager對程序資源進(jìn)行版本管理和跟蹤,建立公司的代碼知識庫,保存開(kāi)發(fā)過(guò)程中每一過(guò)程版本,這樣大大提高了代碼的重用率,還便于同時(shí)維護多個(gè)版本和進(jìn)行新版本的開(kāi)發(fā),防止系統崩潰,最大限度地共享代碼。同時(shí)項目管理人員可以通過(guò)Version Manager查看項目開(kāi)發(fā)日志,測試人員可以根據開(kāi)發(fā)日志和不同版本對軟件進(jìn)行測試,工程人員可以從Version Manager上得到不同的運行版本,并且Version Manager 可以安裝在Web Server供外地施工人員存取最新版本,無(wú)需開(kāi)發(fā)人員親臨現場(chǎng)。
利用Tracker組建開(kāi)發(fā)團體之間的問(wèn)題跟蹤及消息通迅,通過(guò)其N(xiāo)otify模塊與電子郵件結合起來(lái)大大加強了開(kāi)發(fā)團體之間的溝通,Reporter模塊可對發(fā)現的問(wèn)題進(jìn)行整理、以報表方式分類(lèi)報出,作為開(kāi)發(fā)的指導。
以上為PVCS的兩個(gè)主要模塊,科學(xué)地應用可以大大提高開(kāi)發(fā)效率,避免了代碼覆蓋、溝通不夠、開(kāi)發(fā)無(wú)序的混亂局面,如果利用了公司原有的知識庫,則更能提高工作效率,縮短開(kāi)發(fā)周期。
(2) 減少施工費用
利用PVCS進(jìn)行軟件配置管理后,建立開(kāi)發(fā)管理規范,把版本管理檔案掛接在公司內部的Web服務(wù)器上,內部直接通過(guò)NetSCApe訪(fǎng)問(wèn)Version Manager,工程人員通過(guò)遠程進(jìn)入內部網(wǎng),獲取所需的最新版本。開(kāi)發(fā)人員無(wú)需下現場(chǎng),現場(chǎng)工程人員通過(guò)對方系統管理員收集反饋意見(jiàn),書(shū)面提交到公司內部開(kāi)發(fā)組項目經(jīng)理,開(kāi)發(fā)組內部討論決定是否修改,并作出書(shū)面答復。這樣做,可以同時(shí)響應多個(gè)項目點(diǎn),防止開(kāi)發(fā)人員分配到各個(gè)項目點(diǎn)、分散力量、人員不夠的毛病,同時(shí)節約大量的旅差費用。
2. 有利于知識庫的建立
(1) 代碼對象庫
軟件代碼是軟件開(kāi)發(fā)人員腦力勞動(dòng)的結晶,也是軟件公司的寶貴財富,長(cháng)期開(kāi)發(fā)過(guò)程中形成的各種代碼對象就像一個(gè)個(gè)零件坯一樣,是快速生成系統的組成部分。長(cháng)期的一個(gè)事實(shí)是:一旦某個(gè)開(kāi)發(fā)人員離開(kāi)工作崗位,其原來(lái)所作的代碼便基本成為垃圾,無(wú)人過(guò)問(wèn)。究其原因,就是沒(méi)有專(zhuān)門(mén)對各人的有用對象進(jìn)行管理,把其使用范圍擴大到公司一級,進(jìn)行規范化,加以說(shuō)明和普及。Version Manager為對象管理提供了一個(gè)平臺和倉庫,有利于建立公司級的代碼對象庫。
(2) 業(yè)務(wù)及經(jīng)驗庫
通過(guò)PVCS Version Manager的注釋及Tracker,可形成完整的開(kāi)發(fā)日志及問(wèn)題集合,以文字方式伴隨開(kāi)發(fā)的整個(gè)過(guò)程,不依某個(gè)人的轉移而消失,有利于公司積累業(yè)務(wù)經(jīng)驗,無(wú)論對版本整改或版本升級,都具有重要的指導作用。
3. 規范管理
(1) 量化工作量考核
傳統的開(kāi)發(fā)管理中,工作量一直是難以估量的指標,靠開(kāi)發(fā)人員自已把握,隨意性相當大;靠管理人員把握,主觀(guān)性又太強。采用PVCS管理后,開(kāi)發(fā)人員每天下班前對修改的文件 Check In,其中記述當天修改細節描述,這些描述可以作為工作量的衡量指標。
(2) 規范測試
采用PVCS以后,測試有了實(shí)實(shí)在在的工作,測試工作人員根據每天的修改細節描述對每一天的工作做具體的測試,對測試人員也具有可考核性,這樣環(huán)環(huán)相扣,大大減少了其工作的隨意性。
(3) 加強協(xié)調與溝通
采用PVCS后,通過(guò)Version Manager文檔共享及其特定鎖機制、Tracker與電子郵件的集成,大大加強了項目成員之間的溝通,做到有問(wèn)題及時(shí)發(fā)現、及時(shí)修改、及時(shí)通知,但又不額外增加很多的工作量。
六、配置管理的精髓
具體來(lái)講,配置管理包含如下內容:
標識:識別產(chǎn)品的結構、產(chǎn)品的構件及其類(lèi)型,為其分配唯一的標識符,并以某種形式提供對它們的存取。
控制:通過(guò)一定的機制控制對配置項的修改
狀態(tài)報告:記錄并報告配置項以及元數據的狀態(tài)。
配置審計:確認產(chǎn)品的完整性并維護配置項間的一致性。
從上面的描述,我們知道,配置管理的基本單位是配置項。
從“哲學(xué)”意義上講,它記錄配置項的三個(gè)方面:
從哪里來(lái)?此項可歸結為WWW的問(wèn)題,(Who)誰(shuí)創(chuàng )建的?(When)什么時(shí)間創(chuàng )建的?(Why)為什么創(chuàng )建此配置項?
當前在哪里?此項紀錄配置項當前的存儲位置以及狀態(tài)。
將到哪里去?通過(guò)配置控制來(lái)把配置項“組裝”到正確的版本中去。
配置項可以是大粒度的,也可以是小粒度的。如果跟蹤個(gè)別需求,那么不必要把整個(gè)需求規格說(shuō)明文檔定義為一個(gè)配置項,可以把每個(gè)需求定義為配置項;如果把軟件開(kāi)發(fā)工具也放入配置管理系統,那么把配置項定義為文件級就不合適了,只需要跟蹤開(kāi)發(fā)工具的版本,即把整個(gè)配置工具定義為一個(gè)配置項就足夠了。
簡(jiǎn)而言之,配置項可以是文件級粒度的,也可以使文件版本級粒度的。當然,粒度越小管理的成本越高,但是配置的精度也就越高。
一個(gè)完整的SCM系統要具有三個(gè)核心功能:版本控制、變更控制、配置控制以及兩個(gè)支持功能:狀態(tài)統計和配置審計。
版本控制
版本,亦稱(chēng)配置標識,是指某一特定對象的具體實(shí)例的潛在存在。這里的某一特定對象是指版本維護工具管理的軟件組成單元,一般是指源文件;具體實(shí)例則是指軟件開(kāi)發(fā)人員從軟件庫中恢復出來(lái)的某軟件組成單元的具有一定內容和屬性的一個(gè)真實(shí)拷貝。例如,對源文件的每一次修改都生成一個(gè)新版本。
版本控制就是對在軟件開(kāi)發(fā)過(guò)程中所創(chuàng )建的配置對象的不同版本進(jìn)行管理,保證任何時(shí)候都能取到正確的版本以及版本的組合。
變更控制
變更控制是通過(guò)對變更請求(Change Request,簡(jiǎn)稱(chēng)CR)進(jìn)行分類(lèi)、追蹤和管理的過(guò)程來(lái)實(shí)現的。
變更的起源有兩種:功能變更和缺陷修補(Bug-Fix)。功能變更是為了增加或者刪除某些功能。缺陷修補則是對已存在的缺陷進(jìn)行修補。
對變更進(jìn)行控制的機構稱(chēng)為變更控制委員會(huì )(Change Control BOard,簡(jiǎn)稱(chēng)CCB)。變更控制委員會(huì )要定期召開(kāi)會(huì )議,對近期所產(chǎn)生的變更請求進(jìn)行分析、整理,并做出決定。而且要遵循一定的變更機制。
下面是一個(gè)典型的變更機制:

我們可以隨著(zhù)變更過(guò)程的推進(jìn),提升配置項的狀態(tài)。 這方面的工具有Bugzilla。
配置控制
配置控制使用戶(hù)能夠通過(guò)對適當版本的選擇來(lái)組成特定屬性(配置)的軟件系統,這種靈活的“組裝”策略使得配置管理系統象搭積木似的使用已有的積木(版本)組裝成各種各樣、不同功能的模型。
軟件產(chǎn)品的每個(gè)版本都是一組配置項(源代碼、文檔、數據)的集合。配置控制就是要保證每個(gè)配置的完整性和精確性。
舉個(gè)例子來(lái)說(shuō),我們要發(fā)布軟件的32.6版本,那么我們就要把源代碼、文檔、數據中所有這個(gè)應該包含到這個(gè)版本中的正確配置項檢出。
在開(kāi)發(fā)過(guò)程中,我們在不同階段要建立各種基線(xiàn)?;€(xiàn)的建立是配置控制功能的典型應用。所以說(shuō),基線(xiàn)是具有里程碑意義的一個(gè)配置。
一般的商業(yè)軟件配置管理工具都具有配置控制的功能,只是靈活性和精確性有差別。
狀態(tài)報告
狀態(tài)報告要回答所謂4W的問(wèn)題:
What:發(fā)生了什么事?
Who:誰(shuí)做的此事?
When:此事是什么時(shí)候發(fā)生的?
Why:為什么做此事?
狀態(tài)報告還要能夠報告所有配置項以及變更請求的狀態(tài)。
配置審計
配置審計要審查整個(gè)配置管理過(guò)程是否符合規范,配置項是否與需求一致,記錄正確,配置的組成是否具有一致性等等。
由于現在軟件行業(yè)越來(lái)越重視質(zhì)量,許多項目專(zhuān)門(mén)成立質(zhì)量保證部門(mén)專(zhuān)門(mén)來(lái)進(jìn)行配置審計。所以現在也可以說(shuō),配置審計是一個(gè)SQA(軟件質(zhì)量保證)活動(dòng)。
配置管理的商業(yè)模型
配置管理的實(shí)施包括兩部分:工具和規范。
在軟件開(kāi)發(fā)過(guò)程自動(dòng)化的今天,沒(méi)有工具的支持而實(shí)施配置完整的配置管理是不能想象的。因此選擇一個(gè)符合公司或項目的工具至關(guān)重要。在配置管理系統中,我們可歸納出四種模型。當前商業(yè)工具一般采用其中一種或幾種模型。
我們通過(guò)對商業(yè)模型的理解可以幫助我們了解某種工具是否適合我們公司或項目。
CICO模型
CICO模型主要關(guān)注的是單個(gè)文件的版本控制。圖顯示了一個(gè)支持CICO模型的CM系統的工作過(guò)程。用戶(hù)利用庫和文件系統來(lái)進(jìn)行工作。文件被版本化并存儲到庫中,新版本的產(chǎn)生是由庫工具控制的。然而, 文件在庫中不是可以直接存取的,用戶(hù)必須去檢出(即Check Out)一個(gè)文件的版本到工作空間中以便讀取它的內容。更改后的文件可以被檢入庫中(即Check in),產(chǎn)生文件的一個(gè)新版本。
此模型的代表工具是SCCS和CVS。

組織模型
組織模型由CICO模型自然導出,建立于構件版本圖的基礎之上,同時(shí)依賴(lài)于存儲庫和工作空間的概念,可以通過(guò)對構件加鎖進(jìn)行并發(fā)控制。組織模型的重點(diǎn)是在CM系統支撐下加強了對創(chuàng )建配置、對有關(guān)的歷史信息的管理和使用他們作為工作環(huán)境的支持。
組織模型中的配置由系統模型和版本選擇規則組成。系統模型列出了組成系統的所有的構件。版本選擇規則指出了組成配置的每一個(gè)構件選擇版本。選擇規則用于系統模型,選擇構件版本,即綁定一構件到某一版本。這個(gè)模型的操作方式是:開(kāi)發(fā)員根據模型的構件定義整個(gè)系統,并在每一步驟中給每個(gè)構件選擇合適的版本。版本操作的工作方式如圖所示。
CM支持主要關(guān)心的是維護系統和其構件的版本歷史,并選擇符合一致性配置的構件版本。只有在所選構件的版本與所選其它構件版本一致時(shí)才認為一個(gè)配置版本。
此模型的代表工具是CCC。
長(cháng)事務(wù)模型
長(cháng)事務(wù)模型主要支持包括一系列原子變更的全系統演變和由團隊開(kāi)發(fā)員對系統變更的協(xié)調。開(kāi)發(fā)員主要操作配置而非單獨的構件。事務(wù)提交的結果是新配置版本,一系列連續的變更結果生成一系列的配置版本,稱(chēng)為開(kāi)發(fā)路徑。
在長(cháng)事務(wù)模型中,開(kāi)發(fā)員主要的工作對象時(shí)配置,開(kāi)發(fā)員首先選擇系統配置版本,接下來(lái)把關(guān)注重點(diǎn)放在系統結構上。構件的版本由配置隱式?jīng)Q定。長(cháng)事務(wù)由兩個(gè)概念組成:工作空間和并發(fā)控制方案。工作空間來(lái)源于存儲庫或一個(gè)封閉工作空間中的一個(gè)固定配置。工作空間由工作配置和一系列已保存的配置組成。工作配置代表構件和系統結構能夠被動(dòng)態(tài)更改的配置。提供通過(guò)工作空間進(jìn)行的透明庫訪(fǎng)問(wèn)、將高效的庫存儲技術(shù)應用于工作空間和管理派生構件的版本。
此模型的代表系統是NSE。

變更集模型
主要集中于對系統配置的邏輯變更的支持。在這個(gè)模型中引入的變更集表示組成邏輯變更的對不同構件修改的集合,它是創(chuàng )建變更的活動(dòng)完成后對邏輯變更的記錄。支持這個(gè)模型的CM系統用戶(hù)可以直接操作變更集。在變更集模型中,配置可描述為由基線(xiàn)和一組變更集組成。
變更傳播給其它配置可通過(guò)包含各自變更集來(lái)進(jìn)行。開(kāi)發(fā)員使用不同的集成策略將邏輯變更集包含到一個(gè)新的系統發(fā)行中。這樣的好處非常明顯,例如,我們現在維護10個(gè)不同版本的產(chǎn)品,現在要對所有的版本修改一個(gè)缺陷(Bug)。如果相同的工具簡(jiǎn)單的重復10次顯然是不可接受的。而通過(guò)變更集把這個(gè)邏輯變更從一個(gè)版本自由的傳到另外一個(gè)版本。
開(kāi)發(fā)員可跟蹤邏輯變更和確定這些變更是否屬于特定配置。這種配置管理的方法,因為其將重點(diǎn)放于邏輯變更上,所以被稱(chēng)作面向變更的配置管理。它不同于現在的其他3種CM模型,因為其它3種CM模型使用的面向版本的方法把重點(diǎn)放在構件和配置版本上。
在單一構件的情況下,變更集是兩個(gè)文件版本之間區別的集合,通常指的是增量?jì)热?。對配置?lái)說(shuō),變更集就是兩個(gè)配置版本之間區別的集合。這組區別就是兩個(gè)配置版本間的修改構件增量集合,即變更構件集的增量。
面向變更的觀(guān)點(diǎn)不同于面向版本的觀(guān)點(diǎn)。這有兩點(diǎn)不同,一是邏輯變更的顯式表示允許對與單個(gè)構件和配置有關(guān)的變更集進(jìn)行跟蹤。二是引用單個(gè)變更集并有選擇地將它們納入配置管理中的這種能力提供了對系統演化管理的支持,這種演化是基于將邏輯變更傳播到維護的系統配置進(jìn)行的。
此模型的代表工具是UCM和SABLIME。

結束語(yǔ)
配置管理本身無(wú)論從理論和實(shí)踐都在不斷豐富和發(fā)展。例如,配置管理應用于“知識庫”的管理就產(chǎn)生了“內容管理”這一新的領(lǐng)域。配置管理提供的狀態(tài)報告和數據統計也為軟件度量提供了決策依據。配置管理為項目管理提供了各種監控項目進(jìn)展的視角,為項目經(jīng)理確切掌握項目進(jìn)程提供了保證。配置管理也為開(kāi)發(fā)人員提供了一個(gè)協(xié)作的平臺,在此平臺上,大家能夠更有效率的交流和協(xié)作??梢哉f(shuō),配置管理是軟件開(kāi)發(fā)的基石!
配置管理近年來(lái)在中國得到了極大的認可,可以毫不夸張的說(shuō),沒(méi)有配置管理,就談不上軟件開(kāi)發(fā),就談不上軟件質(zhì)量,就談不上軟件業(yè)的發(fā)展。隨著(zhù)軟件業(yè)規模的擴大,配置管理的實(shí)施不是要不要的問(wèn)題,而是什么時(shí)間、如何實(shí)施的問(wèn)題了。
參考文獻:
BaBIch, W.A., Software Configuration Management, AdDIson-Wesley, 1986.
Peter H. Feiler, Configuration Management Models in Commercial Environment, CMU/SEI-91-TR-7, 1991.4
聯(lián)系客服