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