组态管理

**組態管理**（Configuration management、CM）也稱為**配置管理**，是系統工程的一部分，應用在專案的完整生命週期中，使產品的效能、功能以及實體屬性和其需求、設計、操作資訊可以保持一致。 組態管理已普遍使用在軍事工程組織中，在複雜系統（例如武器系統、軍用車輛及資訊系統）的系統發展生命周期中管理其變更。在軍事以外的應用中，組態管理也用在 IT 服務管理中，像是資訊科技基礎架構庫、土木工程的領域模型，或是其他像是道路、橋梁、運河、水壩及建築物的專案中。

## 簡介

組態管理可以應用在系統的整個生命週期中，可以得到有關效能、機能及實體屬性的資訊，並且可以管理。組態管理目的是要驗證系統的行為符合預期，在專案的生命週期中識別這些特性，並且在檔案中有詳細的描述，以支援驗證的結果。組態管理有助於系統資訊及系統變更的有序管理，目的是為了以下的好處：提昇效能、可靠度或是可維護性、延長產品壽命、降低成本、減少風險及責任、修正缺陷。實施組態管理有些成本，不過此成本小於後續因可能發生意故而產生的成本。

組態管理強調元件、子系統及系統之間機能的關係，目的是為有效的控管系統的變更。組態管理有助於驗證所提出的變更已用系統性的方式進行考慮，以減少其負面影響。可以用標準化、系統化的方式來提出變更，並且進行評估及實現，以確保其一致性，而提出的變更會以預期對整個系統的影響來進行評估。組態管理會驗證變更是依規定的方式進行修改，而且零件及系統的檔案可以反應其實際的組態。完整的組態計劃可以提供在零件、子系統及系統的基礎上，儲存、追蹤及更新所有資料的所有規定。

結構化的組態管理計劃可以確保檔案（例如需求、設計、測試及允收檔案）準確，和實際的實體設計一致。若沒有組態管理，在在許多情形下，檔案存在，但和對應的實體不一致。員工及承包商常常為了要進行變更，反而要修改檔案以符合實際的實體。這種逆向工程過程在人力以及資源上都是浪費，若使用組態管理，可以減少甚至消除這類的成本。

## 歷史

組態管理是在 1950 年代起源於美國國防部，是針對硬體裝置的技術管理規則，目前已幾乎是所有產業中的標準作法。1960 年代時美國國防部發展一系列的美國軍用標準，稱為 480 系列（例如 MIL-STD-480, MIL-STD-481 and MIL-STD-483，這些標準在 1970 年代陸續的發行），此時組態管理也有了的技術規則。480 系列在 1991 年合併為單一的標準，稱為 MIL–STD–973，後來為了減少軍用標準的數量，被 MIL–HDBK–61 取代。之後，組態管理也漸漸演變為廣為使用，受到各領域的認可的標準 ANSI–EIA–649–1998。目前組態管理已使用在許多的組織及機構中，組態管理的概念包括系統工程（SE）、綜合後勤支援（ILS）、能力成熟度模型整合（CMMI）、ISO 9000、PRINCE2 專案管理方法、資訊及相關技術控制目標（COBIT）、資訊科技基礎架構庫（ITIL）、產品生命周期（PLM）及軟體生命週期管理（ALM）。其中許多的機能和模式已重新定義了組態管理，從傳統的整體分析變成技術管理。有些則將組態管理視為類似圖書館活動的事務，將變更控制及變更管理視為一個獨立或是個別的學科。

## 簡介

組態管理是用系統化的方式管理變更的實務，目的是讓系統在不同時間都可以維持一致性。在組態管理中包括了政策、程式、技巧以及工具，在系統變化的過程中，可以管理變更、評估要進行的變更、追蹤變更狀態、維持系統資產及支援檔案。組態管理方案以及計劃會提供技術以及管理的方向，實現要成功開發及維護複雜系統需要的相關程式、功能、服務、工具、流程以及資源。組態管理中可以進行計劃管理，在包括運作及維護在內的整個生命週期中，追蹤各項的需求。不可避免的，在過程中會有需求以及設計的變化，這些變化需要核可，也需要記錄，以針對系統狀態有準確的紀錄。理想上，組態管理會在整個系統發展生命周期中使用。有時會將組態管理和資產管理混淆，資產管理是盤點手上的資產。組態管理和資產管理的差異是前者不會由財務的角度來進行管理，而是以系統要提供的服務才進行管理。

在 MIL–HDBK–61A 中提到，針對硬體及軟體的組態管理包括五項不同的知識領域（discipline）
，在 ANSI/EIA-649 中，這些知識領域是建立形態基準及進行標準應變管理時的政策及程式。IEEE 12207 程式 IEEE 12207.2 中也有這些活動，另外再加上「發布管理及交貨」（Release management and delivery）。
五個知識領域如下：

1. 組態管理計劃及管理：組態管理專案的正式檔案及計劃，包括有以下項目：
  * 人員
  * 權責及資源
  * 訓練要求
  * 管理會議的指南，其中包括流程及工具的定義
  * 基準流程
  * 組態控制及組態狀態統計（Configuration Status Accounting）
  * 命名規範
  * 審核和審查
  * 分包商 / 供應商的組態管理需求
