標籤: 暫無標籤

配置管理(Configuration Management,CM)是通過技術或行政手段對軟體產品及其開發過程和生命周期進行控制、規範的一系列措施。配置管理的目標是記錄軟體產品的演化過程,確保軟體開發者在軟體生命周期中各個階段都能得到精確的產品配置。

      配置管理過程是對處於不斷演化、完善過程中的軟體產品的管理過程。其最終目標是實現軟體產品的完整性、一致性、可控性,使產品極大程度地與用戶需求相吻合。它通過控制、記錄、追蹤對軟體的修改和每個修改生成的軟體組成部件來實現對軟體產品的管理功能。

      早在七十年代初期加利福利亞大學的Leon Presser教授就撰寫了一篇論文,提出控制變更和配置的概念,之後在1975年,他成立了一家名為SoftTool的公司,開發了自己的配置管理工具:CCC,這也是最早的配置管理工具之一。之後,隨著軟體開發規模的逐漸增大,越來越多的公司和團隊意識到了軟體配置管理的重要性,而相應的軟體配置管理工具也如雨後春筍一般,紛紛湧現,比較有代表性的有:Marc Rochkind的SCCS(Source Code Control System)和Walter Tichy的RCS(Revision Control System),這兩種工具對日後的配置管理工具的發展做出了重大的貢獻,目前絕大多數廣泛使用的配置管理工具基本上都是基於這兩者的設計思想和體系架構。

一、配置管理在軟體開發過程和項目管理過程中的作用

      隨著軟體系統的日益複雜化和用戶需求、軟體更新的頻繁化,配置管理逐漸成為軟體生命周期中的重要控制過程,在軟體開發過程中扮演著越來越來重要的角色。一個好的配置管理過程能覆蓋軟體開發和維護的各個方面,同時對軟體開過程的宏觀管理,即項目管理,也有重要的支持作用。良好的配置管理能使軟體開發過程有更好的可預測性,使軟體系統具有可重複性,使用戶和主管部門用軟體質量和開發小組有更強的信心。

      軟體配置管理的最終目標是管理軟體產品。由於軟體產品是在用戶不斷變化的需求驅動下不斷變化,為了保證對產品有效地進行控制和追蹤,配置管理過程不能僅僅對靜態的、成形的產品進行管理,而必須對動態的、成長的產品進行管理。由此可見,配置管理同軟體開發過程緊密相關。配置管理必須緊扣軟體開發過程的各個環節:管理用戶所提出的需求,監控其實施,確保用戶需求最終落實到產品的各個版本中去,並在產品發行和用戶支持等方面提供幫助,響應用戶新的需求,推動新的開發周期。通過配置管理過程的控制,用戶對軟體產品的需求如同普通產品的訂單一樣,遵循一個嚴格的流程,經過一條受控的生產流水線,最後形成產品,發售給相應用戶。從另一個角度看,在產品開發的不同階段通常有不同的任務,由不同的角色擔當,各個角色職責明確,涇渭分明,但同時又前後銜接,相互協調。

      好的配置管理過程有助於規範各個角色的行為,同時又為角色之間的任務傳遞提供無縫的接合,使整個開發團隊象一個交響樂隊一樣和諧而又錯雜地行進。正因為配置管理過程直接連接產品開發過程、開發人員和最終產品,這些都是項目主管人員所關注的重點,因此配置管理系統在軟體項目管理中也起著重要。配置管理過程演化出的控制、報告功能可幫助項目經理更好地了解項目的進度、開發人員的負荷、工作效率和產品質量狀況、交付日期等信息。同時配置管理過程所規範的工作流程和明確的分工有利於管理者應付開發人員流動的困境,使新的成員可以快速實現任務交接,盡量減少因人員流動而造成的損失。


二、配置管理的功能

      配置管理系統應該具備以下主要功能:

并行開發支持:因開發和維護的原因,要求能夠實現開發人員同時在同一個軟體模塊上工作,同時對同一個代碼部分作不同的修改,即使是跨地域分佈的開發團隊也能互不干擾,協同工作,而又不失去控制;
修訂版管理:跟蹤每一個變更的創造者、時間和原因,從而加快問題和缺陷的確定 ;
版本控制:能夠簡單、明確地重現軟體系統的任何一個歷史版本 ;
產品發布管理:管理、計劃軟體的變更,與軟體的發布計劃、預先定製好的生命周期或相關的質量過程保持一致;項目經理能夠隨時清晰地了解項目的狀態 ;
建立管理:基於軟體存儲庫的版本控制功能,實現建立(build)過程自動化 ;
過程式控制制:貫徹實施開發規範,包括訪問許可權控制、開發規則的實施等 ;
變更請求管理:跟蹤、管理開發過程中出現的缺陷(Defect)、功能增強請求(RFE)或任務(Task),加強溝通和協作,能夠隨時了解變更的狀態 ;
代碼共享:提供良好的存儲和訪問機制,開發人員可以共享各自的開發資源 ;

