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