XMI

XMI ( XML Metadata Interchange ) je standard OMG pro výměnu metadat pomocí jazyka XML . Lze použít pro jakákoli metadata, pokud lze jejich metamodel vyjádřit pomocí MOF (Meta-Object Facility). [1] XMI se nejčastěji používá jako výměnný formát pro modely UML . Počítačový vědec dříve nemohl importovat model UML z jednoho modelovacího nástroje UML do druhého kvůli rozdílům v definici syntaxe a sémantiky jazykových prvků. [2]

Syntaxe

Specifikace XMI je poměrně složitá (ve verzi 1.2 má přes 400 stran). Metamodel UML napsaný v XMI je také děsivě velký. Pro obecnou představu o syntaxi využijeme faktu, že XMI definuje nejen UML metamodel, ale i konkrétní UML modely, a uvedeme pouze definici konstrukce UML „adresa“ [3] . Následující vysvětlení syntaxe jazyka jsou také převzata z odkazovaného zdroje. Všimněte si, že značky "UML:Class", "UML:Attribute", "UML:Classifier" nepatří do jazyka XMI, ale byly definovány v metamodelu UML, na který odkazuje tento soubor XMI.

Příklad souboru XMI: adresa

<?xml version="1.0"?> <XMI xmi.version= "1.2" xmlns:UML= "org.omg/UML/1.4" > <XMI.header> <XMI.documentation> <XMI.exporter> ananas. šablona stylů organizace </XMI.exporter> </XMI.documentation> <XMI.metamodel xmi.name= "UML" xmi.version= "1.4" /> </XMI.header> <XMI.content> <UML:Model xmi .id= "M.1" name= "adresa" viditelnost= "public" isSpecification= "false" isRoot= "false" isLeaf= "false" isAbstract= "false" > <UML:Namespace.ownedElement> <UML:Class xmi.id= "C.1" name= "adresa" viditelnost= "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" viditelnost= "private" isSpecification= "false" ownerScope= "instance" /> <UML:Atribut xmi id= "A.2" name= "ulice" viditelnost= "private" isSpecification= "false" ownerScope= "instance" /> <UML:Attribute xmi.id= "A.3" name= "zip" viditelnost= " private" isSpecification= "false" ownerScope= "instance" /> <UML:Atribut xmi.i d= "A.4" name= "region" viditelnost= "private" isSpecification= "false" ownerScope= "instance" /> <UML:Attribute xmi.id= "A.5" name= "city" viditelnost= " private" isSpecification= "false" ownerScope= "instance" /> <UML:Attribute xmi.id= "A.6" name= "country" viditelnost= "private" isSpecification= "false" ownerScope= "instance" /> < /UML:Classifier.feature> </UML:Class> </UML:Namespace.ownedElement> </UML:Model> </XMI.content> </XMI>

XMI záhlaví

XMI definuje následující značky a atributy:

  • XMI je vždy kořenovým prvkem. Musí mít atribut xmi.version (platné verze jsou 1.0, 1.1, 1.2 a 2.0).
    • XMI.header - záhlaví. Jeho nejdůležitějšími potomky jsou XMI.documentation a XMI.metamodel.
      • XMI.documentation obsahuje informace o koncovém uživateli:
        • XMI.owner - vlastník metamodelu.
        • XMI.contact – jeho kontaktní údaje.
        • XMI.longDescription - dlouhý popis majitele.
        • XMI.shortDescription - krátký popis.
        • XMI.exporter - exportér.
        • XMI.exporterVersion - verze exportéru.
        • XMI.exporterID – ID exportéra.
        • XMI.notice je komentář.
      • XMI.metamodel Popis metamodelu, na který byl aplikován algoritmus XMI.
    • XMI.content – ​​obsah modelu.
      • xmi.id je jedinečný identifikátor pro odkaz na metamodel.
      • xmi.idref je odkaz na samotný metamodel.

Způsoby popisu metamodelů

Metamodel UML je model, který popisuje jazyk UML – konkrétně popisuje třídy, atributy, asociace, balíčky (balíčky), spolupráce (kolaborace), případy užití (případy užití), aktéry, zprávy, stavy a další koncepty jazyk UML. Samotný metamodel může být napsán v UML.

Předpona "meta" znamená, že metamodel popisuje model modelu. XML se v tomto případě navíc používá jako metajazyk (jazyk, ve kterém je popsán jiný jazyk). Metamodel UML je publikován ve specifikaci UML. Přesněji řečeno, XMI používá "UML Model Interchange" popsané v kapitole 5 specifikace UML.

Jedním z ústředních pojmů v UML, alespoň v diagramech tříd, je samotný koncept „třídy“. V metamodelu je tento koncept modelován metatřídou Class , která dědí z abstraktní metatřídy Classifier . Klasifikátor je rodič třídy, rozhraní a datového typu. Řetězec dědičnosti pokračuje: GeneralizableElement , který představuje všechny pojmy, které lze zobecnit (tj. zdědit od ostatních); ModelElement , který představuje všechny abstrakce v modelu (jako je jmenný prostor, omezení, třída), a konečně Element , nejvyšší metatřída. Každá z těchto metatříd má atributy, ze kterých třída dědí.

Mezi klasifikátorem a prvkem je kompozice , která je rodičem prvku StructuralFeature . Atribut dědí z StructuralFeature.

Programy používající tento formát

  • Altova UModel
  • ArgoUML
  • Sada nástrojů ARIS
  • Artisan Studio
  • Nástroj Astah UML
  • cs:BOUML
  • Eclipse Process Framework Composer
  • cs:Enterprise Architect (Sparx Systems)
  • Zlepšovatel
  • en:teraplan
  • cs:MagicDraw
  • cs:Modelio
  • Pentaho
  • cs:PowerDesigner (Sybase)
  • cs:System Architect (Rational)
  • SAP BI
  • cs:StarUML
  • Deštník
  • de: UML2 Project (Eclipse MDT)
  • de: Vizuální paradigmata

Poznámky

  1. Stránky OMG XMI Archivováno 11. března 2007.
  2. Stevens, P. XMI a MOF: mini-tutorial. University of Edinburgh. . Datum přístupu: 8. září 2013. Archivováno z originálu 28. února 2013.
  3. Marchal B. Pracovní XML: UML, XMI a generování kódu, 2. část . Získáno 8. září 2013. Archivováno z originálu 26. května 2015.