摘要:軟件配置管理是一套規范、高效的軟件開發管理方法,它能提供工作空間管理、并行開發支持、過程管理、權限控制、變更管理等一系列的管理能力,是提高軟件質量的重要手段。軟件配置管理可以幫助開發團隊對軟件開發過程進行有效的變更控制,它有機地把其它支持活動結合起來,形成一個整體,相互促進,相互影響,有力地保證了質量體系的實施。本文主要對軟件配置管理的流程設計與實施進行探討,并結合具體案例,分析了進行軟件配置管理的實施策略。
關鍵詞:軟件配置管理;流程設計;實施策略
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)24-6732-02
Discusses the Software Disposition Management the Flow Design and the Implementation
PENG Wen-bin
(Computer Teaches Education Ministry, Guangzhou Business Vocational School, Guangzhou 510163, China)
Abstract: The software disposition management is set of standards, the highly effective software development management, it can provide the working space management, the parallel development support, the process management, the jurisdiction control, the change management and so on a series of managed capacity, is improves the software quality the important means. The software disposition management may help the development team to carry on the effective change control to the software development process, it organically unifies other support, forms a whole, promotes mutually, the mutual influence, has guaranteed quality system's implementation powerfully. This article mainly carries on the discussion to the software disposition management's flow design and the implementation, and unifies the concrete case, analyzed has carried on the software disposition management the implementation strategy.
Key words: software disposition management; flow design; implementation strategy
1 軟件配置管理概述
現代軟件項目規模越來越大,涉及的人員越來越多,軟件開發過程中經常面臨一些難以解決的問題,例如,團隊開發過程中如何保證產品版本的正確性;怎樣在早先發布產品版本的基礎上進行重構;如何解決開發策略的統一與特殊版本需求之間的矛盾等,有效的軟件配置管理能夠充分解決上述問題,提高軟件的開發效率。軟件配置管理(Software Configuration Management,SCM)其實并不是一個新的概念,許多專家學者早已從不同角度和不同側面對它進行了論述,本文也是嘗試著從軟件工程的角度出發對其進行簡述。
1.1 軟件配置管理的內涵
在軟件開發過程中,會逐步累積出構成軟件產品的程序,包括源代碼、中間代碼和執行程序、各類文檔及數據,這些所有能夠形成軟件組成的元素被稱為軟件配置,軟件組成中的每一個元素稱為軟件配置中的一個配置項,配置項是軟件配置管理的對象。
《GB/T11457(1995)軟件工程術語》中的定義為:軟件配置管理是標識和確定系統中配置項的過程,在系統整個生存周期內控制這些項的投放和更動,記錄并報告配置的狀態和更動要求,驗證配置項的完整性和正確性。軟件配置管理活動主要包括標識軟件工作產品、配置控制、配置狀態統計和配置審核,四項活動貫穿于軟件開發活動的始終,覆蓋開發活動的各個環節。
1.2 軟件配置管理的意義
要開發出滿足用戶需求的、高質量的軟件產品,關鍵就在于建立起一個穩定、可控、可重用的軟件流程(Software Process)。而要進行軟件流程改進就需要有明確的、量化的對現狀的分析和對未來的預期,而進行度量的前提和基礎就是軟件配置管理。
與一般制造業相類似,軟件流程就像是一條流水線,在它的各個環節上都會有“零部件”產生,它們就是我們所熟悉的程序、相關文檔以及數據,這些正是軟件配置管理的對象——軟件配置項。它們不僅是大量人力物力投入的結晶,更是開發經驗的積累,是軟件組織最寶貴的財富[1]。因此,軟件配置管理的重要作用之一就是要全面的管理保存各個配置項,監控各配置項的狀態,并向項目經理及相關的人員報告,從而實現對軟件過程的控制。
2 軟件配置管理的流程設計
配置管理流程是軟件開發機構進行配置管理的依據,其規定了開發過程中需要做哪些配置管理方面的工作。制訂配置管理流程的方法是:通過對目標機構的調查、評估,定義現有的配置管理流程,由配置管理技術專家對它進一步分析,結合常規的配置管理方法制訂出新的流程,然后,依據選定的配置管理工具的功能,將新流程中可自動化的環節交由配置管理工具處理,其它環節由新制訂的配置管理規范進行控制。下面簡單介紹軟件配置管理的主要功能、量化的軟件配置管理流程以及常見的配置管理工具。
2.1 軟件配置管理的主要功能
軟件配置管理的主要任務是在項目的整個生存周期內建立和維護軟件項目產品的完整性。在IEEE標準729-1983中,軟件配置管理的主要功能包括如下幾項:配置表示;版本控制;變更控制;變更狀態統計;變更審計;構建;過程管理;小組協作[2]。
一個理想的配置管理系統應該提供以上所有功能,但是在實現中,這種情況幾乎是不可能的。實際上,一個系統若能在某種程度上提供上述部分功能,便可以稱之為配置管理系統。因為從本質上來說,配置管理系統是一種功能的綜合,而不是一種標準的體系。同時,在企業實施軟件配置管理所涉及到的活動,不僅僅是要采用相應配置管理系統來支持配置管理,還需要制定一個正確的配置管理解決方案。只有在正確的配置管理方案的指導下,并輔以有效的配置管理工具的支持,才能夠真正的做好配置管理,從而達到對軟件過程的管理和改善,保證軟件產品的高質量。
2.2 量化的軟件配置管理流程
軟件量化是對軟件開發項目、過程及其產品進行數據定義、收集以及分析的持續性定量化過程,目的在于對此加以理解、預測、評估、控制和改善。通過軟件度量可以改進軟件開發過程,促進項目成功,開發高質量的軟件產品。因此,利用量化的軟件配置管理,可以明確規定數值的版本管理,開發人員能按照規定標識開發過程中的各產品,進行統一管理,提高工作效率和并行開發的安全性。同時,利用量化管理提供的各項數據,幫助項目主管了解項目進展與風險,提高管理水平,并可根據開發人員在對配置管理支持工作的數據中了解開發人員的內容,優化人員安排,從而提高工程效率,降低工程成本。
2.3 常見的配置管理工具
CVS(Concurrent Versions System)、VSS(ViSua1 Sourcesafe)和Clear Case是版本控制工具中比較典型的三種工具。其中,CVS是開放源代碼世界的經典,是一個功能比較全面的現代版本控制系統,可以在任何操作系統和網絡環境下運行;VSS是Microsoft公司開發的、基于Windows平臺的、面向小型開發項目的版本控制系統,依靠服務器上的共享目錄提供服務;ClearCase是目前世界上最好的功能強大的商用版本控制系統,提供了全面的配置管理功能,而且無需軟件開發者改變他們現有的環境、開發工具和工作方式,在大型項目的開發管理中表現優異。
3 軟件配置管理的實施策略
如何有效協調同一個軟件產品的維護和開發工作,使之有序、高效,這是軟件配置管理應該解決的問題,主要依賴于配置管理的策略和配置管理工具對并行開發、自動化合并、項目管理等功能的支持。
3.1 軟件項目的并行開發策略
所謂并行開發,是指由兩個或兩個以上的個人或團隊針對同一個文件或整個軟件系統進行同步的變更,并行開發應具備對并行變更內容進行合并的能力。一般來說,軟件項目有以下三種并行開發策略:
第一,每個開發人員一個開發分支/開發流。在這種方式下,每個開發人員擁有一個屬于自己的開發流,優點是開發人員的環境是穩定的,開發人員決定什么時候提交結果,什么時候看到其他人的結果;缺點是每個開發人員處于彼此隔離狀態,集成工作量較大。
第二,多個開發人員共享一個開發分支。在這種方式下,多個開發人員共享一個開發分支。此方式比較適于彼此之間需要緊密協作的開發場合,如果使用動態視圖,立即可以自動看到其他人的修改;如果使用靜態視圖,通過更新也可以看到其他人的修改。
第三,所有開發人員共享一個分支。這種方式是所有開發人員使用一個且僅使用一個分支/流,也就是集成流。這種方式是最大化集成的集中體現,適合整個項目組的各個成員之間需要緊密協作的場合下,一般在項目組規模較小(少于8人),并行修改很小的場合使用。
3.2 配置項標識與庫結構策略
配置項由配置管理員在配置管理計劃中確定,進行配置標識的基本策略是:邏輯上是一個整體,標識規則保持一致,方便檢索,易于記憶。配置項的標識包括配置項名稱、配置項版本標識兩個方面。
在確定了配置項之后,就可以確定配置庫的目錄結構了。配置庫的目錄結構直接關系到配置管理的工作量和使用的方便性,所以需要根據自己的需要確定一個合理的結構。配置庫大結構可以采用二級庫:開發庫、受控庫+知識庫[3]的形式。開發庫和受控庫下的目錄結構基本相同,但開發庫比受控庫多了一個屬于開發人員使用的工作空間。知識庫在項目結束后,把最終代碼、開發文檔、業務相關資料與項目人員的經驗體會等資源收錄其中。
在確定配置管理庫受控庫下目錄結構時,有兩種可選的產品目錄結構的方式:一種是按照開發階段劃分,在產品類型下再劃分諸如設計文檔、代碼等目錄;另一種方式是按照產品類型劃分,例如首先是文檔、代碼,然后在其下按照開發階段劃分。這兩種目錄結構,可以根據軟件項目開發的實際情況來進行相應的選擇。
3.3 B公司電子商務系統的配置管理案例分析
B公司電子商務系統的項目需求是:除了在線交易外,還要通過網站將企業與客戶結合起來,將企業和合作伙伴結合起來;通過網絡的快速反應,為客戶提供更好的服務,促進企業的業務發展。
項目根據企業實際需要選擇并行版本系統CVS作為版本控制工具。系統由主服務器端、客戶端、備份服務器端、測試服務器端四個部分組成。主服務器端負責維護一個CVS倉庫。
及時充分的信息交流是每一個軟件開發項目的基本需要,在該項目的配置過程中做了以下幾點:一是利用公司網站進行項目信息的發布,比如版本信息發布,整個項目都通過該網站來發布版本、人員信息等;二是變更控制委員會和開發小組的例行會議,用于企業決策執行和跟蹤、技術升級、需求變化等重大變更的交流。
基線[4]是軟件開發過程中最重要的里程碑,在本項目配置管理過程中,軟件企業根據自己的開發要求,主要關注開發過程中的階段基線,如表1所示。
在CVS中,用戶需要有一個用戶標識才能訪問CVS的倉庫,在此軟件開發過程中,采用Pserver服務器模式,既可以創建與服務器的用戶相對應的用戶帳號,也可以創建專用于CVS的用戶標識,所有的用戶名稱映射都使用倉庫的CVSROOT模塊中的Passwd文件,由配置管理員完成。
B公司電子商務系統的軟件配置管理方案,針對中小型軟件企業和開發項目特點,用CVS作為主要的配置管理工具,有效的實現了版本控制、變更管理、發布管理等主要的配置管理功能,較好地滿足了B公司的項目需求。
4 結論
實施軟件配置管理可以解決許多軟件開發企業目前迫切需要解決的問題,在軟件開發的整個生命周期過程中都能起到積極的促進作用。但是實施軟件配置管理也是一個非常復雜的過程,必須對配置管理的內容有足夠的了解,同時分析各種工具,采用適合該軟件項目實際開發流程的配置管理工具,才能實施一個成功的軟件配置管理過程。
參考文獻:
[1] Mette A,Hass J.配置管理原理與實踐[M].龔波,黃慧萍,王高翔,譯.北京:清華大學出版社,2003.
[2] 李奔.PMT軟件配置管理文集》[EB/OL].http://www.8848software.com/scmchina/doc/pmtscmrpt.pdf.
[3] 徐曉春.軟件配置管理[M].北京:清華大學出版社,2002.
[4] 于宏霞,陳凱,白英彩.基線技術在軟件配置管理過程中的應用[J].計算機應用與軟件,2006,23(2).