Meta-Object Facility (MOF) とは
Meta-Object Facility(MOF)は、
[Object Management Group]](OMG)によって標準化された、モデル駆動工学(Model-Driven Engineering, MDE)のための重要な規格です。モデルの厳密な定義と操作を可能にするメタモデリングアーキテクチャを提供します。OMGの公式ページは[OMG's MetaObject Facilityです。
MOFの概要
MOFは、
統一モデリング言語(UML)を起源としています。OMGがUMLの標準化を進める中で、モデルの正確な定義を行うための手段としてMOFが導入されました。MOFは4層のアーキテクチャで構成されており、それぞれの層が異なる抽象レベルのモデルを扱います。
MOFの階層構造
理解を深めるために、一番下のM1層から説明します。
M1層: ここでは、通常のUMLモデルなど、ソフトウェア設計で一般的に使用されるモデルが定義されます。UMLのクラスやインターフェースなどがこれに該当します。
M0層: M1層で定義されたモデルのインスタンスがM0層に相当します。例えば、UMLクラスから実行時に生成されるオブジェクトなどが含まれます。
M2層: 「UML自身の構造の定義」がここで行われます。これはメタモデルと呼ばれることも多く、UMLのクラスが持つ属性やメソッド、クラス間の関係性(アソシエーションやアグリゲーションなど)の定義を含みます。M2層を使用することで、UMLモデルの構造を厳密に記述できます。
M3層: 最上位のM3層はメタ-
メタモデルと呼ばれ、MOF自身の構造を定義します。つまり、MOFを使ってMOF自身を定義するのです。
MOFの役割と特徴
MOFの導入により、OMGはUMLだけでなく、CWMやSysMLといった他のモデルも定義できるようになりました。MOFは「閉じた」メタモデリングアーキテクチャであり、M3モデルがM3モデル自身で定義されるため、外部の定義を必要としません。また、「厳密な」メタモデリングアーキテクチャでもあり、各層のモデル要素は上位層のモデル定義に正確に対応します。
MOFは、言語やデータの構造の
抽象構文を定義する手段を提供します。これは、プログラミング言語の構文定義における拡張バッカス・ナウア記法(
EBNF)の役割と似ています。MOFは
メタモデル定義のための
ドメイン固有言語(DSL)として捉えることができ、
EBNFが構文定義のためのDSLであるのと同様です。
MOFは、
オブジェクト指向のクラスを用いて構造を定義しますが、ここで用いるクラスは`MOF::Classes`であり、UMLの`UML::Classes`とは異なります。これにより、メタレベルでの概念とその構造を定義します。しかし、MOFで定義されるモデルはUMLのような
オブジェクト指向型に限定されず、リレーショナルモデルやペトリネットなどの
メタモデルも定義できます。
MOFの関連仕様
2008年2月現在、OMGは2種類のMOFを定義しています。
EMOF (Essential MOF): 基本的なMOF。
CMOF (Complete MOF): より完全なMOF。
また、Eclipse Modeling Framework (EMF) で定義されているECoreという派生仕様は、ほぼOMGのEMOFに相当します。
その他の関連仕様として、モデルの制約やクエリを定義するための形式言語であるOCL(
Object Constraint Language)があります。さらに、MOFベースのモデル変換を記述するQVT(Query/View/Transformation)も重要な標準です。
MOFの国際標準規格
MOFは以下の国際標準規格として規定されています。
ISO/IEC 19502:2005:Information technology -- Meta Object Facility (MOF)
技術的詳細
MOFをサポートする標準としてXML Metadata Interchange (XMI) があります。XMIを使用することで、M3/M2/M1層のモデルをXMLベースの形式で交換できます。さらに、MOFでは、モデルやメタモデルの生成・操作手段としてJava言語インターフェースであるJMI(Java Metadata Interface)を定義しています。かつてはCORBA IDLインターフェースも定義されていましたが、MOF2.0以降では削除されています。
参考文献
以下に、MOFに関する参考文献をいくつか示します。
Ralph Sobek,
MOF Specifications Documents
Jean Bezivin, "On the Unification Power of Models," Software and System Modeling (SoSym) 4(2):171--188.
Johannes Ernst, "What is meta-modeling?"
Johannes Ernst, "What are the differences between a vocabulary, a taxonomy, a thesaurus, an ontology, and a meta-model?"
Anna Gerber and Kerry Raymond, "MOF to EMF and Back Again."
関連項目
メタモデル
ドメイン固有言語
モデル駆動型アーキテクチャ
モデル駆動工学
統一モデリング言語
CWM
XMI
QVT
プラットフォーム独立モデル (PIM)
プラットフォーム特化モデル (PSM)
メタデータ
外部リンク
Object Management Group
*
OMG's MetaObject Facility