Meta -Object Facility ( MOF ) — это стандарт Object Management Group (OMG) для проектирования на основе моделей . Его цель — предоставить систему типов для сущностей в архитектуре CORBA и набор интерфейсов, с помощью которых эти типы могут быть созданы и обработаны. MOF может использоваться для проектирования программного обеспечения на основе доменов и объектно-ориентированного моделирования . [1] : 15
MOF был разработан для предоставления системы типов для использования в архитектуре CORBA , набора схем, с помощью которых можно было бы определить структуру, значение и поведение объектов, а также набора интерфейсов CORBA, с помощью которых эти схемы можно было бы создавать, хранить и манипулировать ими. [2]
MOF разработан как четырехслойная архитектура. Он предоставляет мета-мета модель на верхнем уровне, называемом уровнем M3. Эта M3-модель является языком, используемым MOF для построения метамоделей, называемых M2-моделями. Наиболее ярким примером модели MOF уровня 2 является метамодель UML, модель, которая описывает сам UML. Эти M2-модели описывают элементы уровня M1 и, следовательно, M1-модели. Это могут быть, например, модели, написанные на UML. Последний уровень — это уровень M0 или уровень данных. Он используется для описания объектов реального мира.
Помимо модели M3, MOF описывает средства создания и манипулирования моделями и метамоделями, определяя интерфейсы CORBA , которые описывают эти операции. Из-за сходства между моделью MOF M3 и моделями структур UML метамодели MOF обычно моделируются как диаграммы классов UML.
Конвертация из моделей спецификации MOF (M3-, M2- или M1-Layer) в W3C XML и XSD определяется спецификацией XMI (ISO/IEC 19503). XMI — это формат обмена моделями на основе XML. [1] : xi
От MOF до Java™ существует спецификация Java Metadata Interchange (JMI), разработанная Java Community Process . [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 ), а также необъектно-ориентированных метамоделей (например, сети Петри или метамодели веб-сервиса ).
По состоянию на май 2006 года OMG определила два пункта соответствия для MOF:
В июне 2006 года OMG опубликовала запрос предложений на третий вариант — SMOF (Semantic MOF).
Вариант ECore , определенный в Eclipse Modeling Framework, более или менее соответствует EMOF от OMG.
Другим связанным стандартом является OCL , который описывает формальный язык, который можно использовать для определения ограничений модели в терминах логики предикатов .
QVT , который представляет средства для запроса, просмотра и преобразования моделей на основе MOF, является очень важным стандартом, утвержденным в 2008 году. Для получения дополнительной информации см. раздел Язык преобразования моделей .
MOF — это международный стандарт:
MOF можно рассматривать как стандарт для написания метамоделей , например, для моделирования абстрактного синтаксиса предметно-ориентированных языков . Kermeta — это расширение MOF, позволяющее прикреплять исполняемые действия к метамоделям EMOF, что позволяет также моделировать операционную семантику DSL и легко получать для нее интерпретатор.
JMI определяет API Java для управления моделями MOF.
MOF OMG не следует путать с форматом управляемых объектов (MOF), определенным Целевой группой по распределенному управлению (DMTF) в разделе 6 Спецификации инфраструктуры общей информационной модели (CIM) версии 2.5.0. [3]