軟體配置管理
出自 MBA智库百科(https://wiki.mbalib.com/)
軟體配置管理(Software configuration management,SCM)
目錄 |
軟體配置管理(SCM)是指在開發過程中各階段,管理電腦程式演變的學科,它作為軟體工程的關鍵元素。已經成為軟體開發和維護的重要組成部分。SCM提供了結構化的、有序化的、產品化的管理軟體工程的方法。它涵蓋了軟體生命周期的所有領域並影響所有數據和過程。
配置管理是對產品進行標識、存儲和控制,以維護其完整性、可追溯性以及正確性的學科。
配置管理的任務如下圖所示:
(1)定義配置項:軟體配置項(SCI)即軟體配置管理的對象。軟體開發過程中產生的所有信息構成軟體配置,它們是:代碼(源代碼、目標代碼)以及數據結構(內部數據、外部數據)、文檔(技術文檔、管理文檔、需方文檔)、報告,其中每一項稱為配置項,軟體配置項是配置管理的基本單位。同時,開發過程中使用的環境,如操作系統、各種支撐軟體、配置管理工具,也可納入軟體配置管理範圍。
(2)標識配置項:正確標識軟體配置項對整個管理活動非常重要,對軟體開發過程中的所有軟體項目賦予唯一的標識符,便於對其進行狀態控制和管理。
配置標識包括:文檔標識、代碼標識、運行文件標識。
典型的命名規則是RUP法。
(3)定義基線:基線標志著軟體開發過程一個階段的結束,任一軟體配置項,一旦形成文檔並審議通過,即成為基線。基本的作用在於把各階段的工作劃分得更明確,使本來連續的工作在這些點上斷開,以便檢驗和肯定階段成果。
(4)定義軟體配置庫:軟體配置庫內容因涵蓋開發的全過程,應包括如表所示的軟體項:
表 軟體開發過程與軟體配置庫
模型、文檔庫 | 代碼庫 | 運行庫 |
軟體分析設計 | 軟體實現 | 軟體運行 |
軟體分析設計模型 | 源代碼 | 可執行代碼 |
軟體分析設計文檔 | 目標代碼 | 使用數據 |
測試數據 | ||
軟體開發環境 | 軟體運行環境 |
基線技術將項目實施配置管理的存儲庫分為3類:開發庫、受控庫、產品庫。
①開發庫:存放在開發過程中按照要求生成的各種技術文檔、源代碼、可執行代碼和使用的數據,為開發人員的活動提供支持。
② 受控庫:存放基線產品即項目轉階段經評審通過的和已經批准的軟體工作產品和軟體產品。
③產品庫:存放項目正式交付用戶的最終產品和最終運行環境。
(5)控制配置:配置控制的定義是為了明確配置管理在具體實現時所執行的配置規程,主要包括入庫控制和變更控制。
(6)配置審計:包含了物理和功能上的審計。包括以下活動:① 驗證每個軟體配置項的正確性、一致性、完備性、有效性、可追蹤性;② 在軟體生存期內應定期配置審計工作;③定期進行軟體備份,應保證備份介質的安全性和可用性。
(7)配置狀態報告:提供軟體開發過程的歷史記錄,內容包括配置管理項的現行狀態及何時因何故發生了何事(入庫、更動)。配置管理人員應定期或在需要時提交配置狀態報告。配置狀態報告包含了整個軟體生命周期中對基線所有變更的可追蹤性。
- 節約費用:縮短開發周期、減少施工費用
- 利於知識庫的建立:代碼對象庫、業務及經驗庫
- 規範管理:量化工作量考核、規範測試、加強協調與溝通。
1.規劃、調整網路開發環境
一個規劃良好的開發環境,是實施配置管理系統的前提。此階段要對配置管理系統做出規劃,主要考慮以下問題:
- 網路的帶寬、拓撲結構
- 伺服器的選擇、命名規範
- 存儲區的定位
- 開發人員及組的命名規約等。
2.設計配置管理庫
根據項目開發的要求,設計開發資源的存儲模式,良好的存儲模式有利於減輕管理上的負擔,增強配置管理庫的訪問性能,同時便於控制訪問許可權,保護軟體資產。
3.定義配置管理系統的角色
需要確定與配置管理相關的所有角色,包括他們的相應的活動。在開發過程中,一個開發人員可能兼任多種角色,但一項任務在同一時刻只能由一個角色來執行。
一般配置管理中的角色主要包括:
- 配置管理員
- 軟體開發人員
- 集成人員
- QA人員
4.制定配置管理流程
配置管理實施的一個重要階段,主要目的是根據項目開發的需要,制定相應的配置管理流程,以更好地支持開發,主要活動包括:
- 定製並行開發策略。合理的並行開發策略應該具有以下特點:協調項目的複雜性和需求,統一創建分支類型和元數據,為開發過程中的變更集成制定有效的規範,適時反映開發過程中方法和需求的變化:
- 發佈版本管理。軟體開發過程中的一個關鍵活動是提取工件的相關版本,以形成軟體系統的階段版本或發佈版本,一般將其稱為穩定基線。一個穩定基線代表新開發活動的開始,而一系列定製良好的活動之後又會產生一個新的穩定基線。有效地利用此項功能,在項目開發過程中可以至始至終管理、跟蹤部件版本間的關聯。
5.相關人員的培訓
實施配置管理系統,相關人員需要接受培訓:
- 管理員培訓:針對配置管理員,主要學習配置管理工具管理相關內容:
- 開發人員培訓:針對開發人員,主要學習配置管理工具與開發相關的常用操作
- 管理流程培訓:針對全體人員,目的是瞭解配置管理策略和流程,以及如何與開發管理、項目管理相結合。
能力成熟度集成模型(Capability Maturity Model Integration)是由美國卡耐基·梅隆大學的軟體工程研究所(SEI)組織開發,並於2002年發佈的一種規範、實用的途徑來管理軟體過程的模型.CMMI通過指導軟體開發人員的活動來改進軟體過程,以達到軟體過程可復用性、可定量管理、可有效控制的目的.軟體配置管理是CMMI可重覆級的一個關鍵過程域(Key Process Area,KPA),其目的是在整個項目的軟體生命周期中,保持軟體產品的完整性和可追蹤性,這包含了對改變的控制和所有能影響到改變的軟體因素的管理.作為過程實現、過程優化的一部分,配置管理是實現軟體過程的基本保證,它還是基於重用的軟體開發的管理手段,所以成為軟體過程管理的核心.CMMI模型清晰地描述了SCM,並說明瞭SCM 的目的和所要達到的目標,具體描述了某級成熟度下軟體過程在該方面所應達到的一組目標和實現這些目標的一組關鍵實踐(Key Pradice).這些關鍵實踐被劃分為5類,分別為完成該組目標所需的承諾、執行能力、執行的活動、度量分析以及驗證.使企業在實施軟體配置管理時能知道到底要做什麼,團隊的配置管理現狀如何評估,在哪些方面還可以進行改進等問題能得到具體的答案。
案例一:配置管理在軟體企業中的應用[1]
軟體配置管理,對從事軟體的人來說, 並不陌生。要想真正做到實施好配置管理,對於軟體配置管理的意義及其重要性有必要進行認識和理解。軟體配置管理是軟體項目管理的重要內容,也是保證軟體質量的重要手段。它能夠對軟體開發過程進行有效管理和控制, 目的是實現軟體產品的完整性、一致性、可控性,使產品極大程度地與用戶需求相吻合 它能夠控制、記錄、追蹤對軟體的修改並形成規範文檔,方便日後維護和升級, 更重要的是能夠保護代碼資源,積累軟體財富,提高軟體重用率。
一、軟體配置管理存在的問題
很多軟體企業在日常的開發工作中遇到的問題都是因缺少規範的管理造成的。
而發生這些問題需要我們花費很大的精力與時間來處理,而且有很多是重覆的問題,有的是不必要的麻煩。
1.文檔和代碼管理不善。
我們知道開發一項軟體產品, 其代碼的可重用性相當高,但如果沒有良好的配置管理流程,軟體復用的效率將大幅降低, 比如對於復用的代碼進行了必要的修改或改進,卻只能通過手工將變更傳遞給所有復用該軟體的項目,效率之低可想而知。另外開發過程形成的文檔和代碼等缺乏統一管理, 隨意的保存往往會因為硬體故障或人員的離職而消失, 而各個開發人員編寫的代碼的風格迥異, 編碼和設計脫節,也往往會導致重覆開發、難以維護。
2.項目的進度狀況不明確
軟體工程思想指出越早發現缺陷和風險,採取相應措施的代價越小。然而由於缺乏配置管理的支持,部門主管及項目經理無法確切得知各個開發人員的具體工作,項目進展隨意性很大,不能適時適度管理。問題往往會集中到項目里程碑時出現,開發人員為在期限內完成任務,只能敷衍了事,容忍部分缺陷存在,給後期施工留下隱患,造成無休止的維護。
3.並行開發的手段缺乏
在開發工作中,經常會出現並行開發的情況,並行開發能夠有效提高開發效率。例如:一個項目可能在開發新版本的同時維護前一版本,或者需要針對不同客戶進行定製修改。但並行開發在分支及合併時往往會衍生出很多麻煩,如果沒有配置管理工具的支持,進行並行開發將十分困難,往往會造成修改過的bug 重覆出現或者若幹人進行相同的工作, 產生不必要的浪費,這樣也會對開發的管理及代碼的質量帶來影響。
4.測試工作開展的不規範
國內很多企業已經認識到配置管理和軟體測試的重要性,缺乏合理管理的軟體測試只是形式主義。傳統開發模式的弊端使得測試工作無法起到測試應有的作用,測試結果無法量化更無法考核。開發人員將精力耗費在如何應付測試,而測試人員單凳主觀意願進行測試, 走走過場,使得這一環節形同虛設, 當然就無法對以後的開發工作起指導作用。
二、軟體配置管理在企業中的應用
我國目前的軟體行業主要還是由中小型團隊組成,相對應國家水平存在著嚴重的開發過程混亂,缺乏有效的過程管理手段,而軟體配置管理是一套規範、高效的軟體開發管理方法,同時也是提高軟體質量的重要手段。配置管理由於其本身實施的便利性、工具的支持性以及與其他過程域良好的連接性,正符合企業的管理需求。軟體配置管理可以幫助開發團隊對軟體開發過程進行有效的變更控制,高效地開發高質量的軟體,從而達到提高軟體生產質量這一根本任務,它有機地把其他支持活動結合起來, 形成一個整體, 相互促進,相互影響,配置管理為了實現控制變更, 高效、有序的存放、查找和利用軟體開發信息, 為達到這一目的, 首先我們需要完成以下幾個主要功能域:配置標識、版本控制、變更管理、配置審核和狀態報告。下麵本文就其中3個功能域進行闡述:
1.配置標識
軟體配置標識就是對每個軟體配置項的標識。 對一個軟體項目而言,它的配置項有以下內容:需求分析文檔、概要設計文檔、詳細設計文檔、源代碼、測試文檔、客戶文檔等。
而對這麼多需要存儲的重要的文檔和代碼,軟體配置管理工作的第一步就是建立一個安全、可靠的知識庫,用於保存開發過程中產生的軟體資產。在建好知識庫後,首先要明確項目生命周期內所產生的各類文檔和代碼,然後確定其名稱和標識規則。根據實際需要,將正式文檔、模型文件、源代碼等文件按照各自標識規則分門別類放入庫中, 而對於臨時文檔、編譯時產生的中間文件等,則不需將它們放入庫中。原則是保證配置管理工具檢索便利,讓項目組成員容易記住標識規則, 同時要確保組織一級的標識規則的一致性。
2.變更管理
在軟體配置管理中, 由於軟體的可變性,變更管理成為一個難點,並且變更涉及的範圍很廣,各種因素都會引起變更,如市場的變化、技術的進步、客戶對於項目認識的深入等等,都可能導致軟體開發過程中變更的提出。如果缺乏對於變更的有效的管理能力,紛至沓來的變更就會成為開發團隊的困擾。
實施高效的變更管理至少應該包括兩個部分:“定義合理的變更管理流程”、“採用自動化工具作為支持”。在具體的實踐中,變更管理的複雜程度與變更的具體類型有關。應該對變更進行分類和分層,既保證項目組成員有一定的自主權,又不會耽誤高層經理對關鍵問題的把握。通常變更管理的流程會涉及到變更提交、變更覆審、變更任務分配、變更結果驗證等一系列活動。
3.配置審核
配置審核包括配置管理活動審核和基線審核。配置管理活動審核用於確保項目組成員的所有配置管理活動,遵循已批准的軟體配置管理方針和規程,實施基線審核,要保證基線化軟體工作產品的完整性和一致性, 並且滿足其功能要求。基線的完整性可從以下幾個方面考慮:基線庫是否包括所有計劃納入的配置項?基線庫中配置項自身的內容是否完整? 此外, 對於代碼,要根據代碼清單檢查是否所有源文件都已存在於基線庫。同時,還要編譯所有的源文件, 檢查是否可產生最終產品 一致性主要考察需求與設計以及設計與代碼的一致關係, 尤其在有變更發生時,要檢查所有受影響的部分是否都做了相應的變更。審核發現的不符合項要進行記錄,並跟蹤直到解決。在實際操作過程中,一般認為審核是一種事後活動, 很容易被忽視。但是“事後”也是有相對性的,在項目初期審核發現的問題,對項目後期工作總是有指導和參考價值的。
軟體配置管理活動在整個開發活動中是一項支持性、保障性的工作,實施之前還應該對所有開發人員進行軟體配置管理方面的培訓。通過軟體配置管理的實施,除了可以給企業帶來效益, 還會對使用配置管理的每個人有所收益: 學習先進的軟體過程管理思想,培養良好的團隊合作精神,提高個人專業水平,增強自身的競爭力等。