Interested Article - XMI
- 2020-12-03
- 1
XMI ( X ML M etadata I nterchange ) — стандарт OMG для обмена метаданными с помощью языка XML . Может использоваться для любых метаданных, если их метамодель может быть выражена с помощью MOF (Meta-Object Facility). Наиболее часто XMI применяется как формат обмена UML -моделями. Информатик не мог раньше импортировать UML-модель из одного инструмента UML-моделирования в другой — из-за различий в определении синтаксиса и семантики элементов языка.
Синтаксис
Спецификация XMI довольно сложна (в версии 1.2 — более 400 страниц). Метамодель языка UML, изложенная на XMI, также пугающе велика. Чтобы дать общее представление о синтаксисе, воспользуемся тем фактом, что на XMI определяется не только метамодель языка UML, но и конкретные UML-модели, и приведем лишь определение UML-конструкции "адрес" . Последующие пояснения синтаксиса языка приведены также из упомянутого источника. Обратите внимание, что тэги "UML:Class", "UML:Attribute", "UML:Classifier" не принадлежат языку XMI, а были определены в метамодели языка UML, на которую ссылается данный XMI-файл.
Пример XMI-файла: адрес
<?xml version="1.0"?>
<XMI xmi.version="1.2" xmlns:UML="org.omg/UML/1.4">
<XMI.header>
<XMI.documentation>
<XMI.exporter>ananas.org stylesheet</XMI.exporter>
</XMI.documentation>
<XMI.metamodel xmi.name="UML" xmi.version="1.4"/>
</XMI.header>
<XMI.content>
<UML:Model xmi.id="M.1" name="address" visibility="public"
isSpecification="false" isRoot="false"
isLeaf="false" isAbstract="false">
<UML:Namespace.ownedElement>
<UML:Class xmi.id="C.1" name="address" visibility="public"
isSpecification="false" namespace="M.1" isRoot="true"
isLeaf="true" isAbstract="false" isActive="false">
<UML:Classifier.feature>
<UML:Attribute xmi.id="A.1" name="name" visibility="private"
isSpecification="false" ownerScope="instance"/>
<UML:Attribute xmi.id="A.2" name="street" visibility="private"
isSpecification="false" ownerScope="instance"/>
<UML:Attribute xmi.id="A.3" name="zip" visibility="private"
isSpecification="false" ownerScope="instance"/>
<UML:Attribute xmi.id="A.4" name="region" visibility="private"
isSpecification="false" ownerScope="instance"/>
<UML:Attribute xmi.id="A.5" name="city" visibility="private"
isSpecification="false" ownerScope="instance"/>
<UML:Attribute xmi.id="A.6" name="country" visibility="private"
isSpecification="false" ownerScope="instance"/>
</UML:Classifier.feature>
</UML:Class>
</UML:Namespace.ownedElement>
</UML:Model>
</XMI.content>
</XMI>
XMI-шапка
XMI определяет следующие теги и атрибуты:
-
XMI всегда является корневым элементом. Он должен иметь атрибут xmi.version (действующие версии 1.0, 1.1, 1.2 и 2.0).
-
XMI.header — шапка. Наиболее важны её дети XMI.documentation и XMI.metamodel.
-
XMI.documentation содержит информацию о конечном пользователе:
- XMI.owner — владелец метамодели.
- XMI.contact — его контактные данные.
- XMI.longDescription — длинное описание владельца.
- XMI.shortDescription — короткое описание.
- XMI.exporter — экспортер.
- XMI.exporterVersion — версия экспортера.
- XMI.exporterID — идентификатор экспортера.
- XMI.notice — комментарий.
- XMI.metamodel — описание метамодели, к которой алгоритм XMI был применен.
-
XMI.documentation содержит информацию о конечном пользователе:
-
XMI.content — содержание модели.
- xmi.id — уникальный идентификатор ссылки на метамодель.
- xmi.idref — сама ссылка на метамодель.
-
XMI.header — шапка. Наиболее важны её дети XMI.documentation и XMI.metamodel.
Средства описания метамоделей
UML-метамодель — это модель, которая описывает язык UML — в частности, она описывает классы, атрибуты, ассоциации, пакеты (packages), сотрудничество (collaborations), варианты использования (use cases), актеры, сообщения, состояния и другие понятия языка UML. Метамодель сама может быть написана в UML.
Приставка "мета" означает, что метамодель описывает модель модели. Кроме того, XML используется в данном случае как метаязык (язык, на котором описывается другой язык). Метамодель UML опубликована в спецификации UML. Более конкретно, XMI использует "UML Model Interchange", описанную в главе 5 спецификации UML.
Одним из центральных понятий в UML, по крайней мере — в диаграммах классов — является само понятие "class". В метамодели это понятие моделируется метаклассом Class , наследующим от абстрактного метакласса Classifier . Classifier является родительским для класса, интерфейса и типа данных. Цепочку наследования продолжают: GeneralizableElement , который представляет все концепции, которые могут быть генерализованы (то есть — унаследованы от других); ModelElement , который представляет все абстракции в модели (такие, как пространство имен, ограничения, класс), и, наконец, Element , самый верхний метакласс. Каждый из этих метаклассов имеет атрибуты, из которых Class наследует.
Существует композиция между Classifier и Feature , являющейся родителем StructuralFeature . Attribute наследует от StructuralFeature.
Программы, использующие этот формат
- Altova UModel
- ArgoUML
- ARIS Toolset
- Artisan Studio
- Astah UML Tool
- Eclipse Process Framework Composer
- (Sparx Systems)
- Pentaho
- (Sybase)
- (Rational)
- Umbrello
Примечания
- 11 марта 2007 года.
- Дата обращения: 8 сентября 2013. 28 февраля 2013 года.
- . Дата обращения: 8 сентября 2013. 26 мая 2015 года.
- 2020-12-03
- 1