配置管理(Configuration Management,CM)是通過(guò)技術(shù)或行政手段對(duì)軟件產(chǎn)品及其開(kāi)發(fā)過(guò)程和生命周期進(jìn)行控制、規(guī)范的一系列措施。配置管理的目標(biāo)是記錄軟件產(chǎn)品的演化過(guò)程,確保軟件開(kāi)發(fā)者在軟件生命周期中各個(gè)階段都能得到精確的產(chǎn)品配置。
配置管理過(guò)程是對(duì)處于不斷演化、完善過(guò)程中的軟件產(chǎn)品的管理過(guò)程。其最終目標(biāo)是實(shí)現(xiàn)軟件產(chǎn)品的完整性、一致性、可控性,使產(chǎn)品極大程度地與用戶(hù)需求相吻合。它通過(guò)控制、記錄、追蹤對(duì)軟件的修改和每個(gè)修改生成的軟件組成部件來(lái)實(shí)現(xiàn)對(duì)軟件產(chǎn)品的管理功能。
早在七十年代初期加利福利亞大學(xué)的Leon PrESser教授就撰寫(xiě)了一篇論文,提出控制變更和配置的概念,之后在1975年,他成立了一家名為SoftTOOl的公司,開(kāi)發(fā)了自己的配置管理工具:CCC,這也是最早的配置管理工具之一。之后,隨著軟件開(kāi)發(fā)規(guī)模的逐漸增大,越來(lái)越多的公司和團(tuán)隊(duì)意識(shí)到了軟件配置管理的重要性,而相應(yīng)的軟件配置管理工具也如雨后春筍一般,紛紛涌現(xiàn),比較有代表性的有:Marc Rochkind的SCCS(Source Code Control SySTem)和Walter Tichy的RCS(Revision control System),這兩種工具對(duì)日后的配置管理工具的發(fā)展做出了重大的貢獻(xiàn),目前絕大多數(shù)廣泛使用的配置管理工具基本上都是基于這兩者的設(shè)計(jì)思想和體系架構(gòu)。
一、配置管理在軟件開(kāi)發(fā)過(guò)程和項(xiàng)目管理過(guò)程中的作用
隨著軟件系統(tǒng)的日益復(fù)雜化和用戶(hù)需求、軟件更新的頻繁化,配置管理逐漸成為軟件生命周期中的重要控制過(guò)程,在軟件開(kāi)發(fā)過(guò)程中扮演著越來(lái)越來(lái)重要的角色。一個(gè)好的配置管理過(guò)程能覆蓋軟件開(kāi)發(fā)和維護(hù)的各個(gè)方面,同時(shí)對(duì)軟件開(kāi)過(guò)程的宏觀管理,即項(xiàng)目管理,也有重要的支持作用。良好的配置管理能使軟件開(kāi)發(fā)過(guò)程有更好的可預(yù)測(cè)性,使軟件系統(tǒng)具有可重復(fù)性,使用戶(hù)和主管部門(mén)用軟件質(zhì)量和開(kāi)發(fā)小組有更強(qiáng)的信心。
軟件配置管理的最終目標(biāo)是管理軟件產(chǎn)品。由于軟件產(chǎn)品是在用戶(hù)不斷變化的需求驅(qū)動(dòng)下不斷變化,為了保證對(duì)產(chǎn)品有效地進(jìn)行控制和追蹤,配置管理過(guò)程不能僅僅對(duì)靜態(tài)的、成形的產(chǎn)品進(jìn)行管理,而必須對(duì)動(dòng)態(tài)的、成長(zhǎng)的產(chǎn)品進(jìn)行管理。由此可見(jiàn),配置管理同軟件開(kāi)發(fā)過(guò)程緊密相關(guān)。配置管理必須緊扣軟件開(kāi)發(fā)過(guò)程的各個(gè)環(huán)節(jié):管理用戶(hù)所提出的需求,監(jiān)控其實(shí)施,確保用戶(hù)需求最終落實(shí)到產(chǎn)品的各個(gè)版本中去,并在產(chǎn)品發(fā)行和用戶(hù)支持等方面提供幫助,響應(yīng)用戶(hù)新的需求,推動(dòng)新的開(kāi)發(fā)周期。通過(guò)配置管理過(guò)程的控制,用戶(hù)對(duì)軟件產(chǎn)品的需求如同普通產(chǎn)品的訂單一樣,遵循一個(gè)嚴(yán)格的流程,經(jīng)過(guò)一條受控的生產(chǎn)流水線,最后形成產(chǎn)品,發(fā)售給相應(yīng)用戶(hù)。從另一個(gè)角度看,在產(chǎn)品開(kāi)發(fā)的不同階段通常有不同的任務(wù),由不同的角色擔(dān)當(dāng),各個(gè)角色職責(zé)明確,涇渭分明,但同時(shí)又前后銜接,相互協(xié)調(diào)。
好的配置管理過(guò)程有助于規(guī)范各個(gè)角色的行為,同時(shí)又為角色之間的任務(wù)傳遞提供無(wú)縫的接合,使整個(gè)開(kāi)發(fā)團(tuán)隊(duì)象一個(gè)交響樂(lè)隊(duì)一樣和諧而又錯(cuò)雜地行進(jìn)。正因?yàn)榕渲霉芾磉^(guò)程直接連接產(chǎn)品開(kāi)發(fā)過(guò)程、開(kāi)發(fā)人員和最終產(chǎn)品,這些都是項(xiàng)目主管人員所關(guān)注的重點(diǎn),因此配置管理系統(tǒng)在軟件項(xiàng)目管理中也起著重要。配置管理過(guò)程演化出的控制、報(bào)告功能可幫助項(xiàng)目經(jīng)理更好地了解項(xiàng)目的進(jìn)度、開(kāi)發(fā)人員的負(fù)荷、工作效率和產(chǎn)品質(zhì)量狀況、交付日期等信息。同時(shí)配置管理過(guò)程所規(guī)范的工作流程和明確的分工有利于管理者應(yīng)付開(kāi)發(fā)人員流動(dòng)的困境,使新的成員可以快速實(shí)現(xiàn)任務(wù)交接,盡量減少因人員流動(dòng)而造成的損失。
二、配置管理的功能
配置管理系統(tǒng)應(yīng)該具備以下主要功能:
并行開(kāi)發(fā)支持:因開(kāi)發(fā)和維護(hù)的原因,要求能夠?qū)崿F(xiàn)開(kāi)發(fā)人員同時(shí)在同一個(gè)軟件模塊上工作,同時(shí)對(duì)同一個(gè)代碼部分作不同的修改,即使是跨地域分布的開(kāi)發(fā)團(tuán)隊(duì)也能互不干擾,協(xié)同工作,而又不失去控制;
修訂版管理:跟蹤每一個(gè)變更的創(chuàng)造者、時(shí)間和原因,從而加快問(wèn)題和缺陷的確定 ;
版本控制:能夠簡(jiǎn)單、明確地重現(xiàn)軟件系統(tǒng)的任何一個(gè)歷史版本 ;
產(chǎn)品發(fā)布管理:管理、計(jì)劃軟件的變更,與軟件的發(fā)布計(jì)劃、預(yù)先定制好的生命周期或相關(guān)的質(zhì)量過(guò)程保持一致;項(xiàng)目經(jīng)理能夠隨時(shí)清晰地了解項(xiàng)目的狀態(tài) ;
建立管理:基于軟件存儲(chǔ)庫(kù)的版本控制功能,實(shí)現(xiàn)建立(build)過(guò)程自動(dòng)化 ;
過(guò)程控制:貫徹實(shí)施開(kāi)發(fā)規(guī)范,包括訪問(wèn)權(quán)限控制、開(kāi)發(fā)規(guī)則的實(shí)施等 ;
變更請(qǐng)求管理:跟蹤、管理開(kāi)發(fā)過(guò)程中出現(xiàn)的缺陷(DefECt)、功能增強(qiáng)請(qǐng)求(RFE)或任務(wù)(TASk),加強(qiáng)溝通和協(xié)作,能夠隨時(shí)了解變更的狀態(tài) ;
代碼共享:提供良好的存儲(chǔ)和訪問(wèn)機(jī)制,開(kāi)發(fā)人員可以共享各自的開(kāi)發(fā)資源 ;
三、配置管理的流程
圖17-1 配置管理流程圖
1、制定配置管理計(jì)劃
配置管理員制定《配置管理計(jì)劃》,主要內(nèi)容包括配置管理軟硬件資源、配置項(xiàng)計(jì)劃、基線計(jì)劃、交付計(jì)劃、備份計(jì)劃等。CCB審批該計(jì)劃。
2、配置庫(kù)管理
配置管理員為項(xiàng)目創(chuàng)建配置庫(kù),并給每個(gè)項(xiàng)目成員分配權(quán)限。各項(xiàng)目成員根據(jù)自己的權(quán)限操作配置庫(kù)。配置管理員定期維護(hù)配置庫(kù),例如清楚垃圾文件、備份配置庫(kù)等。
3、版本控制
在項(xiàng)目開(kāi)發(fā)過(guò)程中,絕大部分的配置項(xiàng)都要經(jīng)過(guò)多次的修改才能最終確定下來(lái)。對(duì)配置項(xiàng)的任何修改都將產(chǎn)生新的版本。由于我們不能保證新版本一定比老版本“好”,所以不能拋棄老版本。版本控制的目的是按照一定的規(guī)則保存配置項(xiàng)的所有版本,避免發(fā)生版本丟失或混淆等現(xiàn)象,并且可以快速準(zhǔn)確地查找到配置項(xiàng)的任何版本。
配置項(xiàng)的狀態(tài)有三種:“草稿”、“正式發(fā)布”和“正在修改”,本規(guī)程制定了配置項(xiàng)狀態(tài)變遷與版本號(hào)的規(guī)則。
4、變更控制
在項(xiàng)目開(kāi)發(fā)過(guò)程中,配置項(xiàng)發(fā)生變更幾乎是不可避免的。變更控制的目的就是為了防止配置項(xiàng)被隨意修改而導(dǎo)致混亂。
修改處于“草稿”狀態(tài)的配置項(xiàng)不算是“變更”,無(wú)需CCB的批準(zhǔn),修改者按照版本控制規(guī)則執(zhí)行即可。
當(dāng)配置項(xiàng)的狀態(tài)成為“正式發(fā)布”,或者被“凍結(jié)”后,此時(shí)任何人都不能隨意修改,必須依據(jù)“申請(qǐng)-審批-執(zhí)行變更-再評(píng)審-結(jié)束”的規(guī)則執(zhí)行。
5、配置審計(jì)
為了保證所有人員(包括項(xiàng)目成員、配置管理員和CCB)都遵守配置管理規(guī)范,質(zhì)量保證人員要定期審計(jì)配置管理工作。配置審計(jì)是一種“過(guò)程質(zhì)量檢查”活動(dòng),是質(zhì)量保證人員的工作職責(zé)之一。
四、配置管理的實(shí)施
實(shí)施配置管理系統(tǒng),一般的步驟和需要考慮的問(wèn)題如下:
規(guī)劃、調(diào)整網(wǎng)絡(luò)開(kāi)發(fā)環(huán)境
一個(gè)規(guī)劃良好的開(kāi)發(fā)環(huán)境,是實(shí)施配置管理系統(tǒng)的前提。在此階段我們要對(duì)配置管理系統(tǒng)做出規(guī)劃,主要考慮以下問(wèn)題:
* 網(wǎng)絡(luò)的帶寬、拓?fù)浣Y(jié)構(gòu)
*服務(wù)器的選擇、命名規(guī)范
*存儲(chǔ)區(qū)的定位
*開(kāi)發(fā)人員及組的命名規(guī)約等
設(shè)計(jì)配置管理庫(kù)
根據(jù)項(xiàng)目開(kāi)發(fā)的要求,設(shè)計(jì)開(kāi)發(fā)資源的存儲(chǔ)模式,良好的存儲(chǔ)模式有利于減輕管理上的負(fù)擔(dān),增強(qiáng)配置管理庫(kù)的訪問(wèn)性能,同時(shí)便于控制訪問(wèn)權(quán)限,保護(hù)軟件資產(chǎn)。
定義配置管理系統(tǒng)的角色
在此階段,我們需要確定與配置管理相關(guān)的所有角色,包括他們的相應(yīng)的活動(dòng)。在開(kāi)發(fā)過(guò)程中,一個(gè)開(kāi)發(fā)人員可能兼任多種角色,但一項(xiàng)任務(wù)在同一時(shí)刻只能由一個(gè)角色來(lái)執(zhí)行。
一般配置管理中的角色主要包括:
項(xiàng)目經(jīng)理:項(xiàng)目經(jīng)理在配置管理方面的職責(zé)是依靠配置管理員、系統(tǒng)管理員和系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)人員的幫助,制定項(xiàng)目的組織結(jié)構(gòu)和配置管理策略。這些工作包括:定制開(kāi)發(fā)子系統(tǒng),定制訪問(wèn)控制,制定常用策略,制定集成里程碑,以及進(jìn)行系統(tǒng)集成;
配置管理員:配置管理員的職責(zé)是根據(jù)項(xiàng)目經(jīng)理制定的開(kāi)發(fā)組織結(jié)構(gòu)和策略,實(shí)施、維護(hù)配置管理的環(huán)境。其主要職責(zé)如下:創(chuàng)建配置管理庫(kù),對(duì)存儲(chǔ)庫(kù)進(jìn)行日常備份和恢復(fù),維護(hù)配置管理環(huán)境,及管理配置管理相關(guān)的用戶(hù);
軟件開(kāi)發(fā)人員:軟件開(kāi)發(fā)人員依據(jù)項(xiàng)目的開(kāi)發(fā)和配置管理策略,創(chuàng)建、修改和測(cè)試開(kāi)發(fā)工件;
集成人員:對(duì)軟件進(jìn)行歸并,形成相應(yīng)的基線或發(fā)布版本 ;
QA人員:需要對(duì)軟件配置管理有較深的認(rèn)識(shí),其主要工作是跟蹤當(dāng)前項(xiàng)目的狀態(tài),測(cè)試,報(bào)告錯(cuò)誤,并驗(yàn)證其修復(fù)結(jié)果;
制定配置管理流程
這是配置管理實(shí)施的一個(gè)重要階段,其主要目的是根據(jù)項(xiàng)目開(kāi)發(fā)的需要,制定相應(yīng)的配置管理流程,以更好地支持開(kāi)發(fā),主要活動(dòng)包括:
定制并行開(kāi)發(fā)策略:合理的并行開(kāi)發(fā)策略應(yīng)該具有以下特點(diǎn):協(xié)調(diào)項(xiàng)目的復(fù)雜性和需求,統(tǒng)一創(chuàng)建分支類(lèi)型和元數(shù)據(jù),為開(kāi)發(fā)過(guò)程中的變更集成制定有效的規(guī)范,適時(shí)反映開(kāi)發(fā)過(guò)程中方法和需求的變化
發(fā)布版本管理:軟件開(kāi)發(fā)過(guò)程中的一個(gè)關(guān)鍵活動(dòng)是提取工件的相關(guān)版本,以形成軟件系統(tǒng)的階段版本或發(fā)布版本,我們一般將其稱(chēng)為穩(wěn)定基線。一個(gè)穩(wěn)定基線代表新開(kāi)發(fā)活動(dòng)的開(kāi)始,而一系列定制良好的活動(dòng)之后又會(huì)產(chǎn)生一個(gè)新的穩(wěn)定基線。有效地利用此項(xiàng)功能,在項(xiàng)目開(kāi)發(fā)過(guò)程中可以自始至終管理、跟蹤工件版本間的關(guān)聯(lián)。
相關(guān)人員的培訓(xùn)
一般來(lái)講,實(shí)施配置管理系統(tǒng),相關(guān)人員需要接受以下培訓(xùn):
管理員培訓(xùn):針對(duì)配置管理員,主要學(xué)習(xí)配置管理工具管理相關(guān)內(nèi)容
開(kāi)發(fā)人員培訓(xùn):針對(duì)開(kāi)發(fā)人員,主要學(xué)習(xí)配置管理工具與開(kāi)發(fā)相關(guān)的常用操作
管理流程培訓(xùn):針對(duì)全體人員,目的是了解配置管理策略和流程,以及如何與開(kāi)發(fā)管理、項(xiàng)目管理相結(jié)合
五、配置管理經(jīng)驗(yàn)談
圍繞配置管理,世界一些致力于軟件工程研究的公司在深入理解ISO 9000的基礎(chǔ)上, 推出了各種符合ISO 9000配置管理標(biāo)準(zhǔn)的工具軟件,如INTERSOLV公司的PVCS,Rational公司的Clear Case等。這些配置管理工具面向軟件規(guī)范化、工程化、自動(dòng)化的需要,幫助開(kāi)發(fā)團(tuán)隊(duì)提高科學(xué)管理水平,從而提高工程效率,降低工程成本。現(xiàn)以PVCS為例,結(jié)合我們的實(shí)際經(jīng)驗(yàn),談?wù)勎覀儗?shí)施配置管理的益處:
1. 節(jié)約費(fèi)用
(1) 縮短開(kāi)發(fā)周期
利用PVCS的Version Manager對(duì)程序資源進(jìn)行版本管理和跟蹤,建立公司的代碼知識(shí)庫(kù),保存開(kāi)發(fā)過(guò)程中每一過(guò)程版本,這樣大大提高了代碼的重用率,還便于同時(shí)維護(hù)多個(gè)版本和進(jìn)行新版本的開(kāi)發(fā),防止系統(tǒng)崩潰,最大限度地共享代碼。同時(shí)項(xiàng)目管理人員可以通過(guò)Version Manager查看項(xiàng)目開(kāi)發(fā)日志,測(cè)試人員可以根據(jù)開(kāi)發(fā)日志和不同版本對(duì)軟件進(jìn)行測(cè)試,工程人員可以從Version Manager上得到不同的運(yùn)行版本,并且Version Manager 可以安裝在Web Server供外地施工人員存取最新版本,無(wú)需開(kāi)發(fā)人員親臨現(xiàn)場(chǎng)。
利用Tracker組建開(kāi)發(fā)團(tuán)體之間的問(wèn)題跟蹤及消息通迅,通過(guò)其N(xiāo)otify模塊與電子郵件結(jié)合起來(lái)大大加強(qiáng)了開(kāi)發(fā)團(tuán)體之間的溝通,Reporter模塊可對(duì)發(fā)現(xiàn)的問(wèn)題進(jìn)行整理、以報(bào)表方式分類(lèi)報(bào)出,作為開(kāi)發(fā)的指導(dǎo)。
以上為PVCS的兩個(gè)主要模塊,科學(xué)地應(yīng)用可以大大提高開(kāi)發(fā)效率,避免了代碼覆蓋、溝通不夠、開(kāi)發(fā)無(wú)序的混亂局面,如果利用了公司原有的知識(shí)庫(kù),則更能提高工作效率,縮短開(kāi)發(fā)周期。
(2) 減少施工費(fèi)用
利用PVCS進(jìn)行軟件配置管理后,建立開(kāi)發(fā)管理規(guī)范,把版本管理檔案掛接在公司內(nèi)部的Web服務(wù)器上,內(nèi)部直接通過(guò)NetSCApe訪問(wèn)Version Manager,工程人員通過(guò)遠(yuǎn)程進(jìn)入內(nèi)部網(wǎng),獲取所需的最新版本。開(kāi)發(fā)人員無(wú)需下現(xiàn)場(chǎng),現(xiàn)場(chǎng)工程人員通過(guò)對(duì)方系統(tǒng)管理員收集反饋意見(jiàn),書(shū)面提交到公司內(nèi)部開(kāi)發(fā)組項(xiàng)目經(jīng)理,開(kāi)發(fā)組內(nèi)部討論決定是否修改,并作出書(shū)面答復(fù)。這樣做,可以同時(shí)響應(yīng)多個(gè)項(xiàng)目點(diǎn),防止開(kāi)發(fā)人員分配到各個(gè)項(xiàng)目點(diǎn)、分散力量、人員不夠的毛病,同時(shí)節(jié)約大量的旅差費(fèi)用。
2. 有利于知識(shí)庫(kù)的建立
(1) 代碼對(duì)象庫(kù)
軟件代碼是軟件開(kāi)發(fā)人員腦力勞動(dòng)的結(jié)晶,也是軟件公司的寶貴財(cái)富,長(zhǎng)期開(kāi)發(fā)過(guò)程中形成的各種代碼對(duì)象就像一個(gè)個(gè)零件坯一樣,是快速生成系統(tǒng)的組成部分。長(zhǎng)期的一個(gè)事實(shí)是:一旦某個(gè)開(kāi)發(fā)人員離開(kāi)工作崗位,其原來(lái)所作的代碼便基本成為垃圾,無(wú)人過(guò)問(wèn)。究其原因,就是沒(méi)有專(zhuān)門(mén)對(duì)各人的有用對(duì)象進(jìn)行管理,把其使用范圍擴(kuò)大到公司一級(jí),進(jìn)行規(guī)范化,加以說(shuō)明和普及。Version Manager為對(duì)象管理提供了一個(gè)平臺(tái)和倉(cāng)庫(kù),有利于建立公司級(jí)的代碼對(duì)象庫(kù)。
(2) 業(yè)務(wù)及經(jīng)驗(yàn)庫(kù)
通過(guò)PVCS Version Manager的注釋及Tracker,可形成完整的開(kāi)發(fā)日志及問(wèn)題集合,以文字方式伴隨開(kāi)發(fā)的整個(gè)過(guò)程,不依某個(gè)人的轉(zhuǎn)移而消失,有利于公司積累業(yè)務(wù)經(jīng)驗(yàn),無(wú)論對(duì)版本整改或版本升級(jí),都具有重要的指導(dǎo)作用。
3. 規(guī)范管理
(1) 量化工作量考核
傳統(tǒng)的開(kāi)發(fā)管理中,工作量一直是難以估量的指標(biāo),靠開(kāi)發(fā)人員自已把握,隨意性相當(dāng)大;靠管理人員把握,主觀性又太強(qiáng)。采用PVCS管理后,開(kāi)發(fā)人員每天下班前對(duì)修改的文件 Check In,其中記述當(dāng)天修改細(xì)節(jié)描述,這些描述可以作為工作量的衡量指標(biāo)。
(2) 規(guī)范測(cè)試
采用PVCS以后,測(cè)試有了實(shí)實(shí)在在的工作,測(cè)試工作人員根據(jù)每天的修改細(xì)節(jié)描述對(duì)每一天的工作做具體的測(cè)試,對(duì)測(cè)試人員也具有可考核性,這樣環(huán)環(huán)相扣,大大減少了其工作的隨意性。
(3) 加強(qiáng)協(xié)調(diào)與溝通
采用PVCS后,通過(guò)Version Manager文檔共享及其特定鎖機(jī)制、Tracker與電子郵件的集成,大大加強(qiáng)了項(xiàng)目成員之間的溝通,做到有問(wèn)題及時(shí)發(fā)現(xiàn)、及時(shí)修改、及時(shí)通知,但又不額外增加很多的工作量。
六、配置管理的精髓
具體來(lái)講,配置管理包含如下內(nèi)容:
標(biāo)識(shí):識(shí)別產(chǎn)品的結(jié)構(gòu)、產(chǎn)品的構(gòu)件及其類(lèi)型,為其分配唯一的標(biāo)識(shí)符,并以某種形式提供對(duì)它們的存取。
控制:通過(guò)一定的機(jī)制控制對(duì)配置項(xiàng)的修改
狀態(tài)報(bào)告:記錄并報(bào)告配置項(xiàng)以及元數(shù)據(jù)的狀態(tài)。
配置審計(jì):確認(rèn)產(chǎn)品的完整性并維護(hù)配置項(xiàng)間的一致性。
從上面的描述,我們知道,配置管理的基本單位是配置項(xiàng)。
從“哲學(xué)”意義上講,它記錄配置項(xiàng)的三個(gè)方面:
從哪里來(lái)?此項(xiàng)可歸結(jié)為WWW的問(wèn)題,(Who)誰(shuí)創(chuàng)建的?(When)什么時(shí)間創(chuàng)建的?(Why)為什么創(chuàng)建此配置項(xiàng)?
當(dāng)前在哪里?此項(xiàng)紀(jì)錄配置項(xiàng)當(dāng)前的存儲(chǔ)位置以及狀態(tài)。
將到哪里去?通過(guò)配置控制來(lái)把配置項(xiàng)“組裝”到正確的版本中去。
配置項(xiàng)可以是大粒度的,也可以是小粒度的。如果跟蹤個(gè)別需求,那么不必要把整個(gè)需求規(guī)格說(shuō)明文檔定義為一個(gè)配置項(xiàng),可以把每個(gè)需求定義為配置項(xiàng);如果把軟件開(kāi)發(fā)工具也放入配置管理系統(tǒng),那么把配置項(xiàng)定義為文件級(jí)就不合適了,只需要跟蹤開(kāi)發(fā)工具的版本,即把整個(gè)配置工具定義為一個(gè)配置項(xiàng)就足夠了。
簡(jiǎn)而言之,配置項(xiàng)可以是文件級(jí)粒度的,也可以使文件版本級(jí)粒度的。當(dāng)然,粒度越小管理的成本越高,但是配置的精度也就越高。
一個(gè)完整的SCM系統(tǒng)要具有三個(gè)核心功能:版本控制、變更控制、配置控制以及兩個(gè)支持功能:狀態(tài)統(tǒng)計(jì)和配置審計(jì)。
版本控制
版本,亦稱(chēng)配置標(biāo)識(shí),是指某一特定對(duì)象的具體實(shí)例的潛在存在。這里的某一特定對(duì)象是指版本維護(hù)工具管理的軟件組成單元,一般是指源文件;具體實(shí)例則是指軟件開(kāi)發(fā)人員從軟件庫(kù)中恢復(fù)出來(lái)的某軟件組成單元的具有一定內(nèi)容和屬性的一個(gè)真實(shí)拷貝。例如,對(duì)源文件的每一次修改都生成一個(gè)新版本。
版本控制就是對(duì)在軟件開(kāi)發(fā)過(guò)程中所創(chuàng)建的配置對(duì)象的不同版本進(jìn)行管理,保證任何時(shí)候都能取到正確的版本以及版本的組合。
變更控制
變更控制是通過(guò)對(duì)變更請(qǐng)求(Change Request,簡(jiǎn)稱(chēng)CR)進(jìn)行分類(lèi)、追蹤和管理的過(guò)程來(lái)實(shí)現(xiàn)的。
變更的起源有兩種:功能變更和缺陷修補(bǔ)(Bug-Fix)。功能變更是為了增加或者刪除某些功能。缺陷修補(bǔ)則是對(duì)已存在的缺陷進(jìn)行修補(bǔ)。
對(duì)變更進(jìn)行控制的機(jī)構(gòu)稱(chēng)為變更控制委員會(huì)(Change Control BOard,簡(jiǎn)稱(chēng)CCB)。變更控制委員會(huì)要定期召開(kāi)會(huì)議,對(duì)近期所產(chǎn)生的變更請(qǐng)求進(jìn)行分析、整理,并做出決定。而且要遵循一定的變更機(jī)制。
下面是一個(gè)典型的變更機(jī)制:
我們可以隨著變更過(guò)程的推進(jìn),提升配置項(xiàng)的狀態(tài)。 這方面的工具有Bugzilla。
配置控制
配置控制使用戶(hù)能夠通過(guò)對(duì)適當(dāng)版本的選擇來(lái)組成特定屬性(配置)的軟件系統(tǒng),這種靈活的“組裝”策略使得配置管理系統(tǒng)象搭積木似的使用已有的積木(版本)組裝成各種各樣、不同功能的模型。
軟件產(chǎn)品的每個(gè)版本都是一組配置項(xiàng)(源代碼、文檔、數(shù)據(jù))的集合。配置控制就是要保證每個(gè)配置的完整性和精確性。
舉個(gè)例子來(lái)說(shuō),我們要發(fā)布軟件的32.6版本,那么我們就要把源代碼、文檔、數(shù)據(jù)中所有這個(gè)應(yīng)該包含到這個(gè)版本中的正確配置項(xiàng)檢出。
在開(kāi)發(fā)過(guò)程中,我們?cè)诓煌A段要建立各種基線?;€的建立是配置控制功能的典型應(yīng)用。所以說(shuō),基線是具有里程碑意義的一個(gè)配置。
一般的商業(yè)軟件配置管理工具都具有配置控制的功能,只是靈活性和精確性有差別。
狀態(tài)報(bào)告
狀態(tài)報(bào)告要回答所謂4W的問(wèn)題:
What:發(fā)生了什么事?
Who:誰(shuí)做的此事?
When:此事是什么時(shí)候發(fā)生的?
Why:為什么做此事?
狀態(tài)報(bào)告還要能夠報(bào)告所有配置項(xiàng)以及變更請(qǐng)求的狀態(tài)。
配置審計(jì)
配置審計(jì)要審查整個(gè)配置管理過(guò)程是否符合規(guī)范,配置項(xiàng)是否與需求一致,記錄正確,配置的組成是否具有一致性等等。
由于現(xiàn)在軟件行業(yè)越來(lái)越重視質(zhì)量,許多項(xiàng)目專(zhuān)門(mén)成立質(zhì)量保證部門(mén)專(zhuān)門(mén)來(lái)進(jìn)行配置審計(jì)。所以現(xiàn)在也可以說(shuō),配置審計(jì)是一個(gè)SQA(軟件質(zhì)量保證)活動(dòng)。
配置管理的商業(yè)模型
配置管理的實(shí)施包括兩部分:工具和規(guī)范。
在軟件開(kāi)發(fā)過(guò)程自動(dòng)化的今天,沒(méi)有工具的支持而實(shí)施配置完整的配置管理是不能想象的。因此選擇一個(gè)符合公司或項(xiàng)目的工具至關(guān)重要。在配置管理系統(tǒng)中,我們可歸納出四種模型。當(dāng)前商業(yè)工具一般采用其中一種或幾種模型。
我們通過(guò)對(duì)商業(yè)模型的理解可以幫助我們了解某種工具是否適合我們公司或項(xiàng)目。
CICO模型
CICO模型主要關(guān)注的是單個(gè)文件的版本控制。圖顯示了一個(gè)支持CICO模型的CM系統(tǒng)的工作過(guò)程。用戶(hù)利用庫(kù)和文件系統(tǒng)來(lái)進(jìn)行工作。文件被版本化并存儲(chǔ)到庫(kù)中,新版本的產(chǎn)生是由庫(kù)工具控制的。然而, 文件在庫(kù)中不是可以直接存取的,用戶(hù)必須去檢出(即Check Out)一個(gè)文件的版本到工作空間中以便讀取它的內(nèi)容。更改后的文件可以被檢入庫(kù)中(即Check in),產(chǎn)生文件的一個(gè)新版本。
此模型的代表工具是SCCS和CVS。
組織模型
組織模型由CICO模型自然導(dǎo)出,建立于構(gòu)件版本圖的基礎(chǔ)之上,同時(shí)依賴(lài)于存儲(chǔ)庫(kù)和工作空間的概念,可以通過(guò)對(duì)構(gòu)件加鎖進(jìn)行并發(fā)控制。組織模型的重點(diǎn)是在CM系統(tǒng)支撐下加強(qiáng)了對(duì)創(chuàng)建配置、對(duì)有關(guān)的歷史信息的管理和使用他們作為工作環(huán)境的支持。
組織模型中的配置由系統(tǒng)模型和版本選擇規(guī)則組成。系統(tǒng)模型列出了組成系統(tǒng)的所有的構(gòu)件。版本選擇規(guī)則指出了組成配置的每一個(gè)構(gòu)件選擇版本。選擇規(guī)則用于系統(tǒng)模型,選擇構(gòu)件版本,即綁定一構(gòu)件到某一版本。這個(gè)模型的操作方式是:開(kāi)發(fā)員根據(jù)模型的構(gòu)件定義整個(gè)系統(tǒng),并在每一步驟中給每個(gè)構(gòu)件選擇合適的版本。版本操作的工作方式如圖所示。
CM支持主要關(guān)心的是維護(hù)系統(tǒng)和其構(gòu)件的版本歷史,并選擇符合一致性配置的構(gòu)件版本。只有在所選構(gòu)件的版本與所選其它構(gòu)件版本一致時(shí)才認(rèn)為一個(gè)配置版本。
此模型的代表工具是CCC。
長(zhǎng)事務(wù)模型
長(zhǎng)事務(wù)模型主要支持包括一系列原子變更的全系統(tǒng)演變和由團(tuán)隊(duì)開(kāi)發(fā)員對(duì)系統(tǒng)變更的協(xié)調(diào)。開(kāi)發(fā)員主要操作配置而非單獨(dú)的構(gòu)件。事務(wù)提交的結(jié)果是新配置版本,一系列連續(xù)的變更結(jié)果生成一系列的配置版本,稱(chēng)為開(kāi)發(fā)路徑。
在長(zhǎng)事務(wù)模型中,開(kāi)發(fā)員主要的工作對(duì)象時(shí)配置,開(kāi)發(fā)員首先選擇系統(tǒng)配置版本,接下來(lái)把關(guān)注重點(diǎn)放在系統(tǒng)結(jié)構(gòu)上。構(gòu)件的版本由配置隱式?jīng)Q定。長(zhǎng)事務(wù)由兩個(gè)概念組成:工作空間和并發(fā)控制方案。工作空間來(lái)源于存儲(chǔ)庫(kù)或一個(gè)封閉工作空間中的一個(gè)固定配置。工作空間由工作配置和一系列已保存的配置組成。工作配置代表構(gòu)件和系統(tǒng)結(jié)構(gòu)能夠被動(dòng)態(tài)更改的配置。提供通過(guò)工作空間進(jìn)行的透明庫(kù)訪問(wèn)、將高效的庫(kù)存儲(chǔ)技術(shù)應(yīng)用于工作空間和管理派生構(gòu)件的版本。
此模型的代表系統(tǒng)是NSE。
變更集模型
主要集中于對(duì)系統(tǒng)配置的邏輯變更的支持。在這個(gè)模型中引入的變更集表示組成邏輯變更的對(duì)不同構(gòu)件修改的集合,它是創(chuàng)建變更的活動(dòng)完成后對(duì)邏輯變更的記錄。支持這個(gè)模型的CM系統(tǒng)用戶(hù)可以直接操作變更集。在變更集模型中,配置可描述為由基線和一組變更集組成。
變更傳播給其它配置可通過(guò)包含各自變更集來(lái)進(jìn)行。開(kāi)發(fā)員使用不同的集成策略將邏輯變更集包含到一個(gè)新的系統(tǒng)發(fā)行中。這樣的好處非常明顯,例如,我們現(xiàn)在維護(hù)10個(gè)不同版本的產(chǎn)品,現(xiàn)在要對(duì)所有的版本修改一個(gè)缺陷(Bug)。如果相同的工具簡(jiǎn)單的重復(fù)10次顯然是不可接受的。而通過(guò)變更集把這個(gè)邏輯變更從一個(gè)版本自由的傳到另外一個(gè)版本。
開(kāi)發(fā)員可跟蹤邏輯變更和確定這些變更是否屬于特定配置。這種配置管理的方法,因?yàn)槠鋵⒅攸c(diǎn)放于邏輯變更上,所以被稱(chēng)作面向變更的配置管理。它不同于現(xiàn)在的其他3種CM模型,因?yàn)槠渌?種CM模型使用的面向版本的方法把重點(diǎn)放在構(gòu)件和配置版本上。
在單一構(gòu)件的情況下,變更集是兩個(gè)文件版本之間區(qū)別的集合,通常指的是增量?jī)?nèi)容。對(duì)配置來(lái)說(shuō),變更集就是兩個(gè)配置版本之間區(qū)別的集合。這組區(qū)別就是兩個(gè)配置版本間的修改構(gòu)件增量集合,即變更構(gòu)件集的增量。
面向變更的觀點(diǎn)不同于面向版本的觀點(diǎn)。這有兩點(diǎn)不同,一是邏輯變更的顯式表示允許對(duì)與單個(gè)構(gòu)件和配置有關(guān)的變更集進(jìn)行跟蹤。二是引用單個(gè)變更集并有選擇地將它們納入配置管理中的這種能力提供了對(duì)系統(tǒng)演化管理的支持,這種演化是基于將邏輯變更傳播到維護(hù)的系統(tǒng)配置進(jìn)行的。
此模型的代表工具是UCM和SABLIME。
結(jié)束語(yǔ)
配置管理本身無(wú)論從理論和實(shí)踐都在不斷豐富和發(fā)展。例如,配置管理應(yīng)用于“知識(shí)庫(kù)”的管理就產(chǎn)生了“內(nèi)容管理”這一新的領(lǐng)域。配置管理提供的狀態(tài)報(bào)告和數(shù)據(jù)統(tǒng)計(jì)也為軟件度量提供了決策依據(jù)。配置管理為項(xiàng)目管理提供了各種監(jiān)控項(xiàng)目進(jìn)展的視角,為項(xiàng)目經(jīng)理確切掌握項(xiàng)目進(jìn)程提供了保證。配置管理也為開(kāi)發(fā)人員提供了一個(gè)協(xié)作的平臺(tái),在此平臺(tái)上,大家能夠更有效率的交流和協(xié)作。可以說(shuō),配置管理是軟件開(kāi)發(fā)的基石!
配置管理近年來(lái)在中國(guó)得到了極大的認(rèn)可,可以毫不夸張的說(shuō),沒(méi)有配置管理,就談不上軟件開(kāi)發(fā),就談不上軟件質(zhì)量,就談不上軟件業(yè)的發(fā)展。隨著軟件業(yè)規(guī)模的擴(kuò)大,配置管理的實(shí)施不是要不要的問(wèn)題,而是什么時(shí)間、如何實(shí)施的問(wèn)題了。
參考文獻(xià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)系客服