Meta-Object Facility
MOFは統一モデリング言語 (UML) を起源としている。OMGがUMLの標準化を行った際に、モデルの厳密な定義を行う手段として、MOFを導入した。MOFは4階層のアーキテクチャとして設計されている。理解を容易にするために、M1層より説明しよう。M1層で定義されるモデルは、通常のUMLモデルなど、普通にソフトウェアの設計等で用いられるモデルである。UMLのクラスなどがここに含まれる。その下位に当たるM0 層は、M1層のインスタンスである。M1層のUMLクラスから実行時に生成される個々のインスタンス等がこれに該当する。上位のM2層は、「UML 自身の構造の定義」が含まれる(このM2層を指してメタモデルと呼ぶことが多い)。例えば、UMLのクラスには複数のフィールドやメソッドがあり、クラス間には様々な種類のリレーション(アソシエーションやアグリゲーション等)が存在している。これらは「UML自身の構造」の一部である。M2層を用いることで、このようなUMLモデルの構造の厳密な定義を行うことが可能になる。さらに、MOFの導入により、OMGはUML以外の(CWMやSysML等)のモデルを定義する手段を手に入れることにもなった。最上位のM3層は、メタ-メタモデルと呼ばれ、(UMLではなく)MOF自身の構造を定義する。
MOFとUMLは良く似ているため、MOFメタモデルは通常UMLのクラス図としてモデル化される。