配置管理的精髓
2012-05-30 18:00:46| 分類: 配置管理 | 標簽:配置管理
|字號 訂閱
配置管理的精髓
貝爾實驗室先進技術研究院 姜海東
隨著國內軟件業的崛起和成熟,軟件配置管理越來越得到重視??梢哉f,軟件業要想更好的發展,沒有軟件配置管理的支持是不可能的。手工作坊式的軟件開發模式將會成為歷史,如何把國外成熟的軟件配置管理理論和經驗消化吸收,進而應用到國內軟件開發中就成為國內軟件業迫在眉睫的任務了。
軟件配置管理是管理和技術相結合的一門學科。應該說,軟件配置管理理論難以理解是其難以實踐的原因。本文試從基本概念的角度來探討這門對軟件開發具有重要意義的領域。
什么是配置管理
在軟件開發中,變更是不可避免的。從某種角度上講,軟件開發過程就是一個變更的過程。有些變更是有益的,是具有創造性的,但是,也有些變更是有害的,導致混亂的。正像James Bach 總結的那樣:
我們為變更所困擾,因為代碼中的一個極小的混亂可能帶來產品的大的故障,但是,他也能夠修復大的故障或啟用奇妙的新能力。我們為變更所困擾,因為某個喜歡惡作劇的單個開發者可能破壞掉項目,但是,一些奇妙的思想也源自那些喜歡惡作劇的人員。
因此,如何管理這些變更是一個軟件開發能否成功的關鍵。簡言之,軟件配置管理就是管理變更的過程,它貫穿著幾乎軟件的整個生命周期。成功的配置管理系統可以提高產品的質量、項目開發效率,而且最大限度的減少對個別“英雄”式人員的依賴。
盡管配置管理(Configuration Management )這個概念被提出有幾十年了,但是,業內還沒有一個全面而權威的定義。Configuration 的意思是“使成形”,它來源于拉丁語的com-(表示“與”或者“一起”)和figurate ( 形成) 。它還有一個意思是“組成部件或元素的相對排列”。因此,配置管理(ConfigurationManagement )指的是管理組成部件或者元素的相對排列。
配置管理的概念來自于硬件領域,美國國防部最早使用了配置管理的概念。我們知道一架飛機的構成非常復雜,比如機頭、機身、機翼和機尾等。不同型號飛機的各個部分是不能隨便組裝的。因此,我們只有把相匹配的部件組裝在一起,才能構成了一個功能完備的飛機整體。隨著技術的提高,各個部件可能還要進行功能改善,我們還要使得不同版本的部件能夠正確無誤組合在一起。
準確地說:
配置管理是對產品進行標識、存儲和控制,以維護其完整性、可追溯性以及正確性的學科。
從上面的描述,我們知道,配置管理的基本單位是配置項。軟件配置項可以是:
從“哲學”意義上講,配置管理記錄配置項的三個方面:
從哪里來?此項可歸結為WWW 的問題,(Who)誰創建的?(When)什么時間創建的?(Why)為什么創建此配置項?
當前在哪里?此項紀錄配置項當前的存儲位置以及狀態。
將到哪里去?通過配置控制來把配置項“組裝”到正確的版本中去。
配置項可以是大粒度的,也可以是小粒度的。如果跟蹤個別需求,那么不必要把整個需求規格說明文檔定義為一個配置項,可以把每個需求定義為配置項;如果把軟件開發工具也放入配置管理系統,那么把配置項定義為文件級就不合適了,只需要跟蹤開發工具的版本,即把整個配置工具定義為一個配置項就足夠了。
簡而言之,配置項可以是文件級粒度的,也可以使文件版本級粒度的。當然,粒度越小管理的成本越高,但是配置的精度也就越高。
一個完整的SCM系統要具有三個核心功能:配置標識、版本控制、變更控制、配置狀態統計和配置審核。其中變更控制包括基線管理、變更請求管理、構建管理和發布管理。如下圖所示。
下面,我們來具體理解這些概念。
配置標識
配置標識就是識別產品的結構、產品的構件及其類型,為其分配唯一的標識符,也就是說,每一個配置項要有一個唯一標識。一般說來,標識包括兩個方面:一是文件名,二是版本,可用如下一個二元組來標識:< 文件名,版本> 。每個項目首先要確定一套命名規則,例如,采用“系統.子系統.模塊.文件”的方式,</videoConference/audio/compressing/m a in.c , 2.1>就是一個唯一標識。
版本控制
版本控制就是對在軟件開發過程中所創建的配置對象的不同版本進行管理,保證任何時候都能取到正確的版本以及版本的組合。當前,這方面典型的工具有如VSS 和CVS 。
變更控制
在軟件開發過程,要產生許多變更,比如,配置項、配置、基線、構建的版本、發布版本等。對于所有的變更,都要有一個控制機制,以保證所有變更都是可控的、可跟蹤的、可重現的。對變更進行控制的機構稱為變更控制委員會(Change Control Board,簡稱
CCB )。變更控制委員會要定期召開會議,對近期所產生的變更請求進行分析、整理,并做出決定。而且要遵循一定的變更機制。
下面是一個典型的變更機制:
變更請求管理
變更請求管理就是對變更請求(Change Request,簡稱CR)進行分類、追蹤和管理的過程來實現的。
變更的起源有兩種:功能變更和缺陷修補(Bug-Fix)。功能變更是為了增加或者刪除某些功能。缺陷修補則是對已存在的缺陷進行修補。
對變更請求的有效管理可以提高產品管理的透明度,經理可以清楚的知道當前產品的進展情況,比如有多少個新產生的CR,已經解決了多少CR等等,有利于經理做出正確的決策。
基線管理
基線是指經過正式評審和批準,可作為下一步工作的基準的一個配置。軟件開發過程中,無論是需求分析、設計、測試都需要在完成時建立基線,以作為下一步工作的基礎。
通過基線管理可以使用戶能夠通過對適當版本的選擇來組成特定屬性(配置)的軟件系統,這種靈活的“組裝”策略使得配置管理系統象搭積木似的使用已有的積木(版本)組裝成各種各樣、不同功能的模型。
基線的變更需要一個嚴格的流程,需要提出申請,經過審批,然后才能進行。
構建管理
在做構建時,我們需要首先取出正確的配置,然后再做構建。我們可以利用基線,可以取出某個基線的所有配置項,也可以利用配置管理系統的構建功能直接在工作空間內做構建。
構建管理需要配置管理工具的支持。
發布管理
軟件產品的每個版本都是一組配置項(源代碼、文檔、數據)的集合。舉個例子來說,我們要發布軟件的32.6 版本,那么我們就要把源代碼、文檔、數據中所有應該包含到這個版本中的正確配置項檢出。
所以如何管理每個版本中包含哪些配置項是非常重要的。
狀態報告
狀態報告要回答所謂4W 的問題:
What:發生了什么事?
Who:誰做的此事?
When:此事是什么時候發生的?
Why:為什么做此事?
狀態報告要能夠報告所有配置項以及變更請求的狀態,通過量化的數據和報表反映項目開發進度的狀態。
配置審核
配置審核要審查整個配置管理過程是否符合規范,配置項是否與需求一致,記錄正確,配置的組成是否具有一致性等等。比如,需求分析文檔提交后,需要由一個由相關人組成的小組進行正式評審,只有通過了評審才能基線化。對于源代碼也一樣,一般說來,每行代碼都要進行評審(Review),只有通過評審才能交由測試人員進行測試。
實施配置管理的好處
我們知道軟件有三個要素:時間、預算和質量。一個成功的軟件就是要在限定的時間內,不超過預算,交付符合質量要求的產品。真正實施配置管理后,我們會對產品的開發過程進行有效的控制,可以加快開發進度,降低開發成本,保證產品的質量。
產品經理可以得到什么好處呢?
準確掌握項目的開發進度。配置管理系統可以提供詳盡的狀態報告,例如當前系統有多少個Bug,所有Bug 的狀態如何?已經解決了多少Bug?
了解項目組成員的工作負荷、工作效率以及工作質量。例如,我們可以知道當前分配給每個成員的工作量,每個成員已完成的工作量,每個成員未通過正式評審的工作比例等等。
減少人員流動所帶來的影響。每個成員的所有變更,包括文檔、代碼的增刪都是可追蹤的,而且對于變更的原因、描述也都有記錄。這樣,一旦成員離開,其它成員就可以在最短的時間里接手。
有效提高過程管理,配置管理產生的許多數據可作為管理者度量項目的依據。
開發人員和測試人員可以得到什么好處呢?
提交的代碼被有效保存,開發人員再也不用花費精力去保存各個版本了。
提高團隊的協作效率。開發人員之間以及開發人員和測試人員之間可以有效的溝通,大家都互相知道其它人的工作狀態。
提高修復缺陷的效率。可以依據Bug 發現的版本,迅速重建環境,重現Bug,快速定位代碼,找出根源。
職責清楚,任務明確。每一步的工作都是基于某一基線的,比如,設計文檔是依據基線化了的需求分析文檔,這樣一旦出現問題,就可以找出問題出在什么地方。
當然,實施配置管理的好處遠不止這些。軟件配置管理作為軟件開發的基石,它提供了一個協作開發的環境,只有大家共同遵守配置管理規范,互相協作才能保證項目的成功。
結束語
配置管理本身無論從理論和實踐都在不斷豐富和發展。例如,配置管理應用于“知識庫”的管理就產生了“內容管理”這一新的領域。配置管理提供的狀態報告和數據統計也為軟件度量提供了決策依據。配置管理為項目管理提供了各種監控項目進展的視角,為項目經理確切掌握項目進程提供了保證。配置管理也為開發人員提供了一個協作的平臺,在此平臺上,大家能夠更有效率的交流和協作??梢哉f,配置管理是軟件開發的基石!
配置管理近年來在中國得到了極大的認可,可以毫不夸張的說,沒有配置管理,就談不上軟件開發,就談不上軟件質量,就談不上軟件業的發展。隨著軟件業規模的擴大,配置管理的實施不是要不要的問題,而是什么時間、如何實施的問題了。
參考文獻:
Babich, W.A., Software Configura tion Management, Addison-Wesley, 1986. Peter H. Feiler, Configuration Management Models in Commercial Environment, CMU/SEI-91-TR-7, 1991.4
作者簡介:2000年在北方交通大學獲工學碩士學位。現供職于朗訊科技(中國)有限公司貝爾實驗室先進技術研究院,從事配置管理系統的研究和開發,有四年多的配置管理領域開發、咨詢、培訓經驗。
轉自:
http://blog.163.com/wangdan10799@126/blog/static/10230093201243054322378/