每一個(gè)軟件項(xiàng)目,無(wú)論是工程類(lèi)項(xiàng)目,還是產(chǎn)品類(lèi)項(xiàng)目,都必須經(jīng)歷需求分析、系統(tǒng)設(shè)計(jì)、編碼實(shí)現(xiàn)、集成測(cè)試、部署、交付、維護(hù)和支持的過(guò)程。在這個(gè)過(guò)程中,將生成各種各樣不同的工件,包括文檔、源程序、可執(zhí)行代碼、支持庫(kù)。更可怕的是,頻繁出現(xiàn)的變更是不可避免的,因此面向如此龐大且不斷變動(dòng)的信息集,如何使其有序、高效地存放、查找和利用成為了一個(gè)突出的問(wèn)題。
針對(duì)這一問(wèn)題,早的開(kāi)發(fā)人員嘗試過(guò)的解決辦法是通過(guò)手工來(lái)實(shí)現(xiàn):
1)文檔:每次修改時(shí)都另存為一個(gè)新的文件,然后通過(guò)文件名進(jìn)行區(qū)分,例如"XXX 軟件需求說(shuō)明書(shū)V1.0,XXX軟件需求說(shuō)明書(shū)V1.1,XXX 軟件需求說(shuō)明書(shū)V2.0.",并且在文件中注明每次版本變化的內(nèi)容;
2) 源代碼:每次要修改時(shí)將整個(gè)工程目錄復(fù)制一份,將原來(lái)的文件夾進(jìn)行改名,例如"XX 項(xiàng)目V1.0、XX 項(xiàng)目1.01、.",然后在新的目錄中進(jìn)行修改;
但是這種方法,不僅十分繁瑣,容易出錯(cuò),而且會(huì)帶來(lái)大量的垃圾數(shù)據(jù)。如果是團(tuán)隊(duì)協(xié)同開(kāi)發(fā)或者是項(xiàng)目規(guī)模較大時(shí),還是會(huì)造成很大的混亂。很顯然,這樣簡(jiǎn)陋的方法是無(wú)法應(yīng)對(duì)這一問(wèn)題的。
后來(lái),有人嘗試從制造工業(yè)領(lǐng)域引入了"配置管理"這一概念,通過(guò)不懈的研究與實(shí)踐,終形成了一套管理辦法和活動(dòng)原則,這也是軟件配置管理。
通過(guò)軟件配置管理,將對(duì)軟件系統(tǒng)中的多重版本實(shí)施系統(tǒng)的管理;全面記載系統(tǒng)開(kāi)發(fā)的歷史過(guò)程,包括為什么修改,誰(shuí)作了修改,修改了什么;管理和追蹤開(kāi)發(fā)過(guò)程中危害軟件質(zhì)量以及影響開(kāi)發(fā)周期的缺陷和變化。并對(duì)開(kāi)發(fā)過(guò)程進(jìn)行有效地管理和控制,完整、明確地記載開(kāi)發(fā)過(guò)程中的歷史變更,形成規(guī)范化的文檔,不僅使日后的維護(hù)和升級(jí)得到保證,而且更重要的是,這還會(huì)保護(hù)寶貴的代碼資源,積累軟件財(cái)富,提高軟件重用率,加快投資回報(bào)。
常見(jiàn)的配置管理工具
正如前面所述,由于軟件配置管理過(guò)程十分繁雜,管理對(duì)象錯(cuò)綜復(fù)雜,如果是采用人工的辦法不僅費(fèi)時(shí)費(fèi)力,還容易出錯(cuò),產(chǎn)生大量的廢品。因此,引入一些自動(dòng)化工具是十分有裨益的,這也是做好配置管理的必要條件。
正是因?yàn)槿绱,市?chǎng)上出現(xiàn)了大量的自動(dòng)化配置管理工具,這些工具的實(shí)現(xiàn)原理與基本機(jī)制均十分接近,但由于其定位不同,因此各有特點(diǎn),下面我們對(duì)一些常見(jiàn)的配置管理工具做一簡(jiǎn)單的介紹。
元老:CCC、SCCS、RCS
上個(gè)世紀(jì)七十年代初期加利福利亞大學(xué)的Leon Presser教授撰寫(xiě)了一篇論文,提出控制變更和配置的概念,之后在1975年,他成立了一家名為SoftTool的公司,開(kāi)發(fā)了自己的配置管理工具:CCC,這也是早的配置管理工具之一。
在軟件配置管理工具發(fā)展史上,繼CCC之后,具有里程碑式的是兩個(gè)自由軟件:Marc Rochkind 的SCCS (Source Code Control System) 和Walter Tichy 的RCS (Revision Control System),它們對(duì)配置管理工具的發(fā)展做出了重大的貢獻(xiàn),直到現(xiàn)在絕大多數(shù)配置管理工具基本上都源于它們的設(shè)計(jì)思想和體系架構(gòu)!
中堅(jiān):Rational ClearCase
Rational 公司是全球大的軟件CASE 工具提供商,現(xiàn)已被IBM收購(gòu)。也許是受到其拳頭產(chǎn)品、可視化建模第一工具Rose 的影響,它開(kāi)發(fā)的配置管理工具ClearCase 也是深受用戶(hù)的喜愛(ài),是現(xiàn)在應(yīng)用面廣的企業(yè)級(jí)、跨平臺(tái)的配置管理工具之一。
ClearCase提供了比較全面的配置管理支持,其中包括版本控制、工作空間管理、Build管理等,而且開(kāi)發(fā)人員無(wú)需針對(duì)其改變現(xiàn)有的環(huán)境、工具和工作方式。
其大的缺點(diǎn)在于其價(jià)格不菲,每個(gè)客戶(hù)端用戶(hù)許可證大約需要幾千美金,所以在國(guó)內(nèi)應(yīng)用群體有限。
1) 版本控制
ClearCase不僅可以對(duì)文件、目錄、鏈接進(jìn)行版本控制,同時(shí)還提供了先進(jìn)的版本分支和歸本功能用于支持并行開(kāi)發(fā)。另外,它還支持廣泛的文件類(lèi)型。
2)工作空間管理
可以為開(kāi)發(fā)人員提供私人存儲(chǔ)區(qū),同時(shí)可以實(shí)現(xiàn)成員之間的信息共享,從而為每一位開(kāi)發(fā)人員提供一致、靈活、可重用的工作空間域。
3) Build管理
對(duì)ClearCase 控制的數(shù)據(jù),既可以使用定制腳本,也可使用本機(jī)提供的make 程序。
其大的缺點(diǎn)在于其價(jià)格不菲,每個(gè)客戶(hù)端用戶(hù)許可證大約需要幾千美金,所以在國(guó)內(nèi)應(yīng)用群體有限!
新秀:Hansky Firefly
做為H a n s k y 公司軟件開(kāi)發(fā)管理套件中重要一員的Firefly,可以輕松管理、維護(hù)整個(gè)企業(yè)的軟件資產(chǎn),包括程序代碼和相關(guān)文檔。Firefly是一個(gè)功能完善、運(yùn)行速度極快的軟件配置管理系統(tǒng),可以支持不同的操作系統(tǒng)和多種集成開(kāi)發(fā)環(huán)境,因此它能在整個(gè)企業(yè)中的不同團(tuán)隊(duì),不同項(xiàng)目中得以應(yīng)用。
Firefly基于真正的客戶(hù)機(jī)/服務(wù)器體系結(jié)構(gòu),不依賴(lài)于任何特殊的網(wǎng)絡(luò)文件系統(tǒng),可以平滑地運(yùn)行在不同的LAN、WAN 環(huán)境中。它的安裝配置過(guò)程簡(jiǎn)單易用,F(xiàn)irefly 可以自動(dòng)、安全地保存代碼的每一次變化內(nèi)容,避免代碼被無(wú)意中覆蓋、修改。項(xiàng)目管理人員使用Firefly可以有效地組織開(kāi)發(fā)力量進(jìn)行并行開(kāi)發(fā)和管理項(xiàng)目中各階段點(diǎn)的各種資源,使得產(chǎn)品發(fā)布易于管理;并可以快速地回溯到任一歷史版本。系統(tǒng)管理員使用Firefly的內(nèi)置工具可以方便的進(jìn)行存儲(chǔ)庫(kù)的備份和恢復(fù),而不依賴(lài)于任何第三方工具!
開(kāi)源奇葩:CVS
CVS 是Concurrent Versions System 的縮寫(xiě),它是開(kāi)放源代碼軟件世界的一個(gè)偉大杰作,由于其簡(jiǎn)單易用、功能強(qiáng)大,跨平臺(tái),支持并發(fā)版本控制,而且免費(fèi),它在全球中小型軟件企業(yè)中得到了廣泛使用。
其大的遺憾是缺少相應(yīng)的技術(shù)支持,許多問(wèn)題的解決需要自已尋找資料,甚至是讀源代碼!
小工作組級(jí):Merant PVCS
MERANT 公司的PVCS 能夠提供對(duì)軟件配置管理的基本支持,通過(guò)使用其圖形界面或類(lèi)似SCCS 的命令,能夠基本滿(mǎn)足小型項(xiàng)目開(kāi)發(fā)的配置管理需求。PVCS 雖然功能上也基本能夠滿(mǎn)足需求,但是其性能表現(xiàn)一直較差,逐漸地被市場(chǎng)所冷落。
入門(mén)級(jí):Microsoft Visual Source Safe
Visual Source Safe,即VSS,是微軟公司為Visual Studio配套開(kāi)發(fā)的一個(gè)小型的配置管理工具,準(zhǔn)確來(lái)說(shuō),它僅能夠稱(chēng)得上是一個(gè)小型的版本控制軟件。VSS的優(yōu)點(diǎn)在于其與Visual Studio實(shí)現(xiàn)了無(wú)縫集成,使用簡(jiǎn)單。提供了歷史版本記錄、修改控制、文件比較、日志等基本功能。
但其缺點(diǎn)也是十分明顯的,只支持Windows平臺(tái),不支持并行開(kāi)發(fā),通過(guò)Check out - Modify - Check in的管理方式,一個(gè)時(shí)間只允許一個(gè)人修改代碼,而且速度慢、伸縮性差,不支持異地開(kāi)發(fā)。甚至于微軟本身也不采用其做為配置管理工具,而是使用一個(gè)名為SLM 的內(nèi)部工具。