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
- ↑ Stránky OMG XMI Archivováno 11. března 2007.
- ↑ Stevens, P. XMI a MOF: mini-tutorial. University of Edinburgh. . Datum přístupu: 8. září 2013. Archivováno z originálu 28. února 2013. (neurčitý)
- ↑ 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. (neurčitý)