每一個軟件項目,無論是工程類項目,還是產(chǎn)品類項目,都必須經(jīng)歷需求分析、系統(tǒng)設(shè)計、編碼實現(xiàn)、集成測試、部署、交付、維護和支持的過程。在這個過程中,將生成各種各樣不同的工件,包括文檔、源程序、可執(zhí)行代碼、支持庫。更可怕的是,頻繁出現(xiàn)的變更是不可避免的,因此面向如此龐大且不斷變動的信息集,如何使其有序、高效地存放、查找和利用就成為了一個突出的問題。
針對這一問題,最早的開發(fā)人員嘗試過的解決辦法是通過手工來實現(xiàn):
1)文檔:每次修改時都另存為一個新的文件,然后通過文件名進行區(qū)分,例如"XXX 軟件需求說明書V1.0,XXX軟件需求說明書V1.1,XXX 軟件需求說明書V2.0.",并且在文件中注明每次版本變化的內(nèi)容;
2) 源代碼:每次要修改時就將整個工程目錄復(fù)制一份,將原來的文件夾進行改名,例如"XX 項目V1.0、XX 項目1.01、.",然后在新的目錄中進行修改;
但是這種方法,不僅十分繁瑣,容易出錯,而且會帶來大量的垃圾數(shù)據(jù)。如果是團隊協(xié)同開發(fā)或者是項目規(guī)模較大時,還是會造成很大的混亂。很顯然,這樣簡陋的方法是無法應(yīng)對這一問題的。
后來,有人嘗試從制造工業(yè)領(lǐng)域引入了"配置管理"這一概念,通過不懈的研究與實踐,最終形成了一套管理辦法和活動原則,這也就是軟件配置管理。
通過軟件配置管理,將對軟件系統(tǒng)中的多重版本實施系統(tǒng)的管理;全面記載系統(tǒng)開發(fā)的歷史過程,包括為什么修改,誰作了修改,修改了什么;管理和追蹤開發(fā)過程中危害軟件質(zhì)量以及影響開發(fā)周期的缺陷和變化。并對開發(fā)過程進行有效地管理和控制,完整、明確地記載開發(fā)過程中的歷史變更,形成規(guī)范化的文檔,不僅使日后的維護和升級得到保證,而且更重要的是,這還會保護寶貴的代碼資源,積累軟件財富,提高軟件重用率,加快投資回報。
常見的配置管理工具
正如前面所述,由于軟件配置管理過程十分繁雜,管理對象錯綜復(fù)雜,如果是采用人工的辦法不僅費時費力,還容易出錯,產(chǎn)生大量的廢品。因此,引入一些自動化工具是十分有裨益的,這也是做好配置管理的必要條件。
正是因為如此,市場上出現(xiàn)了大量的自動化配置管理工具,這些工具的實現(xiàn)原理與基本機制均十分接近,但由于其定位不同,因此各有特點,下面我們就對一些常見的配置管理工具做一簡單的介紹。
元老:CCC、SCCS、RCS
上個世紀七十年代初期加利福利亞大學的Leon Presser教授撰寫了一篇論文,提出控制變更和配置的概念,之后在1975年,他成立了一家名為SoftTool的公司,開發(fā)了自己的配置管理工具:CCC,這也是最早的配置管理工具之一。
在軟件配置管理工具發(fā)展史上,繼CCC之后,最具有里程碑式的是兩個自由軟件:Marc Rochkind 的SCCS (Source Code Control System) 和Walter Tichy 的RCS (Revision Control System),它們對配置管理工具的發(fā)展做出了重大的貢獻,直到現(xiàn)在絕大多數(shù)配置管理工具基本上都源于它們的設(shè)計思想和體系架構(gòu)?! ?
中堅:Rational ClearCase
Rational 公司是全球最大的軟件CASE 工具提供商,現(xiàn)已被IBM收購。也許是受到其拳頭產(chǎn)品、可視化建模第一工具Rose 的影響,它開發(fā)的配置管理工具ClearCase 也是深受用戶的喜愛,是現(xiàn)在應(yīng)用面最廣的企業(yè)級、跨平臺的配置管理工具之一。
ClearCase提供了比較全面的配置管理支持,其中包括版本控制、工作空間管理、Build管理等,而且開發(fā)人員無需針對其改變現(xiàn)有的環(huán)境、工具和工作方式。
其最大的缺點就在于其價格不菲,每個客戶端用戶許可證大約需要幾千美金,所以在國內(nèi)應(yīng)用群體有限。
1) 版本控制
ClearCase不僅可以對文件、目錄、鏈接進行版本控制,同時還提供了先進的版本分支和歸本功能用于支持并行開發(fā)。另外,它還支持廣泛的文件類型。
2)工作空間管理
可以為開發(fā)人員提供私人存儲區(qū),同時可以實現(xiàn)成員之間的信息共享,從而為每一位開發(fā)人員提供一致、靈活、可重用的工作空間域。
3) Build管理
對ClearCase 控制的數(shù)據(jù),既可以使用定制腳本,也可使用本機提供的make 程序。
其最大的缺點就在于其價格不菲,每個客戶端用戶許可證大約需要幾千美金,所以在國內(nèi)應(yīng)用群體有限?!?
新秀:Hansky Firefly
做為H a n s k y 公司軟件開發(fā)管理套件中重要一員的Firefly,可以輕松管理、維護整個企業(yè)的軟件資產(chǎn),包括程序代碼和相關(guān)文檔。Firefly是一個功能完善、運行速度極快的軟件配置管理系統(tǒng),可以支持不同的操作系統(tǒng)和多種集成開發(fā)環(huán)境,因此它能在整個企業(yè)中的不同團隊,不同項目中得以應(yīng)用。
Firefly基于真正的客戶機/服務(wù)器體系結(jié)構(gòu),不依賴于任何特殊的網(wǎng)絡(luò)文件系統(tǒng),可以平滑地運行在不同的LAN、WAN 環(huán)境中。它的安裝配置過程簡單易用,F(xiàn)irefly 可以自動、安全地保存代碼的每一次變化內(nèi)容,避免代碼被無意中覆蓋、修改。項目管理人員使用Firefly可以有效地組織開發(fā)力量進行并行開發(fā)和管理項目中各階段點的各種資源,使得產(chǎn)品發(fā)布易于管理;并可以快速地回溯到任一歷史版本。系統(tǒng)管理員使用Firefly的內(nèi)置工具可以方便的進行存儲庫的備份和恢復(fù),而不依賴于任何第三方工具?! ?br> 開源奇葩:CVS
CVS 是Concurrent Versions System 的縮寫,它是開放源代碼軟件世界的一個偉大杰作,由于其簡單易用、功能強大,跨平臺,支持并發(fā)版本控制,而且免費,它在全球中小型軟件企業(yè)中得到了廣泛使用。
其最大的遺憾就是缺少相應(yīng)的技術(shù)支持,許多問題的解決需要自已尋找資料,甚至是讀源代碼。
小工作組級:Merant PVCS
MERANT 公司的PVCS 能夠提供對軟件配置管理的基本支持,通過使用其圖形界面或類似SCCS 的命令,能夠基本滿足小型項目開發(fā)的配置管理需求。PVCS 雖然功能上也基本能夠滿足需求,但是其性能表現(xiàn)一直較差,逐漸地被市場所冷落。
入門級:Microsoft Visual Source Safe
Visual Source Safe,即VSS,是微軟公司為Visual Studio配套開發(fā)的一個小型的配置管理工具,準確來說,它僅能夠稱得上是一個小型的版本控制軟件。VSS的優(yōu)點在于其與Visual Studio實現(xiàn)了無縫集成,使用簡單。提供了歷史版本記錄、修改控制、文件比較、日志等基本功能。
但其缺點也是十分明顯的,只支持Windows平臺,不支持并行開發(fā),通過Check out - Modify - Check in的管理方式,一個時間只允許一個人修改代碼,而且速度慢、伸縮性差,不支持異地開發(fā)。甚至于微軟本身也不采用其做為配置管理工具,而是使用一個名為SLM 的內(nèi)部工具。
如何選擇配置管理工具
面對這些形形色色,各有千秋的配置管理工具,如何根據(jù)組織特點、開發(fā)團隊需要,選擇切合適用的工具呢?筆者就結(jié)合工作實踐中的經(jīng)驗與大家做一些交流與探討。
配置管理工具的選擇所需考慮的因素大體包括以下幾個因素:
功能是否符合實際需求?是否符合團隊特點?性能是否滿意?費用是否可以接受?售后服務(wù)如何?接下來,我們就這幾方面逐一深入地探討:
1)功能是否符合實際需求,是否符合團隊特點
工具就是用來幫助您解決問題的,因此功能是否符合實際需求是最重要的判斷因素。而大多數(shù)主流配置管理工具的基本功能都能夠滿足,因此主要需要判斷以下幾個因素:
并行開發(fā)支持
在團隊協(xié)作開發(fā)過程中,有兩種主要的模式:集體代碼權(quán)和個體代碼權(quán)。采用集體代碼權(quán)模式進行開發(fā)時,一段代碼可能同時會被多個開發(fā)人員同時修改;而采用個體代碼權(quán)模式進行開發(fā)時,每一段代碼都始終被一個開發(fā)人員獨享,別人需要修改時也會通過該開發(fā)人員完成。
而配置管理軟件針對這一情況,也采用了不同的策略:Copy-Modify-Merge(拷貝、修改、合并) 的并行開發(fā)模式、Check out-Modify-Check in(簽出、修改、簽入)的獨占開發(fā)模式。在并行開發(fā)模式下,開發(fā)人員可以并行開發(fā)、更改代碼,F(xiàn)irefly會自動檢測到代碼沖突,并自動合并,或提示開發(fā)人員手動解決。
表一、并行開發(fā)支持比較表
工具名稱
|
說明
|
ClearCase
|
Copy-Modify-Merge 模式
|
Firefly
|
Copy-Modify-Merge 模式
|
CVS
|
Copy-Modify-Merge 模式
|
PVCS
|
Check out-Modify-Check in 模式
|
VSS
|
Check out-Modify-Check in 模式
|
異地開發(fā)支持 如果你的開發(fā)團隊分布在不同的開發(fā)地點,就需要對工具的異地開發(fā)功能進行仔細的評估了。大多數(shù)工具都提供基于Web的界面,用戶可以通過瀏覽器執(zhí)行配置管理的相關(guān)操作,而且有些工具就通過這樣的方法來實現(xiàn)對異地開發(fā)的支持。
這種實現(xiàn)方法有太多的局限性,例如網(wǎng)絡(luò)(Internet)連接帶寬的限制、防火墻以及安全問題等。真正意義上的異地開發(fā)支持,是指在不同的開發(fā)地點建立各自的存儲庫,通過工具提供同步功能自動或手動同步。這樣做的好處是與網(wǎng)絡(luò)無關(guān),即便各個開發(fā)地點之間沒有實時連通的網(wǎng)絡(luò),也可以通過E-Mail 附件等其它方式將同步包發(fā)給對方,實現(xiàn)手動的同步。
表二異地開發(fā)支持比較表
工具名稱
|
說明
|
ClearCase
|
提供MultiSite 模塊,通過自動或手動同步位于不同開發(fā)地點的存儲庫的方式,支持異地開發(fā)
|
Firefly
|
提供ServerSync 模塊,通過自動或手動同步位于不同開發(fā)地點的存儲庫的方式,支持異地開發(fā)
|
CVS
|
無專門支持的模塊
|
PVCS
|
無專門支持的模塊
|
VSS
|
無專門支持的模塊
|
值得說明的是,在不同開發(fā)點建立各自存儲庫的方式,主要適用于兩個或兩個以上位于不同地點的開發(fā)團隊協(xié)作開發(fā)的情況。如果僅是采用虛擬團隊合作的方式,開發(fā)人員以個體的形式散落在不同地方,則更適合通過Internet 直接操作遠程的配置管理服務(wù)器。
跨平臺開發(fā)支持 如果企業(yè)需要從事多個不同平臺下的開發(fā)工作,就需要配置管理工具能夠?qū)缙脚_開發(fā)提供支持,否則勢必會給開發(fā)、測試、發(fā)布等各個環(huán)節(jié)帶來不便,將使大量的時間被浪費于代碼的手工上傳、下載中。
表三跨平臺開發(fā)支持比較表
工具名稱
|
說明
|
ClearCase
|
支持常見的平臺
|
Firefly
|
軟件本身基于Java開發(fā),可在Windows、Linux、Solaris、HP-UX、AIX等常見平臺上使用,平臺之間的移植也非常方便
|
CVS
|
支持幾乎所有的操作系統(tǒng)
|
PVCS
|
軟件本身基于Java 開發(fā),能夠支持常見的平臺
|
VSS
|
僅支持Windows 操作系統(tǒng)
|
與開發(fā)工具的集成性 配置管理工具與開發(fā)工具是編碼過程中最常用到兩種工具,因此它們之間的集成性直接影響到開發(fā)人員的便利性,如果無法良好集成,開發(fā)人員將不可避免地在配置管理工具與開發(fā)工具之間來回切換。
表四與開發(fā)工具集成性比較表
工具名稱
|
說明
|
ClearCase
|
直接與資源管理器集成,十分易用
|
Firefly
|
與常見開發(fā)工具無縫集成
|
CVS
|
對開發(fā)工具集成性較差
|
PVCS
|
僅支持Windows 操作系統(tǒng)
|
VSS
|
與Visual Studio開發(fā)工具包無縫連接,其它開發(fā)工具集成性差
|
2)性能是否滿意 配置管理工具軟件的一些性能指標對于最終的選擇也有著至關(guān)重要的影響。
運行性能
如果開發(fā)團隊規(guī)模不大的情況下,配置管理工具軟件的性能不會造成很大影響,但如果項目規(guī)模比較大,團隊成員逐漸增多的情況下,其運行性能就會帶來很大的影響。
表五運行性能比較表
工具名稱
|
說明
|
ClearCase
|
服務(wù)器采用多進程機制,使用自帶多版本文件系統(tǒng)MVFS,對性能有較大負面影響。做為一款企業(yè)級、全面的開發(fā)配置管理工具,適用于大型開發(fā)團隊
|
Firefly
|
服務(wù)器采用了多線程的應(yīng)用服務(wù)器,性能表現(xiàn)優(yōu)秀,做為一款企業(yè)級、全面的開發(fā)配置管理,能適用于50人到上千人的團隊
|
CVS
|
較高的運行性能,適用于各種級別的開發(fā)團隊
|
PVCS
|
服務(wù)器采用文件系統(tǒng)共享方式,對CPU、內(nèi)存及網(wǎng)絡(luò)要求較高,性能一般,僅適用于中小型項目團隊,不適合于企業(yè)級應(yīng)用
|
VSS
|
相對功能單一、簡陋,適用于幾個人的小型團隊,在數(shù)據(jù)量不大的情況下,性能可以接受
|
易用性 表六易用性比較表
工具名稱
|
說明
|
ClearCase
|
安裝、配置、使用相對較復(fù)雜,需要進行團隊培訓
|
Firefly
|
在提供全面配置管理功能的情況下,安裝、配置、使用較為簡單,包括安裝、配置、培訓在內(nèi)的整個實施周期一般不會超過一個月。
|
CVS
|
安裝、配置較復(fù)雜,但使用比較簡單,只需對配置管理做簡單培訓即可
|
PVCS
|
使用比較簡單,只需對配置管理做簡單培訓即可
|
VSS
|
安裝、配置、使用均較簡單,很容易上手使用
|
從用戶界面、與開發(fā)工具的集成性角度來說,這幾款主流的配置管理軟件均有較好的設(shè)計,均有較好的易用性。
安全性 表七安全性比較表
工具名稱
|
說明
|
ClearCase
|
采用C/S模式,需要共享服務(wù)器上的存儲目錄以供客戶端訪問,這將帶來一定安全隱患
|
Firefly
|
服務(wù)器上的存儲目錄不用共享,對客戶端不透明,客戶端不可直接訪問存儲目錄,使系統(tǒng)更安全可靠
|
CVS
|
采用C/S 模式,不需要共享服務(wù)器上的存儲目錄,安全性較好
|
PVCS
|
基于文件系統(tǒng)共享,而且需要以"可寫"的權(quán)限共享存儲目錄,存在較大的安全隱患
|
VSS
|
基于文件系統(tǒng)共享實現(xiàn)對服務(wù)器的訪問,需要共享存儲目錄,這將帶來一定安全隱患
|
3)費用是否可以接受 Rational ClearCase、Hansky Firefly 兩款均屬于企業(yè)級配置管理工具軟件,ClearCase價格較貴,,相比之下Hansky Firefly 是一款不錯的選擇。
而PVCS其價格大約是每客戶端幾百美元的水平,對于國內(nèi)企業(yè)來說,性價比不太劃算。VSS 是微軟打包在Visual Studio開發(fā)工具包之中的,顯然花費的精力不大,價格也比較便宜,可以做為個人、小項目團隊版本控制之用。
而CVS則是一款完全免費的開源軟件,性能較之企業(yè)級配置管理工具差距不大,也是一種不錯的選擇。
4) 售后服務(wù)如何 表八售后服務(wù)比較表
工具名稱
|
說明
|
ClearCase
|
大型商用軟件,已被IBM公司收購,但國內(nèi)市場拓展有限,因此服務(wù)支持會受到限制?,F(xiàn)在中國用戶的支持是由位于澳大利亞悉尼的支持中心聯(lián)系
|
Firefly
|
大型商用軟件,已在中國成立分公司,全面拓展市場之中,在北京設(shè)有支持中心
|
CVS
|
做為開源軟件,無官方支持,需要用戶自己查找資料解決技術(shù)問題,現(xiàn)在也出現(xiàn)專門為CVS做技術(shù)支持的公司
|
PVCS
|
在中國市場開拓有限,國內(nèi)沒有支持中心
|
VSS
|
做為微軟的非核心產(chǎn)品,技術(shù)支持有限。在其網(wǎng)站上有提供一些常見問題,只有對正式購買的用戶提供一定的技術(shù)支持
|
售后服務(wù)與產(chǎn)品支持也是一個很重要的考察點,工具在使用過程中出現(xiàn)這樣那樣的問題是很平常的事,有些是因為使用不當,有些則是工具本身的缺陷。這些問題都會直接影響到開發(fā)團隊的使用,因此隨時能夠找到專業(yè)技術(shù)人員解決這些問題就變成十分重要。
實例說明
最后,筆者介紹幾個實際的案例,希望對大家選擇軟件配置管理工具軟件有幫助。
案例一 某公司擁有10 名專職開發(fā)人員以及一些兼職的開發(fā)人員,主要從事Windows和Linux 平臺下的軟件開發(fā),采用的工具包括Visual Studio 系列、GCC 等。為了能夠加強版本控制與配置管理工作,決定引入一些自動化配置管理工具。
經(jīng)過慎重的選擇,采用了兩步走的方法:
1) 首先采用了Visual Studio 軟件包中的VSS做為配置管理工具;
由于VSS安裝、配置、操作都十分簡單,上手容易,這樣在執(zhí)行配置管理的過程中,工具的培訓沒有帶來太大的阻力,大家可以集中精力理解配置管理。這樣很快就在團隊中形成了版本控制、配置管理的氛圍與習慣。
2) 然后構(gòu)建了CVS服務(wù)器,做為整個開發(fā)組織的配置管理工具;
CVS 能夠有效地支援Windows、Linux 兩個平臺上的應(yīng)用開發(fā),其性能優(yōu)秀,而且免費,另外,它對于兼職人員的配置管理十分有效。采用CVS 至今,效果明顯,除了功能、使用上有些不方便之處外,沒有出過任何大問題。
案例二 北京某公司擁用230名專職開發(fā)人員,長期從事金融業(yè)務(wù)的開發(fā),隨著業(yè)務(wù)的良性發(fā)展,在管理上也出現(xiàn)了一些不足:
1) 開發(fā)管理溝通滯后,開發(fā)人員孤立操作,變更和維護信息無法實時反饋;
2) 主管領(lǐng)導(dǎo)對所開發(fā)的100 多種產(chǎn)品的項目開發(fā)進程不能及時了解,很多資源滯留在個人手中;
3) 隨著產(chǎn)品的需求日益增加,無法快速標識和查找軟件的歷史版本;
4) 無法對處于不同開發(fā)平臺上的項目進行統(tǒng)一管理和資源配置;
5) 無法實現(xiàn)異地開發(fā)團隊的協(xié)調(diào)和溝通。
因此,該公司決定引入軟件配置管理,在配置管理工具軟件的選擇上,考慮到其人員規(guī)模較大,項目較多,工作復(fù)雜,在針對可靠性、易用性、穩(wěn)定性、安全性、技術(shù)支持能力以及軟件的各功能進行了仔細的綜合評估后,最后選擇了國內(nèi)技術(shù)支持較到位的Hansky Firefly 軟件配置工具軟件。
在采用了Hansky Firefly 之后,有效地解決了這些問題,還幫助其順利地通過了CMM 2級認證,為企業(yè)的進一步發(fā)展打下了堅實的基礎(chǔ)。