2. 組態識別（Configuration Identification、CI）：包括設定基準以及維持基準，基準是定義系統及子系統架構、組件，以及在任何時間點的開發。這是識別、紀錄以及追蹤系統中變更項目的基礎，應用在設計、開發、測試及交付階段。組態識別會漸進式的建立系統以及其組態項目（CI）的組態狀態統計（Configuration Status Accounting）的目前狀態，並且在系統生命週期中（開發、生產、布署以及運行維護）持續的維護，一直到系統停用為止。
3. 組態控制（Configuration Control）：包括變更請求以及變更提案的評估，後續是否核可等。此程式包括系統設計、硬體、軟體、韌體、檔案任何修改的控制程式。
4. 組態狀態統計（Configuration Status Accounting）：包括紀錄組態項目說明（例如硬體、軟體、韌體），、產出報告、並且紀錄在設計或製造階段，所有不符合基準的部分。若懷疑有問題，透過基準組態驗證以及核可修改的驗證即可縮小確認範圍。
5. 組態驗證及審核：硬體和軟體的獨立驗證，目的是要針對效能需求、商業或軍事標準、效能基準、產品基準，評估是否符合。在核可架構進入架構基線之前，會先進行基礎組態審核（Configuration audits），會驗證系統及子系統的組態檔案是否符合機能以及實體的效能特點。

## 軟體

軟體組態管理（SCM）是在開發軟體專案時，處理變更的方式。此作法會在專案的不同階段落識別軟體的機能屬性及實體屬性，用系統化的方式來控制變更，目的是為了是在開發週期中維持軟體完整並且可追蹤。

軟體組態管理流程會定義需要追蹤變更的項目，並且可以確認最後發布的軟體是否有原先預期發布時應該有的更新內容。若要實施軟體組態管理流程，需在軟體專案中識別出以下四個流程：

1. 組態識別（Configuration Identification）
2. 組態控制（Configuration Control）
3. 組態狀態統計（Configuration status accounting）
4. 組態審核（Configuration audits）

其名詞及定義會隨標準而不同，不過在本質上是一様的。

* 組態識別（Configuration identification）是識別組態項目每一個層面的屬性。組態項目（configuration item）是一個終端客戶會使用的產品（硬體或／及軟體）。屬性會紀錄在組態檔案中，並且設定形態基準。設定形態基準的好處是當屬性變更時，要透過正式的控制管理流程才能變動。
* 組態變更控制（Configuration change control）是要修改組態項目屬性，或是重新訂形態基準時需要進行的流程以及核可。
* 組態狀態統計（Configuration status accounting）是指可以紀錄每一個組態項目的形態基準，並且提供任何時間時的對應形態基準。
* 組態審核（Configuration audits）會分為機能組態審核（function configuration audit）及實體組態審核（physical configuration audit）。可以在交付時進行，也可以在任何變更要實施時進行。機能組態審核確保組態項目可以達到其機能屬性以及效能屬性，實體組態審核則確認組態項目的安裝方式符合細節設計檔案中的需求。

### 組態管理資料庫

資訊技術基礎架構資料庫（ITIL）有規範用組態管理系統（Configuration management system、CMS）或組態管理資料庫（CMDB）作為產業上組態管理的最佳實務。組態管理資料庫用來追蹤組態項目，並且追蹤彼此之間的相關性，此處的組態項目是指在企業內值得追蹤並且管理的項目，包括電腦、軟體授權、電腦機架、網路裝置、儲存裝置，甚至是這些裝置的零件等。

組態管理系統／組態管理資料庫的好處是可以進行像是根本原因分析、影響分析、變更管理等機能，也可以評估目前狀態，作為未來策略開發的根據。這類系統（多半會分類為資訊科技服務管理系統）的例子有 FreshService、ServiceNow 及 Samanage。

### 資訊保障

在資訊保障領域中，組態管理是在資訊系統的生命週期中，透過硬體、軟體、韌體、檔案、測試、測試治具、測試檔案的變更管理，來管理系統的資料安全特性及保障。。資訊保障的組態管理，有時也會簡稱 SCM（**S**ecure **C**onfiguration **M**anagement），, 需要配合 IT 平台及產品的效能、功能及實體屬性，以及其環境，來決定系統需要的適當安全特點以及保障。例如，同樣是防火牆，在組織網際網路邊界上的防火牆，其組態需求就和在公司內部的防火牆不同。

## 維護系統

組態管理也可以用在維護系統上，可以瞭解複雜資產的情形，以最低的成本達到最高程度的可用性，其目的是要確保不會因資產（或資產的零件）運作超過計劃壽命或是運作在品質水準以下，造成運作的中斷。

在軍事上，這類活動稱為任務準備（mission readiness），要定義可用資產以及要執行的任務。例如航空母艦上的飛機是否配備了用於地面支援的炸彈或防禦用的導彈。

