軟件配置管理(SCM)是指通過執(zhí)行版本控制、變更控制的規(guī)程,以及使用合適的配置管理軟件,來保證所有配置項(xiàng)的完整性和可跟蹤性。配置管理是對(duì)工作成果的一種有效保護(hù)。 (Software configuration 管理學(xué) (SCM, or just plain CM) is an organizational framework — that is, a discipline — for managing the evolution of computer systems throughout all stages of systems development.)
簡介
SCM(Software Configuration Management,軟件配置管理)是一種標(biāo)識(shí)、組織和控制修改的技術(shù)。它應(yīng)用于整個(gè)軟件生存期。在軟件建立時(shí)會(huì)經(jīng)常產(chǎn)生變更,而變更加劇了項(xiàng)目中軟件人員之間的混亂。之所以產(chǎn)生混亂,是因?yàn)樵谶M(jìn)行變更前沒有仔細(xì)分析,或沒有進(jìn)行變更控制。因?yàn)樽兏谌魏螘r(shí)刻都可能發(fā)生,因此軟件配置管理活動(dòng)的目標(biāo)就是為了標(biāo)識(shí)變更,控制變更,確保變更正確地實(shí)現(xiàn),向其他有關(guān)的人報(bào)告變更。軟件配置管理是一組追蹤和控制活動(dòng),它們開始于軟件開發(fā)項(xiàng)目開始之時(shí),結(jié)束于軟件被淘汰之時(shí)。從某種角度講,SCM是一種標(biāo)識(shí)、組織和控制修改的技術(shù),目的是使錯(cuò)誤降為最小并最有效地提高生產(chǎn)效率。
軟件配置管理(Software Configuration Management,SCM)作為CMM2級(jí)的一個(gè)關(guān)鍵域(Key Practice Area,KPA),在整個(gè)軟件的開發(fā)活動(dòng)中占有很重要的位置。正如Pressman所說的:“軟件配置管理是貫穿于整個(gè)軟件過程中的保護(hù)性活動(dòng),它被設(shè)計(jì)來(1)標(biāo)識(shí)變化,(2)控制變化,(3)保證變化被適當(dāng)?shù)陌l(fā)現(xiàn),以及(4)向其他可能有興趣的人員報(bào)告變化。”所以,我們必須為軟件配置管理活動(dòng)設(shè)計(jì)一個(gè)能夠融合于現(xiàn)有的軟件開發(fā)流程的管理過程,甚至直接以這個(gè)軟件配置管理過程為框架,來再造組織的軟件開發(fā)流程。
原因
如果沒有軟件配置管理,最大的麻煩是工作成果無法回溯。為了避免成果被覆蓋,包括我自己在內(nèi)的很多人早期采用手工管理版本的方式,例如當(dāng)一個(gè)新版本產(chǎn)生時(shí)用當(dāng)時(shí)的日期來命名文件夾,然后再復(fù)制一下以后的修改在復(fù)制的文件夾內(nèi)進(jìn)行,這樣上一個(gè)版本就被保存下來了,周而復(fù)始不同的版本不會(huì)被覆蓋。雖然這種方式可以從某種程度上解決版本的回溯問題,但他存在的缺點(diǎn)是顯而易見的:第一點(diǎn)如果保留結(jié)果過于頻繁,將會(huì)導(dǎo)致產(chǎn)生大量的有著重復(fù)內(nèi)容的文件夾,龐大的物理空間,管理起來很麻煩;如果保留舊版本的時(shí)間間隔太長,可能產(chǎn)生某些有用的老程序無法回溯。第二容易產(chǎn)生版本的混亂,如果是團(tuán)隊(duì)開發(fā)軟件,這種簡單的方法更難解決問題的本質(zhì)了。
關(guān)鍵
配置管理的方法是成熟的,而且相應(yīng)的軟件工具也是成熟的,基本上不存在看不懂、不會(huì)用的問題。配置管理的執(zhí)行效果如何,完全是事在人為。妨礙配置管理的主要問題是人們嫌麻煩和僥幸心理作怪。
在沒出亂子的情況下,執(zhí)行版本控制看起來有些麻煩。每次修改工作的時(shí)候總是要Get Latest Version,接著Check Out,修改完后又要Check In,多做了三步。其實(shí)這三步加起來也就十幾秒鐘,而且不費(fèi)腦子,根本沒有添加多少麻煩,僅僅是個(gè)人感覺不爽而以。然而不執(zhí)行版本控制的話,萬一發(fā)生工作成果被覆蓋或丟失等問題,麻煩就大了。
規(guī)范
軟件研發(fā)和管理過程中會(huì)產(chǎn)生許許多多的工作成果,例如文檔、程序和數(shù)據(jù)等,他們都應(yīng)當(dāng)妥善地保管起來,以便查閱和修改。如果把所有文件一股腦的塞進(jìn)計(jì)算機(jī)里,那么使用起來很麻煩。
凡是納入配置管理范疇的工作成果統(tǒng)稱為配置項(xiàng),配置項(xiàng)主要有兩大類:一類是屬于產(chǎn)品的組成部分,例如需求文檔、設(shè)計(jì)文檔、源代碼、測試用例等等;另一類是在管理過程中產(chǎn)生的文檔,例如各種計(jì)劃、報(bào)告等。
每個(gè)配置項(xiàng)的主要屬性有名稱、標(biāo)識(shí)符、文件狀態(tài)、版本、作者、日期等。配置項(xiàng)及歷史紀(jì)錄反映了軟件的演化過程。
基線由一組配置項(xiàng)組成,這些配置項(xiàng)構(gòu)成了一個(gè)相對(duì)穩(wěn)定的邏輯實(shí)體。基線中的配置項(xiàng)被凍結(jié)后,不能再被任何人隨意更改。基線通常對(duì)應(yīng)于開發(fā)過程中的里程碑。通常將交付該客戶的基線稱為一個(gè)Release,為內(nèi)部開發(fā)用的基線稱為一個(gè)Build。
版本控制的目的是按照一定的規(guī)則保存配置項(xiàng)的所有版本,避免發(fā)生版本丟失或混亂等現(xiàn)象。配置項(xiàng)的狀態(tài)有三種:“草稿”、“正式發(fā)布”和“正在修改” 。
配置項(xiàng)的版本號(hào)與配置項(xiàng)的狀態(tài)緊密相關(guān):
(1)處于“草稿”狀態(tài)的配置項(xiàng)的版本號(hào)格式為:0.YZ
(2)處于“正式發(fā)布”狀態(tài)的配置項(xiàng)的版本號(hào)格式為:X.Y。
一般只是Y值遞增,當(dāng)Y值到達(dá)一定的范圍時(shí)X值才發(fā)生變化。
(3)處于“正在修改”狀態(tài)的配置項(xiàng)的版本號(hào)格式為:X.YZ。
一般只增大Z值,當(dāng)配置項(xiàng)修改完畢,狀態(tài)重新變成“正式發(fā)布”時(shí),將Z值變?yōu)?,增加X.Y值。
發(fā)展史
配置管理的概念源于美國空軍,為了規(guī)范設(shè)備的設(shè)計(jì)與制造,美國空軍1962年制定并發(fā)布了第一個(gè)配置管理的標(biāo)準(zhǔn)“AFSCM375-1,CM During the Development & Acquisition Phases”。
而軟件配置管理概念的提出則在20世紀(jì)60年代末70年代初。當(dāng)時(shí)加利福尼亞州大學(xué)圣巴巴拉分校的Leon Presser教授在承擔(dān)美國海軍的航空發(fā)動(dòng)機(jī)研制合同期間,撰寫了一篇名為“Change and Configuration Control”的論文,提出控制變更和配置的概念,這篇論文同時(shí)也是他在管理該項(xiàng)目(這個(gè)過程進(jìn)行過近一千四百萬次修改)的一個(gè)經(jīng)驗(yàn)總結(jié)。
Leon Presser在1975年成立了一家名為SoftTool的公司,開發(fā)了配置管理工具:Change and Configuration Control(CCC),這是最早的配置管理工具之一。
隨著軟件工程的發(fā)展,軟件配置管理越來越成熟,從最初的僅僅實(shí)現(xiàn)版本控制,發(fā)展到現(xiàn)在的提供工作空間管理、并行開發(fā)支持、過程管理、權(quán)限控制、變更管理等一系列全面的管理能力,已經(jīng)形成了一個(gè)完整的理論體系。同時(shí)在軟件配置管理的工具方面,也出現(xiàn)了大批的產(chǎn)品,如:最著名的ClearCase;開源產(chǎn)品CVS;入門級(jí)工具微軟 VSS;新秀Hansky Firefly。
在國外已經(jīng)有30多年歷史的軟件配置管理,但在國內(nèi)的發(fā)展卻是在21世紀(jì)這幾年的事。但是通過專家們的介紹,我們感受到,國內(nèi)的軟件配置管理已經(jīng)取得了迅速發(fā)展,并得到了軟件公司的普遍認(rèn)可。
基本目標(biāo)
軟件配置管理是在貫穿整個(gè)軟件生命周期中建立和維護(hù)項(xiàng)目產(chǎn)品的完整性。它的基本目標(biāo)包括:
目標(biāo) 1: 軟件配置管理的各項(xiàng)工作是有計(jì)劃進(jìn)行的。
目標(biāo) 2: 被選擇的項(xiàng)目產(chǎn)品得到識(shí)別,控制并且可以被相關(guān)人員獲取。
目標(biāo) 3: 已識(shí)別出的項(xiàng)目產(chǎn)品的更改得到控制。
目標(biāo) 4: 使相關(guān)組別和個(gè)人及時(shí)了解軟件基準(zhǔn)的狀態(tài)和內(nèi)容。
方針
為了達(dá)到上述目標(biāo),如下的方針應(yīng)該得到貫徹執(zhí)行:
技術(shù)部門經(jīng)理和具體項(xiàng)目主管應(yīng)該使用和遵循XSSC的OSSP中所描述的軟件配置管理的工作過程。
施行軟件配置管理的職責(zé)應(yīng)被明確分配。相關(guān)人員得到軟件配置管理方面的培訓(xùn)。
技術(shù)部門經(jīng)理和具體項(xiàng)目主管應(yīng)該明確他們在相關(guān)項(xiàng)目中所擔(dān)負(fù)的軟件配置管理方面的責(zé)任。
軟件配置管理工作應(yīng)該享有足夠的資金支持,這需要在客戶,技術(shù)部門經(jīng)理和具體項(xiàng)目主管之間協(xié)商。
軟件配置管理應(yīng)該實(shí)施于如下產(chǎn)品:對(duì)外交付的軟件產(chǎn)品,以及那些被選定的在項(xiàng)目中使用的支持類工具等。
軟件配置的整體性在整個(gè)項(xiàng)目生命周期中得到控制。
軟件質(zhì)量保證人員應(yīng)該定期審核各類軟件基準(zhǔn)以及軟件配置管理工作。
使軟件基準(zhǔn)的狀態(tài)和內(nèi)容能夠及時(shí)通知給相關(guān)組別和個(gè)人。
工具
現(xiàn)在常用的軟件配置管理工具主要分為三個(gè)級(jí)別:
Rational ClearCase,CA CCC/Havest
Merant PVCS
角色職責(zé)
對(duì)于任何一個(gè)管理流程來說,保證該流程正常運(yùn)轉(zhuǎn)的前提條件就是要有明確的角色、職責(zé)和權(quán)限的定義。特別是在引入了軟件配置管理的工具之后,比較理想的狀態(tài)就是:組織內(nèi)的所有人員按照不同的角色的要求、根據(jù)系統(tǒng)賦予的權(quán)限來執(zhí)行相應(yīng)的動(dòng)作。因此,在本文所介紹的這個(gè)軟件配置管理過程中主要涉及下列的角色和分工:
項(xiàng)目經(jīng)理(Project Manager,PM):
項(xiàng)目經(jīng)理是整個(gè)軟件研發(fā)活動(dòng)的負(fù)責(zé)人,他根據(jù)軟件配置控制委員會(huì)的建議批準(zhǔn)配置管理的各項(xiàng)活動(dòng)并控制它們的進(jìn)程。其具體職責(zé)為以下幾項(xiàng):
制定和修改項(xiàng)目的組織結(jié)構(gòu)和配置管理策略;批準(zhǔn)、發(fā)布配置管理計(jì)劃;決定項(xiàng)目起始基線和開發(fā)里程碑;接受并審閱配置控制委員會(huì)的報(bào)告。
配置控制委員會(huì)(Configuration Control Board,CCB):
負(fù)責(zé)指導(dǎo)和控制配置管理的各項(xiàng)具體活動(dòng)的進(jìn)行,為項(xiàng)目經(jīng)理的決策提供建議。其具體職責(zé)為以下幾項(xiàng):
定制開發(fā)子系統(tǒng);定制訪問控制;制定常用策略;建立、更改基線的設(shè)置,審核變更申請;根據(jù)配置管理員的報(bào)告決定相應(yīng)的對(duì)策。
配置管理員(Configuration Management Officer,CMO):
根據(jù)配置管理計(jì)劃執(zhí)行各項(xiàng)管理任務(wù),定期向CCB提交報(bào)告,并列席CCB的例會(huì)。其具體職責(zé)為以下幾項(xiàng):
軟件配置管理工具的日常管理與維護(hù);提交配置管理計(jì)劃;各配置項(xiàng)的管理與維護(hù);執(zhí)行版本控制和變更控制方案;完成配置審計(jì)并提交報(bào)告;對(duì)開發(fā)人員進(jìn)行相關(guān)的培訓(xùn);識(shí)別軟件開發(fā)過程中存在的問題并擬就解決方案。
系統(tǒng)集成員(System Integration Officer,SIO):
系統(tǒng)集成員負(fù)責(zé)生成和管理項(xiàng)目的內(nèi)部和外部發(fā)布版本,其具體職責(zé)為以下幾項(xiàng):
集成修改;構(gòu)建系統(tǒng);完成對(duì)版本的日常維護(hù);建立外部發(fā)布版本。
開發(fā)人員(Developer,DEV):
開發(fā)人員的職責(zé)就是根據(jù)組織內(nèi)確定的軟件配置管理計(jì)劃和相關(guān)規(guī)定,按照軟件配置管理工具的使用模型來完成開發(fā)任務(wù)。
過程描述
一個(gè)軟件研發(fā)項(xiàng)目一般可以劃分為三個(gè)階段:計(jì)劃階段、開發(fā)階段和維護(hù)階段。然而從軟件配置管理的角度來看,后兩個(gè)階段所涉及的活動(dòng)是一致,所以就把它們合二為一,成為“項(xiàng)目開發(fā)和維護(hù)”階段。
項(xiàng)目計(jì)劃階段
一個(gè)項(xiàng)目設(shè)立之初PM首先需要制定整個(gè)項(xiàng)目的計(jì)劃,它是項(xiàng)目研發(fā)工作的基礎(chǔ)。在有了總體研發(fā)計(jì)劃之后,軟件配置管理的活動(dòng)就可以展開了,因?yàn)槿绻辉陧?xiàng)目開始之初制定軟件配置管理計(jì)劃,那么軟件配置管理的許多關(guān)鍵活動(dòng)就無法及時(shí)有效的進(jìn)行,而它的直接后果就是造成了項(xiàng)目開發(fā)狀況的混亂并注定軟件配置管理活動(dòng)成為一種“救火”的行為。所以及時(shí)制定一份軟件配置管理計(jì)劃在一定程度上是項(xiàng)目成功的重要保證。
在軟件配置管理計(jì)劃的制定過程中,它的主要流程應(yīng)該是這樣的:
CCB根據(jù)項(xiàng)目的開發(fā)計(jì)劃確定各個(gè)里程碑和開發(fā)策略;
CMO根據(jù)CCB的規(guī)劃,制定詳細(xì)的配置管理計(jì)劃,交CCB審核;
CCB通過配置管理計(jì)劃后交項(xiàng)目經(jīng)理批準(zhǔn),發(fā)布實(shí)施。
項(xiàng)目開發(fā)維護(hù)階段
這一階段時(shí)項(xiàng)目研發(fā)的主要階段。在這一階段中,軟件配置管理活動(dòng)主要分為三個(gè)層面:(1)主要由CMO完成的管理和維護(hù)工作;(2)由SIO和DEV具體執(zhí)行軟件配置管理策略;(3)變更流程。這三個(gè)層面是彼此之間既獨(dú)立又互相聯(lián)系的有機(jī)的整體。
在這個(gè)軟件配置管理過程中,它的核心流程應(yīng)該是這樣的:(1)CCB設(shè)定研發(fā)活動(dòng)的初始基線;(2)CMO根據(jù)軟件配置管理規(guī)劃設(shè)立配置庫和工作空間,為執(zhí)行軟件配置管理就阿做好準(zhǔn)備;(3)開發(fā)人員按照統(tǒng)一的軟件配置管理策略,根據(jù)獲得的授權(quán)的資源進(jìn)行項(xiàng)目的研發(fā)工作;(4)SIO按照項(xiàng)目的進(jìn)度集成組內(nèi)開發(fā)人員的工作成果,并構(gòu)建系統(tǒng),推進(jìn)版本的演進(jìn);(5)CCB根據(jù)項(xiàng)目的進(jìn)展情況,審核各種變更請求,并適時(shí)的劃定新的基線,保證開發(fā)和維護(hù)工作有序的進(jìn)行。
這個(gè)流程就是如此循環(huán)往復(fù),直到項(xiàng)目的結(jié)束。
當(dāng)然,在上述的核心過程之外,還涉及其他一些相關(guān)的活動(dòng)和操作流程,下面按不同的角色分工予以列出:
各開發(fā)人員按照項(xiàng)目經(jīng)理發(fā)布的開發(fā)策略或模型進(jìn)行工作;
sio負(fù)責(zé)將各分項(xiàng)目的工作成果歸并至集成分支,供測試或發(fā)布;
SIO可向CCB提出設(shè)立基線的要求,經(jīng)批準(zhǔn)后由CMO執(zhí)行;
CMO定期向項(xiàng)目經(jīng)理和CCB提交審計(jì)報(bào)告,并在CCB例會(huì)中報(bào)告項(xiàng)目在軟件過程中可能存在的問題和改進(jìn)方案;
在基線生效后,一切對(duì)基線和基線之前的開發(fā)成果的變更必須經(jīng)CCB的批準(zhǔn);
CCB定期舉行例會(huì),根據(jù)成員所掌握的情況、CMO的報(bào)告和開發(fā)人員的請求,對(duì)配置管理計(jì)劃作出修改,并向項(xiàng)目經(jīng)理負(fù)責(zé)。
關(guān)鍵活動(dòng)
配置項(xiàng)識(shí)別
Pressman對(duì)于配置項(xiàng)(Software Configuration Item,SCI)識(shí)別給出了一個(gè)比較簡單的定義:“軟件過程的輸出信息可以分為三個(gè)主要類別:(1)計(jì)算機(jī)程序(源代碼和可執(zhí)行程序),(2)描述計(jì)算機(jī)程序的文檔(針對(duì)技術(shù)開發(fā)者和用戶),以及(3)數(shù)據(jù)(包含在程序內(nèi)部或外部)。這些項(xiàng)包含了所有在軟件過程中產(chǎn)生的信息,總稱為軟件配置項(xiàng)。”
由此可見,配置項(xiàng)的識(shí)別是配置管理活動(dòng)的基礎(chǔ),也是制定配置管理計(jì)劃的重要內(nèi)容。
軟件配置項(xiàng)分類軟件的開發(fā)過程是一個(gè)不斷變化著的過程,為了在不嚴(yán)重阻礙合理變化的情況下來控制變化,軟件配置管理引入了“基線(Base Line)”這一概念。IEEE對(duì)基線的定義是這樣的:“已經(jīng)正式通過復(fù)審核批準(zhǔn)的某規(guī)約或產(chǎn)品,它因此可作為進(jìn)一步開發(fā)的基礎(chǔ),并且只能通過正式的變化控制過程改變。”
所以,根據(jù)這個(gè)定義,我們在軟件的開發(fā)流程中把所有需加以控制的配置項(xiàng)分為基線配置項(xiàng)和非基線配置項(xiàng)兩類。
配置項(xiàng)的標(biāo)識(shí)和控制
所有配置項(xiàng)都都應(yīng)按照相關(guān)規(guī)定統(tǒng)一編號(hào),按照相應(yīng)的模板生成,并在文檔中的規(guī)定章節(jié)(部分)記錄對(duì)象的標(biāo)識(shí)信息。在引入軟件配置管理工具進(jìn)行管理后,這些配置項(xiàng)都應(yīng)以一定的目錄結(jié)構(gòu)保存在配置庫中。
所有配置項(xiàng)的操作權(quán)限應(yīng)由CMO嚴(yán)格管理,基本原則是:基線配置項(xiàng)向軟件開發(fā)人員開放讀取得權(quán)限;非基線配置項(xiàng)向PM、CCB及相關(guān)人員開放。
工作空間管理
在引入了軟件配置管理工具之后,所有開發(fā)人員都會(huì)被要求把工作成果存放到由軟件配置管理工具所管理的配置庫中去,或是直接工作在軟件配置管理工具提供的環(huán)境之下。所以為了讓每個(gè)開發(fā)人員和各個(gè)開發(fā)團(tuán)隊(duì)能更好的分工合作,同時(shí)又互不干擾,對(duì)工作空間的管理和維護(hù)也成為了軟件配置管理的一個(gè)重要的活動(dòng)。
一般來說,比較理想的情況是把整個(gè)配置庫視為一個(gè)統(tǒng)一的工作空間,然后再根據(jù)需要把它劃分為個(gè)人(私有)、團(tuán)隊(duì)(集成)和全組(公共)這三類工作空間(分支),從而更好的支持將來可能出現(xiàn)的并行開發(fā)的需求。
每個(gè)開發(fā)人員按照任務(wù)的要求,在不同的開發(fā)階段,工作在不同的工作空間上。當(dāng)然,由于選用的軟件配置管理工具的不同,在對(duì)于工作空間的配置和維護(hù)的實(shí)現(xiàn)上有比較大的差異,但對(duì)于CMO來說,這些工作是他的重要職責(zé),他必須根據(jù)各開發(fā)階段的實(shí)際情況來配置工作空間并定制相應(yīng)的版本選取規(guī)則,來保證開發(fā)活動(dòng)的正常運(yùn)作。在變更發(fā)生時(shí),應(yīng)及時(shí)做好基線的推進(jìn)。
版本控制
版本控制是軟件配置管理的核心功能。所有置于配置庫中的元素都應(yīng)自動(dòng)予以版本的標(biāo)識(shí),并保證版本命名的唯一性。版本在生成過程中,自動(dòng)依照設(shè)定的使用模型自動(dòng)分支、演進(jìn)。除了系統(tǒng)自動(dòng)記錄的版本信息以外,為了配合軟件開發(fā)流程的各個(gè)階段,我們還需要定義、收集一些元數(shù)據(jù)(Metadata)來記錄版本的輔助信息和規(guī)范開發(fā)流程,并為今后對(duì)軟件過程的度量做好準(zhǔn)備。當(dāng)然如果選用的工具支持的話,這些輔助數(shù)據(jù)將能直接統(tǒng)計(jì)出過程數(shù)據(jù),從而方便我們軟件過程改進(jìn)(Software Process Improvement,SPI)活動(dòng)的進(jìn)行。
對(duì)于配置庫中的各個(gè)基線控制項(xiàng),應(yīng)該根據(jù)其基線的位置和狀態(tài)來設(shè)置相應(yīng)的訪問權(quán)限。一般來說,對(duì)于基線版本之前的各個(gè)版本都應(yīng)處于被鎖定的狀態(tài),如需要對(duì)它們進(jìn)行變更,則應(yīng)按照變更控制的流程來進(jìn)行操作。
變更控制
在對(duì)SCI的描述中,我們引入了基線的概念。從IEEE對(duì)于基線的定義中我們可以發(fā)現(xiàn),基線是和變更控制緊密相連的。也就是說在對(duì)各個(gè)SCI做出了識(shí)別,并且利用工具對(duì)它們進(jìn)行了版本管理之后,如何保證它們在復(fù)雜多變得開發(fā)過程中真正的處于受控的狀態(tài),并在任何情況下都能迅速的恢復(fù)到任一歷史狀態(tài)就成為了軟件配置管理的另一重要任務(wù)。因此,變更控制就是通過結(jié)合人的規(guī)程和自動(dòng)化工具,以提供一個(gè)變化控制的機(jī)制。
變更管理的一般流程是:
A) (獲得)提出變更請求;
B) 由CCB審核并決定是否批準(zhǔn);
C) (被接受)修改請求分配人員為,提取SCI,進(jìn)行修改;
D) 復(fù)審變化;
E) 提交修改后的SCI;
F) 建立測試基線并測試;
G) 重建軟件的適當(dāng)版本;
H) 復(fù)審(審計(jì))所有SCI的變化;
I) 發(fā)布新版本。
在這樣的流程中,CMO通過軟件配置管理工具來進(jìn)行訪問控制和同步控制,而這兩種控制則是建立在前文所描述的版本控制和分支策略的基礎(chǔ)上的。
狀態(tài)報(bào)告
配置狀態(tài)報(bào)告就是根據(jù)配置項(xiàng)操作數(shù)據(jù)庫中的記錄來向管理者報(bào)告軟件開發(fā)活動(dòng)的進(jìn)展情況。這樣的報(bào)告應(yīng)該是定期進(jìn)行,并盡量通過CASE工具自動(dòng)生成,用數(shù)據(jù)庫中的客觀數(shù)據(jù)來真實(shí)的反映各配置項(xiàng)的情況。
配置狀態(tài)報(bào)告應(yīng)根據(jù)報(bào)告應(yīng)著重反映當(dāng)前基線配置項(xiàng)的狀態(tài),以作為對(duì)開發(fā)進(jìn)度報(bào)告的參照。同時(shí)也能從中根據(jù)開發(fā)人員對(duì)配置項(xiàng)的操作記錄來對(duì)開發(fā)團(tuán)隊(duì)的工作關(guān)系作一定的分析。
配置狀態(tài)報(bào)告應(yīng)該包括下列主要內(nèi)容:
A) 配置庫結(jié)構(gòu)和相關(guān)說明;
B) 開發(fā)起始基線的構(gòu)成;
C) 當(dāng)前基線位置及狀態(tài);
D) 各基線配置項(xiàng)集成分支的情況;
E) 各私有開發(fā)分支類型的分布情況;
F) 關(guān)鍵元素的版本演進(jìn)記錄;
G) 其它應(yīng)予報(bào)告的事項(xiàng)。
配置審計(jì)
配置審計(jì)的主要作用是作為變更控制的補(bǔ)充手段,來確保某一變更需求已被切實(shí)實(shí)現(xiàn)。在某些情況下,它被作為正式的技術(shù)復(fù)審的一部分,但當(dāng)軟件配置管理是一個(gè)正式的活動(dòng)時(shí),該活動(dòng)由SQA人員單獨(dú)執(zhí)行。
總之,軟件配置管理的對(duì)象是軟件研發(fā)活動(dòng)中的全部開發(fā)資產(chǎn)。所有這一切都應(yīng)作為配置項(xiàng)納入管理計(jì)劃統(tǒng)一進(jìn)行管理,從而能夠保證及時(shí)的對(duì)所有軟件開發(fā)資源進(jìn)行維護(hù)和集成。因此,軟件配置管理的主要任務(wù)也就歸結(jié)為以下幾條:(1)制定項(xiàng)目的配置計(jì)劃;(2)對(duì)配置項(xiàng)進(jìn)行標(biāo)識(shí);(3)對(duì)配置項(xiàng)進(jìn)行版本控制;(4)對(duì)配置項(xiàng)進(jìn)行變更控制;(5)定期進(jìn)行配置審計(jì);(6)向相關(guān)人員報(bào)告配置的狀態(tài)。
實(shí)施后的收益
國內(nèi)很多軟件企業(yè)已經(jīng)逐漸認(rèn)識(shí)到配置管理的重要性,都希望通過實(shí)施配置管理來提高軟件開發(fā)管理的水平,增強(qiáng)企業(yè)自身的競爭力,應(yīng)對(duì)市場的壓力。
具體而言,用戶可以在資金、管理水平和保護(hù)知識(shí)財(cái)富等方面得到切實(shí)收益。
節(jié)約用戶資金
Hansky配置管理系統(tǒng)的總體實(shí)施成本低;對(duì)硬件系統(tǒng)性能的要求低,可以跨平臺(tái)使用,節(jié)約了用戶的投資;安裝簡單,易于維護(hù),無需專職的系統(tǒng)管理員;功能簡潔、實(shí)用,易于學(xué)習(xí)和掌握,可以有效縮短配置管理系統(tǒng)投入實(shí)際使用的周期;良好的擴(kuò)展性和靈活的License管理方式,以及組件式的解決方案,使得我們的配置管理系統(tǒng)既支持小組模式的用戶,也能夠支持大規(guī)模團(tuán)隊(duì)的協(xié)同開發(fā)工作,并且能夠方便地進(jìn)行擴(kuò)展,用戶可以根據(jù)實(shí)際需要,靈活的配置,大大降低了降低初期投入的資金;具有前瞻性,保護(hù)用戶的投資。Hansky公司的軟件配置管理產(chǎn)品采用最新的技術(shù)(如純TCP/IP技術(shù)、JBoss技術(shù)、MS .NET的開發(fā)環(huán)境等)和全新的應(yīng)用模式(如三層結(jié)構(gòu)、B/S應(yīng)用結(jié)構(gòu)等),確保系統(tǒng)在較長的時(shí)間內(nèi)不會(huì)落后于同類產(chǎn)品或不需要技術(shù)上的更新;自帶存儲(chǔ)庫增量備份/恢復(fù)功能,節(jié)約用戶在備份方面的支出。
縮短產(chǎn)品開發(fā)周期
利用Hansky的Firefly系統(tǒng)對(duì)開發(fā)資源進(jìn)行版本管理和跟蹤,可以建立公司級(jí)的代碼知識(shí)庫,保存開發(fā)過程中的所有歷史版本,這樣大大提高了代碼的復(fù)用率,還便于同時(shí)維護(hù)多個(gè)版本和進(jìn)行新版本的開發(fā),最大限度地共享代碼。利用Butterfly組建開發(fā)團(tuán)體之間的問題跟蹤及消息通訊機(jī)制,通過與電子郵件系統(tǒng)的結(jié)合大大增強(qiáng)了開發(fā)團(tuán)體之間的溝通能力,通過豐富的報(bào)表功能可對(duì)發(fā)現(xiàn)的問題進(jìn)行整理、以報(bào)表方式分類報(bào)出,作為開發(fā)的指導(dǎo)。通過使用Hansky的配置管理套件可以提高開發(fā)效率和產(chǎn)品質(zhì)量,避免了代碼覆蓋、溝通不夠、開發(fā)無序的混亂局面,大大縮短了產(chǎn)品的開發(fā)周期。
降低產(chǎn)品部署費(fèi)用
使用Hansky的軟件配置管理解決方案后,用戶可以在Hansky技術(shù)專家的幫助下建立規(guī)范的配置管理流程,所有的軟件產(chǎn)品將得到統(tǒng)一有效的管理。借助Firefly和Butterfly,工程人員可以通過訪問服務(wù)器直接獲取所需的最新版本,查找公司的知識(shí)庫,提交變更請求,收集用戶的反饋意見。開發(fā)人員無需到現(xiàn)場即可再現(xiàn)用戶環(huán)境,集中解決問題,發(fā)布補(bǔ)丁。這樣可以同時(shí)響應(yīng)多個(gè)地點(diǎn)的項(xiàng)目,防止開發(fā)人員分配到各個(gè)項(xiàng)目點(diǎn)、力量分散、人員不夠的弊端,同時(shí)節(jié)約大量的旅差費(fèi)用。
提高開發(fā)管理水平
(1) 改進(jìn)用戶的開發(fā)工作模式
使用Hansky的配置管理解決方案,可以有效地改進(jìn)用戶的軟件開發(fā)模式和過程,提高企業(yè)軟件能力成熟度的級(jí)別。
借助Firefly和Butterfly,用戶可以:
有效的管理工作空間,各個(gè)成員的具有獨(dú)立的工作空間,并能記錄其變更集和整個(gè)生命周期中的完整變更歷史;
簡便建立分支,支持分支之間的比較與合并,歸并,管理基線;
支持并行開發(fā)模式,提高開發(fā)效率;
支持異地開發(fā),F(xiàn)irefly通過自動(dòng)或手動(dòng)同步不同開發(fā)地點(diǎn)的的存儲(chǔ)庫,為地理分布的開發(fā)團(tuán)隊(duì)提供很好的支持;
集成變更請求管理與項(xiàng)目生存周期中的變更記錄與追蹤,優(yōu)化測試流程;
完善的發(fā)布管理,可以方便的回溯任意版本,為不同的用戶定制應(yīng)用程序的版本,促進(jìn)系統(tǒng)的快速部署,提供發(fā)布版本內(nèi)容的審計(jì)能力;
支持變更集和原子事務(wù),確保變更的一致性;
支持離線的版本管理,幫助用戶記錄項(xiàng)目證明周期內(nèi)的完整歷史;
內(nèi)置Defect、RFE、Task(問題、建議、任務(wù))工作流,符合正規(guī)軟件公司的軟件開發(fā)流程。科學(xué)的工作流系統(tǒng)可以使公司人員工作起來得心應(yīng)手,有條不紊,從而大大提高工作效率。
(2) 加強(qiáng)項(xiàng)目管理能力
通過瀏覽器,項(xiàng)目負(fù)責(zé)人可以方便地查看項(xiàng)目進(jìn)展情況以及員工工作情況;
利用Web界面即可實(shí)現(xiàn)代碼復(fù)查和項(xiàng)目狀態(tài)復(fù)查;
豐富的圖表、報(bào)告功能,可以自動(dòng)生成變更統(tǒng)計(jì)報(bào)告、配置審計(jì)報(bào)告,支持過程管理與進(jìn)度分析,能夠幫助管理者進(jìn)行決策。
(3) 量化工作量考核
傳統(tǒng)的開發(fā)管理中,工作量一直是難以估量的指標(biāo)。靠開發(fā)人員自己把握,隨意性過大;靠管理人員把握,主觀性又太強(qiáng)。采用Firefly和Butterfly管理后,系統(tǒng)能夠客觀的記錄員工的工作內(nèi)容和質(zhì)量,可以作為工作量的衡量指標(biāo)。
(4) 規(guī)范測試流程
Butterfly和Firefly集成后,可以有效地跟蹤和處理軟件的變更,完整地記錄測試人員的工作內(nèi)容,測試有了實(shí)實(shí)在在的工作,測試人員根據(jù)修改描述細(xì)節(jié)對(duì)每一天的工作做具體的測試。對(duì)測試人員也具有相應(yīng)的可考核性,這樣環(huán)環(huán)相扣,有效地增強(qiáng)了對(duì)測試的管理。
(5) 加強(qiáng)協(xié)調(diào)與溝通,增加團(tuán)隊(duì)競爭力
使用Firefly保存公司的所有知識(shí)財(cái)富、利用Butterfly的FAQ、檢索以及Email自動(dòng)通知功能,有效地加強(qiáng)了項(xiàng)目成員之間的溝通,做到有問題及時(shí)發(fā)現(xiàn)、及時(shí)修改、及時(shí)通知,卻又不會(huì)額外增加很多的工作量,大大提高了開發(fā)團(tuán)隊(duì)的協(xié)同工作效率。
保護(hù)知識(shí)財(cái)富
從整個(gè)企業(yè)的發(fā)展戰(zhàn)略來說,如何在技術(shù)日新月異、人員流動(dòng)頻繁的情況下,本公司的知識(shí)庫及經(jīng)驗(yàn)庫,把個(gè)人的知識(shí)及經(jīng)驗(yàn)轉(zhuǎn)變?yōu)楣镜闹R(shí)和經(jīng)驗(yàn),這對(duì)于提高工作效率、縮短產(chǎn)品周期以及提高公司的競爭力都具有至關(guān)重要的作用。采用科學(xué)的配置管理思想,輔之以先進(jìn)的配置管理工具,可以幫助用戶在內(nèi)部建立完善的知識(shí)管理體系。
(1) 代碼對(duì)象庫
軟件代碼是軟件開發(fā)人員腦力勞動(dòng)的結(jié)晶,也是軟件公司的寶貴財(cái)富,長期開發(fā)過程中形成的各種代碼對(duì)象就像一個(gè)個(gè)零件一樣,是快速生成系統(tǒng)的組成部分。然而長期以來的一個(gè)事實(shí)是:一旦某個(gè)開發(fā)人員離開工作崗位,其原來所編寫的代碼便基本成為垃圾,無人過問;或者由于文檔不全,無從考究。究其原因,就是沒有專門對(duì)每個(gè)開發(fā)人員的代碼、組件和文檔進(jìn)行科學(xué)的管理,將其應(yīng)用范圍擴(kuò)大到公司一級(jí),進(jìn)行規(guī)范化,加以說明和普及。Firefly為代碼管理提供了一個(gè)平臺(tái)和倉庫,有利于建立公司級(jí)的代碼對(duì)象庫,增進(jìn)代碼復(fù)用,提高開發(fā)重用率和軟件質(zhì)量。
(2) 業(yè)務(wù)及經(jīng)驗(yàn)庫
通過Firefly和Butterfly,可自動(dòng)生成完整的開發(fā)日志及問題集合,用文字記錄開發(fā)的整個(gè)過程,不會(huì)因某人的流動(dòng)而消失,有利于公司積累業(yè)務(wù)經(jīng)驗(yàn),無論對(duì)軟件維護(hù)或版本升級(jí),都具有重要的指導(dǎo)作用。此外,利用Butterfly內(nèi)建的FAQ模塊,可以建立檢索方便的經(jīng)驗(yàn)庫,傳播和共享集體的智慧。
(3) 安全性和可靠性
由于配置管理系統(tǒng)集中存儲(chǔ)了企業(yè)的重要知識(shí)財(cái)富,因此對(duì)其安全性和可靠性有極高的要求。Firefly可以對(duì)所有存儲(chǔ)的文件進(jìn)行冗余校驗(yàn),使用MD5作為文件的校驗(yàn)和,并提供備份和恢復(fù)工具,確保了數(shù)據(jù)的可靠性。同時(shí)Firefly支持用戶身份驗(yàn)證和訪問控制,支持用戶組,便于權(quán)限設(shè)置。訪問控制可以針對(duì)分支、目錄,甚至單個(gè)文件設(shè)置,采用類似Windows NTFS的權(quán)限管理方式,既靈活又安全。這些措施使得企業(yè)的知識(shí)財(cái)富得到了安全可靠的存儲(chǔ)和保護(hù)。
另外,由于Hansky的產(chǎn)品采用了三層結(jié)構(gòu)設(shè)計(jì),其存儲(chǔ)庫完全不依賴于網(wǎng)絡(luò)文件體統(tǒng),無需共享存儲(chǔ)目錄,能夠有效防止病毒攻擊所導(dǎo)致的存儲(chǔ)庫癱瘓或損壞,同時(shí)杜絕網(wǎng)絡(luò)非法訪問。
參考資料 >