摘要:隨著現代軟件技術的發展,企業對于軟件項目的需求日益復雜而且變更頻繁,當開發團隊發展到一定規模時,會越來越強調開發過程規范化和成熟度。正確地在企業實施軟件配置管理,有賴于全面正確地認識軟件配置管理,以及避免一些常見的誤區,并選擇正確的工具。
關鍵詞:軟件;配置管理;控制
中圖分類號:TP311文獻標識碼:A 文章編號:1009-3044(2008)24-1332-02
Enterprise Software Configuration Management
JIA Rui-lin
(Beijing Institute of Space Systems Engineering, Beijing 100076,China)
Abstract: with the development of modem software, the requirements for software projects to the enterprise become more and more complex and frequently. That means when development teams get a considerable size, the standardization and maturation will be stressed by the enterprise. How to carry out the software configuration management to the enterprise depends on not only consider the software configuration management in the right way but also try to avoid regular mistake and take the right tools.
Key words: Software; Configuration management; Control
質量,一直是企業生存的根本。軟件作為一種高智力的創造活動,既具有制造業的一般特性,同時又由于其知識性強、創造性大,而具有一般制造業所沒有的特點。制定出標準、有效、可操作性強的軟件質量管理規范,對于實行軟件產業化,提高生產效率,增強競爭力具有重要意義。
軟件配置管理并不是一個新的概念,早在20世紀70 年代,加州大學圣巴巴拉分校(University of California at Santa Barbara)的Leon Presser 授就已經提出變更和配置控制的理論,并隨著軟件產業的逐漸壯大,在國外成熟的軟件企業中逐漸得到重視和普及,在一些國外的大中型軟件企業中,不僅設置專職的配置管理人員,而且有些公司還設有公司級的變更控制委員會(CCB:Change Control Board)對公司的軟件配置管理工作進行統一的管理,配置管理對于軟件開發的重要性由此可見一斑。
1 軟件配置管理的必要性
同發達國家相比,我國的軟件企業在開發管理上,過分依賴個人的作用,沒有建立起協同作戰的氛圍,沒有科學的軟件配置管理流程;技術上只重視系統和數據庫、開發工具的選擇,而忽視配置管理工具的選擇,導致即使有配置管理的規程,也由于可操作性差而擱淺。以上種種原因導致開發過程中普遍存在如下一些問題:
1.1 開發管理松散
部門主管無法確切得知項目的進展情況,項目經理也不知道各開發人員的具體工作,項目進展隨意性很大,可“左”可“右”。“左”時按領導下達的“期限”進行,到期時,似乎一切已順利完成,大家一陣胡弄,交差完成,反正領導看的是界面,至于里面是什么,留到施工時再說。施工時的工作因此變成了無法匯報、無法理清的無休止的維護。“右”時則項目工期無休止地延期。對我們軟件工程來說,總的特點是先“左”后“右”。在領導面前表現“左”,在用戶面前表現“右”。
1.2 項目之間溝通不夠
各個開發人員各自為政,編寫的代碼不僅風格各異,而且編碼和設計脫節。本來開發中錯誤在所難免,但項目開發人員怕溝通,似乎那是針對自已的批斗會,互相推諉責任。開發大量重復,留下大量難維護的代碼。
1.3 文檔與程序嚴重脫節
軟件產品是公司的寶貴財富,代碼的重用率是相當高的,如何建好知識庫,用好知識庫對公司優質高效開發產品,具有重大的影響。但開發人員的一句名口號是:“叫我干什么都可以,但別叫我看別人的程序”。當然,開發人員的工作態度要轉變,但客觀上有一個很重要的原因是:前人留下的程序既無像樣的文檔(即使留下了文檔,其與源程序也嚴重脫節),開發風格又不統一,就像一堆垃圾,要開發人員到垃圾中去撿破爛,從這個角度上看,開發人員的要求是合理的。
1.4 測試工作不規范
傳統的開發方式中,測試工作只是人們的一種主觀愿望,根本無法提出具體的測試要求,加之開發人員的遮丑,測試工作往往是走一走過場,測試結果既無法考核又無法量化,當然就無法對以后的開發工作起指導作用。
1.5 施工周期過長,且開發人員必須親臨現場
傳統的開發與施工是絕對統一的,別人無法接手也無意接手(因為這意味著看別人的程序)。由于應用軟件的特點,各個不同的施工點有不同的要求,開發人員要手工地保持多份不同的拷貝,即使是相同的問題,但由于在不同地方提出,由不同人解決,其做法也不同,程序的可維護性越來越差。
針對以上問題,國內很多軟件企業已經逐漸認識到配置管理的重要性,在國外一些成熟的配置管理工具的輔助下,制定相應的配置管理策略,取得了很好的成效。
2 如何進行軟件配置管理
“軟件配置管理”是一套規范、高效的軟件開發管理方法,同時也是提高軟件質量的重要手段。軟件配置管理可以幫助開發團隊對軟件開發過程進行有效的變更控制,高效地開發高質量的軟件。在質量體系的諸多支持活動中,配置管理處在支持活動的中心位置,它有機地把其它支持活動結合起來,形成一個整體,相互促進,相互影響,有力地保證了質量體系的實施。一般來講,軟件配置管理人員應該完成以下幾個主要任務:
2.1 配置標識
要配置標識,首先必須明確項目生命周期內所要產生的工作產品,然后確定工作產品的名稱和標識規則。總體原則是,保證配置管理工具檢索便利,讓項目組成員容易記住標識規則,同時要確保組織一級的標識規則的一致性。表1中列舉了若干類軟件配置項及其生成的階段。只有明確了各階段有哪些軟件配置項,軟件企業才能在實施軟件配置管理時胸有成竹、游刃有余。
2.2 版本管理
版本管理一般是使用工具來完成的,如Rational ClearCase、Merant PVCS Version Manager、Microsoft Visual SourceSafe等。使用這些工具時,容易被忽視的一點是制定所使用工具的版本規則。如果直接采用工具的內部版本號,會給產品發布帶來一些困難。通常采用“X.Y.Z”方式進行版本標識,明確X、Y和Z各位數字遞增的規則,然后結合工具標簽(Label)功能,便可實現高效的版本管理。
2.3 變更管理
變更管理是項目管理的一個重點和難點,涉及的范圍很廣。實施高效的變更管理至少應該包括兩個部分:“定義合理的變更管理流程”、“采用自動化工具作為支持”。在具體的實踐中,應該對變更進行分類和分層,建立起處理不同變更的“變更控制委員會”(CCB),既保證項目組成員有一定的自主權,又不會耽誤高層經理對關鍵問題的把握。
2.4 配置審核
配置審核包括兩方面的內容:“配置管理活動審核”、“基線審核”。“配置管理活動審核”用于確保項目組成員的所有配置管理活動,遵循已批準的軟件配置管理方針和規程,如檢入(Check in)/檢出(Check Out)的頻度、工作產品成熟度提升原則等。實施“基線審核”,要保證基線化軟件工作產品的完整性和一致性,并且滿足其功能要求。基線的完整性可從以下幾個方面考慮:基線庫是否包括所有計劃納入的配置項?基線庫中配置項自身的內容是否完整?(如,文檔中所提到的參考或引用是否存在?)此外,對于代碼,要根據代碼清單檢查是否所有源文件都已存在于基線庫。
表1 若干類軟件配置項及其生成的階段

