Meta -Object Facility ( MOF , Meta-Object Facility ) je standard pro modelově řízený vývoj vyvinutý společností OMG [1] .
MOF pochází z UML . OMG potřeboval metamodelovací architekturu k definování UML. MOF je implementován jako čtyřvrstvá architektura. Jádrem celého projektu je meta-meta model M3 na špičkové úrovni. Definuje jazyk používaný MOF k vytváření metamodelů nazývaných modely M2 . Nejvýraznějším příkladem modelu MOF úrovně 2 je metamodel UML: model, který popisuje samotný UML. Tyto modely M2 popisují prvky vrstvy M1: modely M1. Mohou to být například modely napsané v UML. Poslední vrstvou je vrstva M0 neboli datová vrstva. Používá se k popisu objektů v reálném světě.
MOF má sloužit jako most mezi různými metamodely, protože je mocným rámcem pro jejich popis. Pokud jsou dva různé metamodely konformní s MOF (to znamená, že je lze popsat pomocí M3), pak všechny specifické modely (M1) na nich založené mohou být uloženy ve společném úložišti a společně zpracovány pomocí modelových transformací .
V rámci modelu M3 MOF popisuje nástroje pro vytváření a úpravu modelů a metamodelů tím, že definuje rozhraní CORBA , která tyto operace popisují.
MOF je uzavřená architektura metamodelování; definuje model M3, který je v souladu sám se sebou. MOF umožňuje přísnou architekturu meta-modelování, každý prvek modelu na každé vrstvě přesně odpovídá jednomu prvku modelu překrývající vrstvy. MOF poskytuje pouze prostředky k definování struktury nebo abstraktní syntaxe jazyka nebo dat. MOF hraje při definování metamodelu stejnou roli, jakou hraje Extended Backus-Naur Form (RBNF) při definování gramatiky programovacího jazyka. MOF je doménově specifický programovací jazyk (DLL) a používá se k definování metamodelu, stejně jako RBNF je DLL k definování gramatik. Stejně jako RBNF lze MOF definovat v rámci samotného MOF.
Kvůli podobnosti mezi modelem MOF M3 a strukturálními modely UML jsou metamodely MOF obvykle modelovány jako diagramy tříd UML. (Třída MOF, stejně jako normální třída Java, má atributy, operace, dědičnost atd.) Jinými slovy, MOF používá zápis MOF::Classes (nezaměňovat s UML::Classes ), tak jak jsou používá se v objektově orientovaném programování k definování pojmů (prvků modelu) na meta úrovni. MOF lze použít k definování jak objektově orientovaných metamodelů (jako je například UML ), tak i neobjektově orientovaných metamodelů (jako jsou metamodely pro Petriho sítě nebo webové služby .
Jsou definovány dvě varianty MOF:
V červnu 2006 vydala OMG žádost o návrh třetí možnosti, SMOF (Sémantické MOF), ale toto téma není na internetu příliš rozvíjeno. Tato skutečnost může naznačovat, že stávající verze jsou zaměřeny více na syntaxi než na sémantiku.
OMG MOF by se nemělo zaměňovat s formátem Managed Object Format (MOF) definovaným en:Distributed Management Task Force (DMTF) v sekci 6 specifikace infrastruktury Common Information Model (CIM), verze 2.5.0. [2]
Samotný MOF je mezinárodní standard ISO / IEC 19502:2005 Informační technologie - Meta Object Facility (MOF).
MOF lze považovat za standard pro psaní metamodelů , například za účelem modelování abstraktní syntaxe IL .
Související normy: