配置管理漫漫談之SCM基本知識

毫無疑問,配置管理是所有軟件公司,無論是低成熟度公司還是高成熟度公司都有的管理行爲,儘管執行的力度和質量不一致。
 
【配置管理起源】
早在七十年代初期加利福利亞大學的Leon Presser教授就撰寫了一篇論文,提出控制變更和配置的概念,之後在1975年,他成立了一家名爲SoftTool的公司,開發了自己的配置管理工具:CCC,這也是最早的配置管理工具之一。之後,隨着軟件開發規模的逐漸增大,越來越多的公司和團隊意識到了軟件配置管理的重要性,而相應的軟件配置管理工具也如雨後春筍一般,紛紛涌現,比較有代表性的有:Marc Rochkind的SCCS(Source Code Control System)和Walter Tichy的RCS(Revision Control System),這兩種工具對日後的配置管理工具的發展做出了重大的貢獻,目前絕大多數廣泛使用的配置管理工具基本上都是基於這兩者的設計思想和體系架構。
 
【爲什麼要做配置管理?】
隨着軟件規模越來越大,需求越來越多,變更越來越頻發,缺少對開發過程輸出物的合理的標識和管理已經是很多項目失敗的重要原因。
 
【什麼是配置管理?】
在整個項目生命週期內對所選定的中間工作產品、產品組件以及產品進行唯一標識、受控存儲、變更控制和狀態報告以及實施配置審計進行檢查。
配置管理週期:整個項目生命週期
配置管理範圍:中間工作產品、產品組件、產品
配置管理活動:標識、存儲、變更控制、狀態報告、配置審計
 
【配置管理基本概念】
  • 工作產品:項目生命週期中產生任何工作成果、包括文檔、代碼等
  • 產品:交付給客戶的工作產品
  •  
  • 配置項:配置管理的對象,一個或者多個工作產品的組合
  •  
  • 基準:經過正式評審和認可的一組配置項,它們作爲進一步開發的基礎,並且只有經過正式的變更控制流程才能被更改
  • 基線:包含了若干不同類型基準對應版本的集合,但在部分組織中認爲基線等同於基準,因此一般可視爲兩者相同
  •  
  • SCM:Software Configuration Management,軟件配置管理
  • CME:Configuration Management Engineer,配置管理工程師
  • CCB:Change Control Board,變更控制委員會
  • QA:Quality Assurance,質量保證工程師
  • PM:Project Manager,項目經理
 
【配置管理功能】
  • 並行開發支持:因開發和維護的原因,要求能夠實現開發人員同時在同一個軟件模塊上工作,同時對同一個代碼部分作不同的修改,即使是跨地域分佈的開發團隊也能互不干擾,協同工作,而又不失去控制  
  • 版本控制:跟蹤每一個變更的創造者、時間和原因,從而加快問題和缺陷的確定,能夠簡單、明確地重現軟件系統的任何一個歷史版本
  • 產品發佈管理:管理、計劃軟件的變更,與軟件的發佈計劃、預先定製好的生命週期或相關的質量過程保持一致;項目經理能夠隨時清晰地瞭解項目的狀態 
  • 建立管理:基於軟件存儲庫的版本控制功能,實現建立(build)過程自動化 
  • 過程控制:貫徹實施開發規範,包括訪問權限控制、開發規則的實施等
  • 變更請求管理:跟蹤、管理開發過程中出現的缺陷(Defect)、功能增強請求(RFE)或任務(Task),加強溝通和協作,能夠隨時瞭解變更的狀態  
  • 代碼共享:提供良好的存儲和訪問機制,開發人員可以共享各自的開發資源
 
【配置管理涉及角色及職責】
  • CME:制定配置管理計劃,建立並維護項目配置庫,實施基線建立/基線變更/產品發佈,協調/實施配置審計,維護CM工作記錄,發佈配置狀態報告;
  • CCB:批准基線的建立和變更,批准從基線區建立產品;CCB可分多級,每級CCB負責一種或者多種類型的基線,在項目策劃時確定CCB成員和職責;一般來說,最高一級的CCB成員由PM,QA,測試負責人組成,必要時由高級管理者和客戶代表參與
  • 項目經理:參與識別配置項,向CME提供接受配置管理的工作產品,參與創建基線和產品,負責產品的發佈
  • 項目組/項目成員:向CME提供接受配置管理的工作產品,配合項目/組織CM的工作要求完成相應的活動
  • QA:審計和評審SCM活動和工作產品
 
【配置管理的三種層次】
第一層次、存檔控制:對於一次性使用的工作產品如會議記錄、項目報告等,在配置庫中存放工作的電子版本
第二層次、版本控制:對於需要維護的管理性和支持性工作產品如代碼、項目計劃等,在配置庫中存放每個工作產品的每個生效副本
第三層次、基準控制:在版本控制的基礎上,通過標識、變更控制、狀態記錄和審計,確保基準的完整性、一致性和正確性
 
這三種層次在日常配置管理中同時存在。
 
【配置庫結構層次】
配置庫一般由動態庫(開發庫、受控庫)、靜態庫(產品庫)組成。
開發庫:項目成員的工作環境,保存正處於開發/變更的工作產品(文檔/源代碼)。開發庫內的工作產品處於存檔控制/版本控制之下,其信息可能進行頻繁的修改
受控庫:保存開發過程中某個階段工作結束時釋放的階段產品,即配置項的基準版本。受控庫的配置項處於基準控制下
產品庫:保存對內/對外發布的產品,等待外部測試組測試,或者等待用戶安裝和驗收,產品庫的配置項處於基準控制下
 
對於配置庫更具體的構成請參見筆者的文章《配置管理漫漫談之典型配置庫結構》 。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章