關鍵字:配置管理軟件配置管理作為貫穿軟件開發過程始終的一項工作,其重要性不言而喻。51cmm上已有眾多關于配置管理介紹、配置管理計劃、配置管理工作開展心得一類的文章,這些文章從概念和實施上介紹了配置管理工作的內容,但美中不足的是仍嫌抽象,那些想要依葫蘆畫瓢的兄弟姐妹們在試圖將這些理論應用到自己項目的配置管理中的時候,會發現仍然是無從下手(我也曾是這些感覺無從下手的人中的一個)。因此,本文擬從另外一個角度,以本人最近實際操作的一個項目的配置管理工作談起,從配置管理工具的選擇、配置管理流程制定、配置管理庫結構的確定,以及作為配置管理工作的推動者如何推動這項工作等方面仔細描述一下本人的做法,希望這幾篇文章能給那些水深火熱中的兄弟姐妹們一點幫助。
這里有兩點需要特別說明:
1.本文描述的內容是以一個項目的配置管理為主線,對組織級的配置管理和配置管理策略沒有進行詳細討論;
2.本文用來做示例的項目是一個“工程型”的項目,所謂的“工程型”是和“產品型”對應的,這樣的項目需要公司的開發人員和現場的開發人員進行協作開發,一般而言,在公司的開發人員完成大部分的功能,現場的開發人員根據用戶需求,對軟件進行修改(這部分的工作量一般會較大,在一個16人年的項目中,這部分的工作可能會占到三分之一以上的工作量)。
配置管理工作概述
配置管理工作的工作范圍,在51cmm的很多文章中都有描述,具體可以參考河清專欄的《基于CMM和CMMI的配置管理》和陳越的《軟件配置管理實施體會》。在這里不作詳細的描述。
本文涉及的項目背景
本文用來示例的項目是某省電信的一個項目,該項目的工作量大約是16人年,項目周期約為1年。大部分(90%以上)的開發工作在前8個月內完成,后期的工作主要由維護人員進行系統維護和調整。在8個月的開發時間中,前5個月由開發人員在公司進行開發,根據用戶的需求完成設計,確定系統架構并實現整個框架,部分明確的功能以及公用模塊也在這段時間內完成;后3個月的時間部分開發人員在現場,部分開發人員在公司共同完成后期的開發工作。
整個項目采用的開發語言是C++、Java、ASP,涉及的平臺包括Solaris和Windows,采用的開發工具包括Visual Studio和Solaris上的CC。此外,整個項目還使用了一些第三方的平臺,如IBM的MQ等。
除用戶需求之外,公司還對項目組提出了代碼復用方面的要求,開發人員在開發過程中必須注意代碼的可重用性。
配置管理前期準備工作
在項目正式啟動之后,配置管理工作就可以開始了。配置管理工作開始的第一步就是一份配置管理計劃。51cmm上已有不少配置管理計劃的模板,大家可以參考。
一般而言,需要在配置管理計劃中明確的內容包括:
1、 配置管理軟硬件資源;
2、 配置庫結構;
3、 人員、角色以及配置管理規范;
4、 基線計劃;
5、 配置庫備份計劃;
在下文中,我們將圍繞這些內容進行詳細描述。
配置管理環境
配置管理環境包括軟硬件環境。具體的資源需求應該根據項目實際情況來確定,一般需要考慮的包括:網絡環境、配置管理服務器的處理能力、空間需求,配置管理軟件的選擇等。配置管理環境的確定需要綜合考慮各個方面的因素,包括我們采用的開發工具,開發方式,開發人員對配置管理工具的熟悉程度等,其中,開發人員對配置管理工具的認可和熟悉程度常常直接決定配置管理能否正常進行,如果選擇了需要開發人員花費比較大的精力去熟悉的配置管理軟件,我們就必須花費大量時間來進行培訓;同時,配置管理軟件和開發工具的集成程度也是一個必須考慮的因素,根據我們的經驗,選擇一個和開發環境集成緊密的配置管理工具至少可以減少20%花費在Check In/Check Out和配置管理人員保持配置庫完整上的工作量。
根據我們項目的實際情況,我們有如下一些考慮:
根據歷史經驗,一個類似項目的配置庫大小約為3G,考慮到備份等操作對空間的需求,至少應該為配置管理庫保留10G以上的空間。為了保證配置管理庫的安全,除了相應的備份計劃之外,還可以采用了RAID 0+1的方式為配置數據庫提供更好的可用性保證;
考慮到在項目的后期有部分開發人員會在現場進行開發,因此在網絡條件上需要提供對遠程訪問方式的支持;
配置管理服務器的選擇和配置管理軟件的選擇相關,考慮到目前公司有一臺閑置的PC服務器,最好能充分利用這臺服務器;
配置管理軟件必須可以以某種方式支持遠程訪問,而且由于我們的開發平臺涉及Solaris和Windows,配置管理軟件要能夠支持這兩種平臺;考慮到開發工具方面,配置管理工具要求能和我們選擇的開發工具進行很好的集成;
項目組的開發人員缺乏使用配置管理工具的經驗,有將約30%的開發人員使用過VSS配置管理工具,但僅限于最基礎的使用,對VSS的Label等功能沒有概念;結合以上的情況,我們首先考慮配置工具的選擇。
文章來源于領測軟件測試網 http://www.kjueaiud.com/