軟體組態管理

**軟體組態管理**（Software Configuration Management，簡稱：SCM），又稱**軟體形態管理**、或**軟體建構管理**，簡稱**軟體形管**。界定軟體的組成項目，對每個項目變更進行管控（版本控制），並維護不同項目之間的版本關聯，以使軟體在開發過程中任一時間的內容都可以被追溯，包括某幾個具有重要意義的數個組合，例如某一次交付給客戶的軟體內容。

SCM 的簡稱已經擴展為「原始碼組態管理」（source configuration management）以及「軟體修改及組態管理」 
（software change and configuration management）。不過，「組態」一詞一般還是會指系統管理員才能進行的變更。

## 目的

SCM 的目標一般包括以下幾項：

* 組態識別：識別組態、組態項目和基準。
* 組態控管：匯入變更控管流程。該流程通常由變更控制委員會來執行，其主要的職責是核准或拒絕有悖任何基準的所有變更請求。
* 組態狀態報告：記錄和呈報與開發過程狀態相關的所有必要資訊。
* 組態稽核：確保這些組態包含所有預期內容，且備有完整的規定檔案（包括要求、結構規範和使用者手冊）。
* 建構管理：管理用於建構的流程和工具。
* 流程管理：確保遵循企業組織的開發流程。
* 環境管理：管理承載系統的軟硬體。
* 團隊合作：促進流程中團隊彼此間的互動。
* 缺陷追蹤：確保可溯及每個缺陷的源頭。

隨著雲端運算的引進，SCM 工具的用途有時已互相整合。SCM 工具本身轉變為虛擬設施，可以在虛擬機上執行並儲存狀態和版本。這些工具能管理並為雲端虛擬資源（包括虛擬裝置、儲存裝置和軟體套件）建立模型。如今，因為現在已經可以動態的啟用虛擬伺服器和相關資源，SCM 管理人員的角色和職責已經與開發人員合併。

## 歷史

軟體組態管理（SCM）在運算領域的應用可以追溯至 1950 年代。當時，原先用於硬體開發和生產控制的 CM（組態管理）概念，轉而應用於軟體開發。早期的軟體都有實體，如打孔卡、打孔帶、磁帶和其他媒介。第一個軟體組態管理需經由人為操作。隨著程式語言及其複雜性不斷進展，涉及組態管理和其他方法的軟體工程由於時程、預算和品質等因素而成為主要隱憂。多年來的實踐經驗，為軟體開發流程和工具提供定義並奠定基礎。而這些工具最終成為管理軟體變更的系統。業界普遍的做法，即是採用開放或專有方式（如修訂控制系統）來作為解決方案。隨著電腦的使用越來越普及，可處理大型任務範疇的系統也因應而生，包括需求管理、設計替代方案、品質控管等。隨後，工具均遵循企業組織的守則，如軟體工程學院建立的能力成熟度模型（CMM）。

## 參見

* 版本控制
* 變更管理 (工程)
* 軟體生命週期管理
* 版本控制軟體比較
* 連續組態自動化
* 版本控制軟體列表
* 基礎架構即代碼

## 參考文獻

## 延伸閱讀

* 828-2012 IEEE Standard for Configuration Management in Systems and Software Engineering. 2012. ISBN 978-0-7381-7232-3. doi:10.1109/IEEESTD.2012.6170935.
* Aiello, R. (2010). _Configuration Management Best Practices: Practical Methods that Work in the Real World_ (1st ed.). Addison-Wesley. ISBN 0-321-68586-5.
* Babich, W.A. (1986). _Software Configuration Management, Coordination for Team Productivity_. 1st edition. Boston: Addison-Wesley
* Berczuk, Appleton; (2003). _Software Configuration Management Patterns: Effective TeamWork, Practical Integration_ (1st ed.). Addison-Wesley. ISBN 0-201-74117-2.
* Bersoff, E.H. (1997). Elements of Software Configuration Management. _IEEE Computer Society Press, Los Alamitos, CA,_ 1-32
* Dennis, A., Wixom, B.H. & Tegarden, D. (2002). _System Analysis & Design: An Object-Oriented Approach with UML._ Hoboken, New York: John Wiley & Sons, Inc.
* Department of Defense, USA (2001). _Military Handbook: Configuration management guidance (rev. A) (MIL-HDBK-61A)_. Retrieved January 5, 2010, from http://www.everyspec.com/MIL-HDBK/MIL-HDBK-0001-0099/MIL-HDBK-61\_11531/ （頁面存檔備份，存於網際網路檔案館）
* Futrell, R.T. _et al._ (2002). _Quality Software Project Management._ 1st edition. Prentice-Hall.
* International Organization for Standardization (2003). _ISO 10007: Quality management systems – Guidelines for configuration management_.
* Saeki M. (2003). Embedding Metrics into Information Systems Development Methods: An Application of Method Engineering Technique. _CAiSE 2003,_ 374–389.
* Scott, J.A. & Nisse, D. (2001). Software configuration management. In: _Guide to Software Engineering Body of Knowledge_. Retrieved January 5, 2010, from http://www.computer.org/portal/web/swebok/htmlformat （頁面存檔備份，存於網際網路檔案館）
* Paul M. Duvall, Steve Matyas, and Andrew Glover (2007). _Continuous Integration: Improving Software Quality and Reducing Risk_. (1st ed.). Addison-Wesley Professional. ISBN 0-321-33638-0.

## 外部連結

* SCM and ISO 9001 by Robert Bamford and William Deibler, SSQC （頁面存檔備份，存於網際網路檔案館）
* Use Cases and Implementing Application Lifecycle Management （頁面存檔備份，存於網際網路檔案館）
* Parallel Development Strategies for Software Configuration Management （頁面存檔備份，存於網際網路檔案館）