
メタオブジェクト機能(MOF)は、モデル駆動型エンジニアリングのためのオブジェクト管理グループ(OMG)標準です。その目的は、CORBAアーキテクチャ内のエンティティの型システムと、それらの型を作成および操作するためのインターフェースセットを提供することです。MOFは、ドメイン駆動型ソフトウェア設計およびオブジェクト指向モデリングに使用できます。[ 1 ]: 15
MOFは、 CORBAアーキテクチャで使用するための型システム、オブジェクトの構造、意味、動作を定義できるスキーマのセット、およびこれらのスキーマを作成、保存、操作できるCORBAインターフェースのセットを提供するために開発されました。[ 2 ]
MOFは4層アーキテクチャとして設計されています。最上位層にはメタメタモデル(M3層)があり、このM3モデルはMOFがメタモデル(M2モデル)を構築するために使用する言語です。第2層のMOFモデルの最も代表的な例はUMLメタモデル、つまりUML自体を記述するモデルです。これらのM2モデルはM1層の要素、すなわちM1モデルを記述します。例えば、UMLで記述されたモデルなどがこれに該当します。最後の層はM0層、またはデータ層です。これは現実世界のオブジェクトを記述するために使用されます。
MOFはM3モデルを超えて、モデルとメタモデルの作成および操作方法を記述するCORBAインターフェースを定義することによって、それらの操作を記述します。MOF M3モデルとUML構造モデルには類似点があるため、MOFメタモデルは通常、UMLクラス図としてモデル化されます。
MOF仕様モデル(M3、M2、またはM1レイヤー)からW3C XMLおよびXSDへの変換は、XMI(ISO/IEC 19503)仕様で規定されています。XMIは、モデルのためのXMLベースの交換フォーマットです。[ 1 ]: xi
MOFからJavaへの変換には、JavaコミュニティプロセスによるJavaメタデータ交換(JMI)仕様がある。[ 1 ]: xi
また、CORBA IDLインターフェースの自動生成を容易にするための仕様も提供している。[ 1 ]: 3
MOF は閉じたメタモデリング アーキテクチャであり、それ自体に準拠する M3 モデルを定義します。MOF は厳密なメタモデリング アーキテクチャを可能にし、各レイヤーのすべてのモデル要素は、上位レイヤーのモデル要素と厳密に対応します。MOF は、言語またはデータの構造、つまり抽象構文を定義する手段のみを提供します。メタモデルを定義するために、MOF はプログラミング言語の文法を定義するためにEBNF が果たす役割とまったく同じ役割を果たします。MOF はメタモデルを定義するために使用されるドメイン固有言語(DSL) であり、EBNF が文法を定義するための DSL であるのと同様です。EBNF と同様に、MOF も MOF で定義できます。
要するに、MOFはオブジェクト指向でおなじみのMOF::Classes ( UML::Classesとは異なります)という概念を用いて、メタレイヤー上で概念(モデル要素)を定義します。MOFは、オブジェクト指向メタモデル(例えばUML)だけでなく、非オブジェクト指向メタモデル(例えばペトリネットやWebサービスメタモデル)の定義にも使用できます。
2006年5月現在、OMGはMOFの遵守事項として2つのポイントを定めている。
2006年6月、OMGは3番目のバリアントであるSMOF(Semantic MOF)に関する提案依頼書を発行した。
Eclipse Modeling Frameworkで定義されているバリアントECoreは、OMGのEMOFとほぼ一致している。
関連する別の標準規格としてOCLがあり、これは述語論理の観点からモデル制約を定義するために使用できる形式言語を記述しています。
QVTは、MOFベースのモデルを照会、表示、変換するための手段を提供する非常に重要な標準規格であり、2008年に承認されました。詳細については、「モデル変換言語」を参照してください。
MOFは国際規格です。
MOFは、例えばドメイン固有言語の抽象構文をモデル化するために、メタモデルを作成するための標準規格と見なすことができます。KermetaはMOFの拡張機能であり、EMOFメタモデルに実行可能なアクションを付加することを可能にするため、DSLの操作的意味論をモデル化し、それに対応するインタプリタを容易に取得することができます。
JMIは、MOFモデルを操作するためのJava APIを定義しています。
OMGのMOFは、共通情報モデル(CIM)インフラストラクチャ仕様バージョン2.5.0のセクション6で分散管理タスクフォース(DMTF)によって定義された管理オブジェクトフォーマット(MOF)と混同してはならない。 [ 3 ]