配置管理

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

**簡介**
配置管理可以應用在系統的整個生命週期中，可以得到有關性能、功能及實體屬性的資訊，並且可以管理。配置管理目的是要驗證系統的行為符合預期，在專案的生命週期中識別這些特性，並且在文件中有詳細的描述，以支持驗證的結果。配置管理有助於系統資訊及系統變更的有序管理，目的是為了以下的好處：提昇性能、可靠度或是maintainability、延長產品壽命、降低成本、減少風險及責任、修正缺陷。實施配置管理有些成本，不過此成本小於後續因可能發生意故而產生的成本。
配置管理強調元件、子系統及系統之間機能的關係，目的是為有效的控管系統的變更。配置管理有助於驗證所提出的變更已用系統性的方式進行考慮，以減少其負面影響。可以用標準化、系統化的方式來提出變更，並且進行評估及實現，以確保其一致性，而提出的變更會以預期對整個系統的影響來進行評估。配置管理會驗證變更是依規定的方式進行修改，而且零件及系統的文件可以反應其實際的配置。完整的配置計劃可以提供在零件、子系統及系統的基礎上，儲存、追蹤及更新所有資料的所有規定。
結構化的配置管理計劃可以確保文件（例如需求、設計、測試及允收文件）準確，和實際的實體設計一致。若沒有配置管理，在在許多情形下，文件存在，但和對應的實體不一致。員工及承包商常常為了要進行變更，反而要修改文件以符合實際的實體。這種逆向工程過程在人力以及資源上都是浪費，若使用配置管理，可以減少甚至消除這類的成本。

**歷史**
配置管理是在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）、Integrated Logistics Support（ILS）、能力成熟度模型集成（CMMI）、ISO 9000、PRINCE2專案管理方法、信息及相關技術控制目標（COBIT）、信息技術基礎架構庫（ITIL）、產品生命週期（PLM）及軟體生命週期管理（ALM）。其中許多的機能和模式已重新定義了配置管理，從傳統的整體分析變成技術管理。有些則將配置管理視為類似圖書館活動的事務，將變更控制及變更管理視為一個獨立或是個別的學科。

**簡介**
配置管理是用系統化的方式管理變更的實務，目的是讓系統在不同時間都可以維持一致性。在配置管理中包括了政策、程序、技巧以及工具，在系統變化的過程中，可以管理變更、評估要進行的變更、追蹤變更狀態、維持系統資產及支持文件。配置管理方案以及計劃會提供技術以及管理的方向，實現要成功開發及維護複雜系統需要的相關程序、功能、服務、工具、流程以及資源。配置管理中可以進行program management，在包括運作及維護在內的整個生命週期中，追蹤各項的需求。不可避免的，在過程中會有需求以及設計的變化，這些變化需要核可，也需要記錄，以針對系統狀態有準確的紀錄。理想上，配置管理會在整個系統發展生命週期中使用。有時會將配置管理和資產管理混淆，資產管理是盤點手上的資產。配置管理和資產管理的差異是前者不會由財務的角度來進行管理，而是以系統要提供的服務才進行管理。
在MIL–HDBK–61A中提到，針對硬體及軟體的配置管理包括五項不同的知識領域（discipline）
，在ANSI/EIA-649中，這些知識領域是建立形態基準及進行標準應變管理時的政策及程序。IEEE 12207程序IEEE 12207.2中也有這些活動，另外再加上「發布管理及交貨」（Release management and delivery）。
五個知識領域如下：
# 配置管理計劃及管理：配置管理專案的正式文件及計劃，包括有以下項目： 
#* 人員
#* 權責及資源
#* 訓練要求
#* 管理會議的指南，其中包括流程及工具的定義
#* 基準流程
#* 配置控制及配置狀態統計（Configuration Status Accounting）
#* 命名規範
#* 審核和審查
#* 分包商/供應商的配置管理需求
# 配置識別（Configuration Identification、CI）：包括設定基準以及維持基準，基準是定義系統及子系統架構、組件，以及在任何時間點的開發。這是識別、紀錄以及追蹤系統中變更項目的基礎，應用在設計、開發、測試及交付階段。配置識別會漸進式的建立系統以及其配置項目（CI）的配置狀態統計（Configuration Status Accounting）的目前狀態，並且在系統生命週期中（開發、生產、佈署以及運行維護）持續的維護，一直到系統停用為止。
# 配置控制（Configuration Control）：包括變更請求以及變更提案的評估，後續是否核可等。此程序包括系統設計、硬體、軟體、韌體、文件任何修改的控制程序。
# 配置狀態統計（Configuration Status Accounting）：包括紀錄配置項目說明（例如硬體、軟體、韌體），、產出報告、並且紀錄在設計或製造階段，所有不符合基準的部分。若懷疑有問題，透過基準配置驗證以及核可修改的驗證即可縮小確認範圍。
# 配置驗證及審核：硬體和軟體的獨立驗證，目的是要針對性能需求、商業或軍事標準、性能基準、產品基準，評估是否符合。在核可架構進入架構基線之前，會先進行基礎配置審核（Configuration audits），會驗證系統及子系統的組態文件是否符合機能以及實體的性能特點。

**軟體**
軟件配置管理（SCM）是在開發軟體專案時，處理變更的方式。此作法會在專案的不同階段落識別軟體的機能屬性及實體屬性，用系統化的方式來控制變更，目的是為了是在開發週期中維持軟體完整並且可追蹤。
軟件配置管理流程會定義需要追蹤變更的項目，並且可以確認最後發布的軟體是否有原先預期發布時應該有的更新內容。若要實施軟件配置管理流程，需在軟體專案中識別出以下四個流程：
#配置識別（Configuration Identification）
#配置控制（Configuration Control）
#配置狀態統計（Configuration status accounting）
#配置審核（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（Secure Configuration Management），, 需要配合IT平臺及產品的性能、功能及實體屬性，以及其環境，來決定系統需要的適當安全特點以及保障。例如，同樣是防火牆，在組織網際網路邊界上的防火牆，其組態需求就和在公司內部的防火牆不同。

**維護系統**
配置管理也可以用在維護系統上，可以瞭解複雜資產的情形，以最低的成本達到最高程度的可用性，其目的是要確保不會因資產（或資產的零件）運作超過計劃壽命或是運作在品質水準以下，造成運作的中斷。
在軍事上，這類活動稱為任務準備（mission readiness），要定義可用資產以及要執行的任務。例如航空母艦上的飛機是否配備了用於地面支援的炸彈或防禦用的導彈。

**作業系統配置管理**
配置管理可以用來維護操作系統的配置檔案。這類的系統中包括Ansible、Bcfg2、CFEngine、Chef、Otter、Puppet、Quattor、SaltStack、Terraform、Pulumi及Vagrant。許多這類的系統用Infrastructure as Code（IaC）來定義組態以及維護組態
配置管理的Promise theory（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-  isbn = 978-0-7381-7232-3
*