表2

表3

在實際操作過程中,一般認為審核是一種事后活動,很容易被忽視。但是“事后”也是有相對性的,在項目初期審核發現的問題,對項目后期工作總是有指導和參考價值的。為了提高審核的效果,應該充分準備好檢查單,如表2所示。
2.5 報告配置狀態
報告配置狀態的目的,是向項目所有成員提供基線內容和狀態、基線變更信息(如表3所示),這也是實現資源共享的前提。此外,在項目生命周期中進行對配置項的變更數據統計分析,有利于評估項目風險,有效控制項目的執行。在變更請求被批準、基線版本發生變化及項目組提出任何需要時,可以采用Email等方式進行報告。
2.6 發布管理
實施了規范的配置管理,發布就顯得很從容了。但是必須要注意的是:發布的產品應該是從軟件基線庫中提取出來的;在軟件發布給最終用戶之前,要準備發布記錄,為軟件產品分配發布版本號,同時要對它進行發布評審并確認其得到批準。
一般來說,高層經理、項目經理、軟件質量保證人員和測試組都應該參加發布評審。
在項目啟動的初期,將這些活動和策略有機組織起來,便形成一個配置管理計劃。然后建立配置管理環境(比如安裝版本管理和變更管理工具、建立用戶和權限分配等),并根據項目組成員的具體情況,實施必要的有效培訓(確保項目組成員真正清楚配置管理方針和規程,并熟練使用配置管理的相關工具)。
3 結束語
配置管理離不開“人、工具、規范”三要素,我們若把軟件項目比喻成隆隆向前的戰車的話,配置人員便是戰車的機械師,負責及時通報戰車的性能、方位,排除系統故障;配置工具則是戰車的傳送帶,平穩而準確地推動著戰車前進的步伐,確保它到達一個又一個新的目標;配置規范就是潤滑油,有它在,戰車的各個部件才能精確地耦合運轉。配置管理對項目是如此重要,沒有它的保障,項目“戰車”便是一堆廢鐵。
軟件配置管理是保證軟件質量的關鍵,也是保證軟件產品交付的重要手段。在軟件企業中實施軟件配置管理不僅僅要項目經理和配置管理人員熟悉軟件配置管理,還應該對所有程序員進行軟件配置管理方面的培訓,因為軟件配置管理存在于軟件開發和維護的整個過程之中。程序員與配置管理人員應該在軟件的生命周期中積極配合,按照配置管理的規程開發和維護產品,才能很好的完成配置管理工作,為持續的軟件過程改進打好堅實的基礎。
參考文獻:
[1] Chuck Walrad,Darrel Strom. The Importance of Branching Models in SCM[J]. Computer, September 2002.
[2] 曹瑛.軟件配置管理淺析[J].電訊技術,2002,42(1).
[3] 系統分析師教.軟件配置管理,2001.
[4] 劉立軍.如何進行軟件配置管理.中國計算機報.