三、配置管理的流程

配置管理


圖17-1 配置管理流程圖

1、制定配置管理計劃


      配置管理員制定《配置管理計劃》,主要內容包括配置管理軟硬體資源、配置項計劃、基線計劃、交付計劃、備份計劃等。CCB審批該計劃。

2、配置庫管理
      配置管理員為項目創建配置庫,並給每個項目成員分配許可權。各項目成員根據自己的許可權操作配置庫。配置管理員定期維護配置庫,例如清楚垃圾文件、備份配置庫等。

3、版本控制
      在項目開發過程中,絕大部分的配置項都要經過多次的修改才能最終確定下來。對配置項的任何修改都將產生新的版本。由於我們不能保證新版本一定比老版本「好」,所以不能拋棄老版本。版本控制的目的是按照一定的規則保存配置項的所有版本,避免發生版本丟失或混淆等現象,並且可以快速準確地查找到配置項的任何版本。
      配置項的狀態有三種:「草稿」、「正式發布」和「正在修改」,本規程制定了配置項狀態變遷與版本號的規則。

4、變更控制
      在項目開發過程中,配置項發生變更幾乎是不可避免的。變更控制的目的就是為了防止配置項被隨意修改而導致混亂。
      修改處於「草稿」狀態的配置項不算是「變更」,無需CCB的批准,修改者按照版本控制規則執行即可。
      當配置項的狀態成為「正式發布」,或者被「凍結」后,此時任何人都不能隨意修改,必須依據「申請-審批-執行變更-再評審-結束」的規則執行。

5、配置審計
      為了保證所有人員(包括項目成員、配置管理員和CCB)都遵守配置管理規範,質量保證人員要定期審計配置管理工作。配置審計是一種「過程質量檢查」活動,是質量保證人員的工作職責之一。

四、配置管理的實施

      實施配置管理系統,一般的步驟和需要考慮的問題如下:

     規劃、調整網路開發環境

      一個規劃良好的開發環境,是實施配置管理系統的前提。在此階段我們要對配置管理系統做出規劃,主要考慮以下問題:

     * 網路的帶寬、拓撲結構
      *伺服器的選擇、命名規範
      *存儲區的定位
      *開發人員及組的命名規約等


      設計配置管理庫

      根據項目開發的要求,設計開發資源的存儲模式,良好的存儲模式有利於減輕管理上的負擔,增強配置管理庫的訪問性能,同時便於控制訪問許可權,保護軟體資產。

      定義配置管理系統的角色

      在此階段,我們需要確定與配置管理相關的所有角色,包括他們的相應的活動。在開發過程中,一個開發人員可能兼任多種角色,但一項任務在同一時刻只能由一個角色來執行。

      一般配置管理中的角色主要包括:

       項目經理:項目經理在配置管理方面的職責是依靠配置管理員、系統管理員和系統體系結構設計人員的幫助,制定項目的組織結構和配置管理策略。這些工作包括:定製開發子系統,定製訪問控制,制定常用策略,制定集成里程碑,以及進行系統集成;


      配置管理員:配置管理員的職責是根據項目經理制定的開發組織結構和策略,實施、維護配置管理的環境。其主要職責如下:創建配置管理庫,對存儲庫進行日常備份和恢復,維護配置管理環境,及管理配置管理相關的用戶;
      軟體開發人員:軟體開發人員依據項目的開發和配置管理策略,創建、修改和測試開發工件;
      集成人員:對軟體進行歸併,形成相應的基線或發布版本 ;
      QA人員:需要對軟體配置管理有較深的認識,其主要工作是跟蹤當前項目的狀態,測試,報告錯誤,並驗證其修復結果;

      制定配置管理流程

      這是配置管理實施的一個重要階段,其主要目的是根據項目開發的需要,制定相應的配置管理流程,以更好地支持開發,主要活動包括:

      定製并行開發策略:合理的并行開發策略應該具有以下特點:協調項目的複雜性和需求,統一創建分支類型和元數據,為開發過程中的變更集成制定有效的規範,適時反映開發過程中方法和需求的變化
發布版本管理:軟體開發過程中的一個關鍵活動是提??發布版本,我們一般將其稱為穩定基線。一個穩定基線代表新開發活動的開始,而一系列定製良好的活動之後又會產生一個新的穩定基線。有效地利用此項功能,在項目開發過程中可以自始至終管理、跟蹤工件版本間的關聯。

      相關人員的培訓

     一般來講,實施配置管理系統,相關人員需要接受以下培訓:

      管理員培訓:針對配置管理員,主要學習配置管理工具管理相關內容
      開發人員培訓:針對開發人員,主要學習配置管理工具與開發相關的常用操作
      管理流程培訓:針對全體人員,目的是了解配置管理策略和流程,以及如何與開發管理、項目管理相結合

五、配置管理經驗談

      圍繞配置管理,世界一些致力於軟體工程研究的公司在深入理解ISO 9000的基礎上, 推出了各種符合ISO 9000配置管理標準的工具軟體,如INTERSOLV公司的PVCS,Rational公司的Clear Case等。這些配置管理工具面向軟體規範化、工程化、自動化的需要,幫助開發團隊提高科學管理水平,從而提高工程效率,降低工程成本。現以PVCS為例,結合我們的實際經驗,談談我們實施配置管理的益處:

1. 節約費用

      (1) 縮短開發周期

      利用PVCS的Version Manager對程序資源進行版本管理和跟蹤,建立公司的代碼知識庫,保存開發過程中每一過程版本,這樣大大提高了代碼的重用率,還便於同時維護多個版本和進行新版本的開發,防止系統崩潰,最大限度地共享代碼。同時項目管理人員可以通過Version Manager查看項目開發日誌,測試人員可以根據開發日誌和不同版本對軟體進行測試,工程人員可以從Version Manager上得到不同的運行版本,並且Version Manager 可以安裝在Web Server供外地施工人員存取最新版本,無需開發人員親臨現場。

      利用Tracker組建開發團體之間的問題跟蹤及消息通迅,通過其Notify模塊與電子郵件結合起來大大加強了開發團體之間的溝通,Reporter模塊可對發現的問題進行整理、以報表方式分類報出,作為開發的指導。

      以上為PVCS的兩個主要模塊,科學地應用可以大大提高開發效率,避免了代碼覆蓋、溝通不夠、開發無序的混亂局面,如果利用了公司原有的知識庫,則更能提高工作效率,縮短開發周期。

      (2) 減少施工費用

      利用PVCS進行軟體配置管理后,建立開發管理規範,把版本管理檔案掛接在公司內部的Web伺服器上,內部直接通過Netscape訪問Version Manager,工程人員通過遠程進入內部網,獲取所需的最新版本。開發人員無需下現場,現場工程人員通過對方系統管理員收集反饋意見,書面提交到公司內部開發組項目經理,開發組內部討論決定是否修改,並作出書面答覆。這樣做,可以同時響應多個項目點,防止開發人員分配到各個項目點、分散力量、人員不夠的毛病,同時節約大量的旅差費用。

2. 有利於知識庫的建立

      (1) 代碼對象庫

      軟體代碼是軟體開發人員腦力勞動的結晶,也是軟體公司的寶貴財富,長期開發過程中形成的各種代碼對象就像一個個零件坯一樣,是快速生成系統的組成部分。長期的一個事實是:一旦某個開發人員離開工作崗位,其原來所作的代碼便基本成為垃圾,無人過問。究其原因,就是沒有專門對各人的有用對象進行管理,把其使用範圍擴大到公司一級,進行規範化,加以說明和普及。Version Manager為對象管理提供了一個平台和倉庫,有利於建立公司級的代碼對象庫。

      (2) 業務及經驗庫

      通過PVCS Version Manager的註釋及Tracker,可形成完整的開發日誌及問題集合,以文字方式伴隨開發的整個過程,不依某個人的轉移而消失,有利於公司積累業務經驗,無論對版本整改或版本升級,都具有重要的指導作用。

3. 規範管理

      (1) 量化工作量考核

      傳統的開發管理中,工作量一直是難以估量的指標,靠開發人員自已把握,隨意性相當大;靠管理人員把握,主觀性又太強。採用PVCS管理后,開發人員每天下班前對修改的文件 Check In,其中記述當天修改細節描述,這些描述可以作為工作量的衡量指標。

      (2) 規範測試

      採用PVCS以後,測試有了實實在在的工作,測試工作人員根據每天的修改細節描述對每一天的工作做具體的測試,對測試人員也具有可考核性,這樣環環相扣,大大減少了其工作的隨意性。

      (3) 加強協調與溝通

      採用PVCS后,通過Version Manager文檔共享及其特定鎖機制、Tracker與電子郵件的集成,大大加強了項目成員之間的溝通,做到有問題及時發現、及時修改、及時通知,但又不額外增加很多的工作量。

六、配置管理的精髓

具體來講,配置管理包含如下內容:

上一篇[望遠鏡]    下一篇 [透鏡]

相關評論

同義詞:暫無同義詞