XMI

Поделись знанием:
Перейти к: навигация, поиск

XMI (XML Metadata Interchange) — стандарт OMG для обмена метаданными с помощью языка XML. Может использоваться для любых метаданных, если их метамодель может быть выражена с помощью MOF (Meta-Object Facility).[1] Наиболее часто XMI применяется как формат обмена UML-моделями. Информатик не мог раньше импортировать UML-модель из одного инструмента UML-моделирования в другой — из-за различий в определении синтаксиса и семантики элементов языка.[2]





Синтаксис

Спецификация XMI довольно сложна (в версии 1.2 — более 400 страниц). Метамодель языка UML, изложенная на XMI, также пугающе велика. Чтобы дать общее представление о синтаксисе, воспользуемся тем фактом, что на XMI определяется не только метамодель языка UML, но и конкретные UML-модели, и приведем лишь определение UML-конструкции "адрес"[3]. Последующие пояснения синтаксиса языка приведены также из упомянутого источника. Обратите внимание, что тэги "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.content — содержание модели.
      • xmi.id — уникальный идентификатор ссылки на метамодель.
      • xmi.idref — сама ссылка на метамодель.

Средства описания метамоделей

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.

Программы, использующие этот формат

Напишите отзыв о статье "XMI"

Примечания

  1. [www.omg.org/technology/documents/formal/xmi.htm Сайт OMG о XMI]
  2. [homepages.inf.ed.ac.uk/perdita/XMI/tutslides2up.pdf Stevens, P. XMI and MOF: a mini-tutorial. University of Edinburgh.]
  3. [www.ibm.com/developerworks/library/x-wxxm24 Marchal B. Working XML: UML, XMI, and code generation, Part 2]

Отрывок, характеризующий XMI

Пьер смотрел на нее через очки.
– Allons, je vous reconduirai. Tachez de pleurer. Rien ne soulage, comme les larmes. [Пойдемте, я вас провожу. Старайтесь плакать: ничто так не облегчает, как слезы.]
Она провела его в темную гостиную и Пьер рад был, что никто там не видел его лица. Анна Михайловна ушла от него, и когда она вернулась, он, подложив под голову руку, спал крепким сном.
На другое утро Анна Михайловна говорила Пьеру:
– Oui, mon cher, c'est une grande perte pour nous tous. Je ne parle pas de vous. Mais Dieu vous soutndra, vous etes jeune et vous voila a la tete d'une immense fortune, je l'espere. Le testament n'a pas ete encore ouvert. Je vous connais assez pour savoir que cela ne vous tourienera pas la tete, mais cela vous impose des devoirs, et il faut etre homme. [Да, мой друг, это великая потеря для всех нас, не говоря о вас. Но Бог вас поддержит, вы молоды, и вот вы теперь, надеюсь, обладатель огромного богатства. Завещание еще не вскрыто. Я довольно вас знаю и уверена, что это не вскружит вам голову; но это налагает на вас обязанности; и надо быть мужчиной.]
Пьер молчал.
– Peut etre plus tard je vous dirai, mon cher, que si je n'avais pas ete la, Dieu sait ce qui serait arrive. Vous savez, mon oncle avant hier encore me promettait de ne pas oublier Boris. Mais il n'a pas eu le temps. J'espere, mon cher ami, que vous remplirez le desir de votre pere. [После я, может быть, расскажу вам, что если б я не была там, то Бог знает, что бы случилось. Вы знаете, что дядюшка третьего дня обещал мне не забыть Бориса, но не успел. Надеюсь, мой друг, вы исполните желание отца.]
Пьер, ничего не понимая и молча, застенчиво краснея, смотрел на княгиню Анну Михайловну. Переговорив с Пьером, Анна Михайловна уехала к Ростовым и легла спать. Проснувшись утром, она рассказывала Ростовым и всем знакомым подробности смерти графа Безухого. Она говорила, что граф умер так, как и она желала бы умереть, что конец его был не только трогателен, но и назидателен; последнее же свидание отца с сыном было до того трогательно, что она не могла вспомнить его без слез, и что она не знает, – кто лучше вел себя в эти страшные минуты: отец ли, который так всё и всех вспомнил в последние минуты и такие трогательные слова сказал сыну, или Пьер, на которого жалко было смотреть, как он был убит и как, несмотря на это, старался скрыть свою печаль, чтобы не огорчить умирающего отца. «C'est penible, mais cela fait du bien; ca eleve l'ame de voir des hommes, comme le vieux comte et son digne fils», [Это тяжело, но это спасительно; душа возвышается, когда видишь таких людей, как старый граф и его достойный сын,] говорила она. О поступках княжны и князя Василья она, не одобряя их, тоже рассказывала, но под большим секретом и шопотом.


В Лысых Горах, имении князя Николая Андреевича Болконского, ожидали с каждым днем приезда молодого князя Андрея с княгиней; но ожидание не нарушало стройного порядка, по которому шла жизнь в доме старого князя. Генерал аншеф князь Николай Андреевич, по прозванию в обществе le roi de Prusse, [король прусский,] с того времени, как при Павле был сослан в деревню, жил безвыездно в своих Лысых Горах с дочерью, княжною Марьей, и при ней компаньонкой, m lle Bourienne. [мадмуазель Бурьен.] И в новое царствование, хотя ему и был разрешен въезд в столицы, он также продолжал безвыездно жить в деревне, говоря, что ежели кому его нужно, то тот и от Москвы полтораста верст доедет до Лысых Гор, а что ему никого и ничего не нужно. Он говорил, что есть только два источника людских пороков: праздность и суеверие, и что есть только две добродетели: деятельность и ум. Он сам занимался воспитанием своей дочери и, чтобы развивать в ней обе главные добродетели, до двадцати лет давал ей уроки алгебры и геометрии и распределял всю ее жизнь в беспрерывных занятиях. Сам он постоянно был занят то писанием своих мемуаров, то выкладками из высшей математики, то точением табакерок на станке, то работой в саду и наблюдением над постройками, которые не прекращались в его имении. Так как главное условие для деятельности есть порядок, то и порядок в его образе жизни был доведен до последней степени точности. Его выходы к столу совершались при одних и тех же неизменных условиях, и не только в один и тот же час, но и минуту. С людьми, окружавшими его, от дочери до слуг, князь был резок и неизменно требователен, и потому, не быв жестоким, он возбуждал к себе страх и почтительность, каких не легко мог бы добиться самый жестокий человек. Несмотря на то, что он был в отставке и не имел теперь никакого значения в государственных делах, каждый начальник той губернии, где было имение князя, считал своим долгом являться к нему и точно так же, как архитектор, садовник или княжна Марья, дожидался назначенного часа выхода князя в высокой официантской. И каждый в этой официантской испытывал то же чувство почтительности и даже страха, в то время как отворялась громадно высокая дверь кабинета и показывалась в напудренном парике невысокая фигурка старика, с маленькими сухими ручками и серыми висячими бровями, иногда, как он насупливался, застилавшими блеск умных и точно молодых блестящих глаз.