Открыть сервис

Meta-Object Facility

Основные принципы

MOF основан на идее четырёхуровневой иерархии метамоделирования (M0–M3). На нижнем уровне (M0) находятся реальные объекты предметной области (например, конкретный программный класс). Уровень M1 описывает модель этих объектов (диаграмма классов UML). Уровень M2 — метамодель, то есть язык, на котором построена модель (сам UML). Уровень M3 — мета-метамодель, описывающая структуру метамодели; именно её определяет MOF.

Ключевое свойство MOF — самоописание: мета-метамодель M3 построена на собственных конструкциях, что обеспечивает замкнутость и возможность рефлексии. Это позволяет использовать MOF для описания любых языков моделирования без расширения стандарта.

Структура и компоненты

Спецификация MOF 2.0 разделена на несколько частей:

  • EMOF (Essential MOF) — упрощённое ядро, предназначенное для быстрого создания метамоделей. Содержит базовые классы (Class, Property, Operation, DataType, Enumeration) и ограничения на их использование.
  • CMOF (Complete MOF) — полная версия, включающая дополнительные возможности: ассоциации с множественными концами, наследование, пакеты, ограничения OCL (Object Constraint Language) и расширенные правила видимости.
  • XMI (XML Metadata Interchange) — формат сериализации метамоделей и моделей в XML, обеспечивающий обмен между инструментами.
  • JMI (Java Metadata Interface) — программный интерфейс (API) для доступа и манипуляции метаданными из Java-приложений.

EMOF и CMOF связаны отношением расширения: любая EMOF-метамодель валидна и для CMOF, но не наоборот. На практике большинство промышленных реализаций (например, Eclipse EMF) используют подмножество EMOF.

Отношение к другим стандартам

MOF тесно связан с UML (Unified Modeling Language). Метамодель UML формально описывается средствами MOF, что делает возможным автоматическую обработку UML-диаграмм. В свою очередь, CWM (Common Warehouse Metamodel)стандарт для систем хранилищ данных — также построен на MOF.

В рамках MDA MOF играет роль «языка метаязыков»: с его помощью определяются платформенно-независимые модели (PIM) и платформенно-специфичные модели (PSM), а также правила трансформации между ними. В отличие от UML, который ориентирован на программные системы, MOF не накладывает ограничений на предметную область и может описывать произвольные структуры данных.

Реализации и применение

Наиболее известная реализация — Eclipse Modeling Framework (EMF), в которой используется аннотированный Java-код для генерации EMOF-совместимых метамоделей. EMF служит основой для множества инструментов, включая генераторы кода и редакторы моделей. Другие реализации: OpenMDX, MICO, а также проприетарные решения в средах моделирования (MagicDraw, Enterprise Architect).

MOF применяется в следующих областях:

  • разработка предметно-ориентированных языков (DSL) — метамодель языка описывается через EMOF/CMOF, а затем генерируется редактор и компилятор;
  • управление метаданными в корпоративных хранилищах (репозиториях) — стандарт CWM;
  • интеграция инструментов моделирования через XMI-обмен;
  • формализация онтологий и схем данных в системах искусственного интеллекта.

Критика и ограничения

Стандарт критикуется за избыточную сложность полной спецификации (CMOF) и трудность реализации. Четырёхуровневая иерархия на практике часто редуцируется до трёх уровней, поскольку уровень M0 (реальные объекты) не всегда явно моделируется. Также отмечается, что XMI-сериализация имеет несколько вариантов совместимости, что приводит к проблемам интероперабельности между различными инструментами.

Альтернативой MOF считается Kermeta (метамоделирование на основе EMF) и Ecore — упрощённая метамодель Eclipse, которая фактически стала де-факто стандартом в Java-экосистеме, частично вытеснив формальные спецификации OMG.

Источники

  • OMG. Meta (организация признана экстремистской, деятельность запрещена в РФ) Object Facility (MOF) Core Specification, Version 2.0 (2006).
  • OMG. XML Metadata Interchange (XMI) Specification, Version 2.1 (2005).
  • Steinberg D., Budinsky F., Paternostro M., Merks E. Eclipse Modeling Framework, 2nd Edition. Addison-Wesley, 2008.
  • Favre L. Foundations of Model-Driven Architecture. In: Model-Driven Architecture. Springer, 2005.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →