元對象機制

元對象機制 （ Meta - Object Facility ， 簡稱MOF ） 起源於統一建模語言 （ UML ） 。 對象管理機構 （ Object Management Group | OMG ） 需要一種元模型結構來定義UML 。 MOF被設計爲4層次的結構 。 位於頂部的是元元模型層 ， 即M3層 。 M3模型是MOF建立元模型 （ 被稱爲M2模型 ） 的語言 。 M2模型最明顯的例子是UML元模型 ， 該模型描述UML 。 M2模型描述M1層以及M1層的要素 ， 例如 ， UML模型 。 最後一層是M0層或數據層 。 它描述真實世界的物體 。 除了M3模型 ， MOF還提供創建 、 操作模型 、 元模型的方法 ， 通過定義CORBA接口描述這些操作 。 由於MOF M3模型和UML結構模型相似 ， MOF M3元模型通常建模爲UML類圖 。 MOF的支持標準是XMI ， 它定義一種基於XML的M3 、 M2 、 M1層模型交換格式 。 MOF是一個封閉元模型結構 ， 它定義描述自身的M3模型 。 MOF是嚴格的元模型架構 ， 每一層的每個模型元素都嚴格對應的上層模型元素 。 MOF只提供定義結構或語言 、 數據的抽象語法的方法 。 定義元模型時 ， MOF如同EBNF層定義編程語言語法 。 MOF是用於定義元模型的域特定語言 （ DSL ） ， 就像EBNF定義語法的DSL 。 同樣 ， MOF也可以在自身定義 。 MOF使用MOF:: Classes ( 不要與UML:: Classes混淆 ) 在元層上定義概念 （ 模型元素 ） ， 如同衆所周知的面向對象 。 MOF可用於定義面向對象元模型 （ 如UML ） 以及非面向對象元模型 （ 如Petri網或Web服務元模型 ） 。 截至2006年5月 ， OMG定義了兩種類型的MOF ： EMOF （ 基本MOF ） CMOF （ 完全MOF ） 2006年6月 ， 徵求建議書定義了第三種: SMOF （ 語義MOF ） 。 Eclipse Modeling Framework中定義的ECore或多或少向OMG的EMOF靠攏 。 另一個相關的標準是OCL ， 一種用謂詞邏輯定義模型的限制條件的正式語言 。 一個非常重要的新標準是QVT ， 描述查詢 ， 視圖和基於MOF的模型變換的方法 （ 詳情參見模型轉換語言章節 ） 。 MOF現在是一個國際標準 ： ISO / IEC 19502:2005 Information technology — Meta Object Facility ( MOF ) MOF可視爲寫元模型的標準 ， 例如 ， 建模領域專用語言的抽象語法 。 Kermeta擴展MOF, 可以執行附在EMOF元模型的動作 ， 從而可以建模DSL操作語義並很容易得到對它的解釋 。 JMI定義Java API, 控制MOF模型. OMG的MOF不能與託管對象格式 （ Managed Object Format ） 混爲一談 ， 託管對象格式由分佈式管理任務組 （ DMTF ） 在公共信息模型 （ CIM ） 基礎規範 的第3節中定義 。