### 作業系統組態管理

組態管理可以用來維護作業系統的組態檔案。這類的系統中包括 Ansible、Bcfg2、CFEngine、Chef、Otter、Puppet、Quattor、SaltStack、Terraform、Pulumi 及 Vagrant。許多這類的系統用基礎架構即代碼（IaC）來定義組態以及維護組態

組態管理的承諾理論（Promise theory）是由 Mark Burgess 開發的，實際的實現是在現今 CFEngine 軟體，可以做實時的修復，也可以做預防性的保養。

### 預防性維護

預防性維護常用在企業資產維護、維修及企業資產管理系統系統中，其核心元素是瞭解資產及其重要組成當前的狀態。

像飛機、船舶、工業裝置等複雜的資料，要在其中的各種零件是可服務的狀態下才能正常運作。可用性（serviceability）會用許多的資訊定義，包括零件購置後、安裝後、維修後的使用情形，以及其他的限制因素。需要瞭解這些元件還可用多久，以往這類的工作需要大量的人力，一直到有對應的軟體後才改善此一問題。

### 預測性維護

許多裝置都會有電子感測器蒐集資料在運行過程進行狀態監測。資料會在裝置上或遠端的電腦上分析，評估目前的可用性，並且設法預測未來的可用性，會使用預測未來潛在失效的演算法，依以往現場的失效案例，以及建模的結果來分析，並且提供提前維護的建議，這稱為預測性維護。

可以有準確且及時的可用性資訊，對組態管理可以提供運營價值至關重要，少了這些資訊可能就會造成一些限制。擷取操作資訊，並且分發給各支援組織，本身就形成一個產業。

隨著原始裝置製造商（OEM）提供的軟體越來越多，這些數據的使用也越來越多。這些的目的是讓運營商可以保證其可用性，也讓資產管理的內容更加複雜，但原始裝置製造商仍有責任確保其產品的可用性。

## 標準

有許多標準支援（或是包括）組態管理，例如以下的這些標準：

* ANSI/EIA-649-1998 National Consensus Standard for Configuration Management
* EIA-649-A 2004 National Consensus Standard for Configuration Management
* ANSI EIA-649-C 2019 Configuration Management Standard
* ISO 10007 Quality management systems – Guidelines for configuration management
* 美國聯邦標準 1037C
* GEIA Standard 836–2002 Configuration Management Data Exchange and Interoperability
* IEEE 829 Standard for Software Test Documentation
* 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.
* {{le|STANAG 4427 on CM|STANAG 4427 on CM|NATO STANAG 4427 Configuration Management in Systems Life Cycle Management]] including
* NATO ACMP 2000 Policy on Configuration Management
* NATO ACMP 2009 Guidance on Configuration Management
* NATO ACMP 2100 Configuration Management Contractual Requirements
* CMMI CMMI for Development, Version 1.2 Configuration Management
* CMII-100E CMII Standard for Enterprise Configuration Management
* Extended List of Configuration Management & Related Standards
* ITIL Service Asset and Configuration Management
* ISO 20000:1 2011& 2018 Service Management System.
* ECSS-M-ST-40C Rev.1 Configuration and information management

## 指南

* IEEE 828-2012 Standard for Configuration Management in Systems and Software Engineering，2013 年 3 月 16 日發布。
* ISO 10007:2017 Quality management – Guidelines for configuration management
* NATO ACMP-2009 – Guidance on configuration management
* ANSI/EIA-632-1998 Processes for Engineering a System
* ANSI/EIA-649-1998 National Consensus Standard for Configuration Management
* GEIA-HB-649 – Implementation Guide for Configuration Management
* EIA-836 Consensus Standard for Configuration Management Data Exchange and Interoperability
* MIL-HDBK-61B Configuration Management Guidance
* MIL-STD-3046 Configuration Management
* Defense Acquisition Guidebook, elements of CM at 4.3.7 SE Processes, attributes of CM at 5.1.7 Lifecycle support
* Systems Engineering Fundamentals, Chapter 10 Configuration Management
* Configuration Management Plan United States Dept. of Defense Acquisition document

## 建築

近來已經將組態管理用在大型的建築計劃中，多半是非常複雜，有許多的細節及變更需要記錄的建築。像聯邦公路管理局（Federal Highway Administration）等建築機構已將組態管理用於其基礎設施項目中。有建築相關的組態管理工具，可以管理變更通知和工程釋疑單（RFI），目的是確保專案不會超過時程以及預算。在建築完成後，這些軟體也可以儲存一些維護及修改時需要的資料。在一個美國聯邦運輸管理局（FTA）贊助的計劃中，利用比較洛杉磯縣大都會運輸局（LACMTA）紅線第一階段及第二階段，53 億美元的鐵路建設案，來評估組態管理的效果。研究的結果是，使用組態管理對專案有正面效果。

## 相關條目

* 粒度組態自動化
* 相依性
* 軟體工程主題列表
* 可互換零件
* 基礎架構即代碼
* 連續組態自動化
* 系統組態
* 系統管理

## 參考資料