To jest stara wersja strony!


FIXME

Brudnopis

XML Metadata Interchange (XMI)

XML Metadata Interchange (XMI) to standard dla wymiany metadanych przy użyciu XMLa.

XMI może być używany dla jakichkolwiek metadanych, których metamodel da się wyrazić w specyfikacji MOF. Metamodel jest zapisywany w postaci XML Document Type Definitions (DTD), zaś model jest zapisywany w XMI zgodnie z regułami określonymi w specyfikacji mapowania XMI (XMI Mapping Specification).

Najczęściej XMI jest używany jako format zapisu i wymiany modeli UMLa pomiędzy różnymi narzędziami (jest to możliwe, gdyż UML jest oficjalnie zdefiniowany w metamodelu UML zgodnym z MOF).

XMI może zostać użyty także do zapisu aplikacji (np. Java, C++), komponentów (np. EJB), baz danych (np. CWM).

XMI może definiować: [za: 1]

  • reprezentację obiektów i atrybutów,
  • powiązania między obiektami (w tym samym pliku lub międzyplikowe),
  • referencje do innych obiektów poprzez wykorzystanie identyfikatorów,
  • wersjonowanie obiektów i ich definicji,
  • walidację dokumentów XMI przy pomocy DTD i XML Schema.
Należy podkreślić, że w obecnej postaci służy zapisowi modelu, a nie diagramów,
gdyż nie determinuje postaci wizualnej wykraczającej poza formalną treść modelu. [2]

Uproszczony przykład reprezentacji klasy

Uproszczony przykład reprezentacji klasy zapisanej przy pomocy XMLa: [za: 3]

Reprezentacja powyższej klasy w XMI (wygenerowana przy użyciu StarUML):

<?xml version = "1.0" encoding = "UTF-8"?>
<XMI xmi.version = "1.1" xmlns:UML="href://org.omg/UML/1.3">
<XMI.content>
    <UML:Model xmi.id="UMLModel" name="Design Model">
        <UML:Class xmi.id="UMLClass" name="Osoba" visibility="public" namespace="UMLModel">
          <UML:Classifier.feature>
            <UML:Attribute xmi.id="UMLAttribute.6" name="imie" 
                           visibility="public" owner="UMLClass"/>
            <UML:Attribute xmi.id="UMLAttribute.7" name="nazwisko" 
                           visibility="public" owner="UMLClass"/>
            <UML:Attribute xmi.id="UMLAttribute.8" name="pesel" 
                           visibility="public" owner="UMLClass"/>
          </UML:Classifier.feature>
        </UML:Class>
    </UML:Model>
</XMI.content>
</XMI>

Przykład dwóch klas powiązanych asocjacją

Przykład dokumentu XMI dla dwóch klas powiązanych asocjacją (z zaznaczonymi rolami i licznością):

<?xml version = "1.0" encoding = "UTF-8"?>
<XMI xmi.version = "1.1" xmlns:UML="href://org.omg/UML/1.3">
<XMI.header>
  <XMI.metamodel xmi.name = "UML" xmi.version = "1.3"/>
</XMI.header>
<XMI.content>
<UML:Model xmi.id="UMLProject.1">
  <UML:Namespace.ownedElement>
    <UML:Package xmi.id="UMLPackage.2" name="Package1" namespace="UMLProject.1">
      <UML:Namespace.ownedElement>
        <UML:Class xmi.id="UMLClass.3" name="Firma" namespace="UMLPackage.2" participant="UMLAssociationEnd.6"/>
        <UML:Class xmi.id="UMLClass.4" name="Osoba" namespace="UMLPackage.2" participant="UMLAssociationEnd.7"/>
        <UML:Association xmi.id="UMLAssociation.5" name=""
                   visibility="public" namespace="UMLPackage.2">
          <UML:Association.connection>
            <UML:AssociationEnd xmi.id="UMLAssociationEnd.6"
                                name="pracodawca" visibility="public" targetScope="instance"
                                ordering="unordered" aggregation="none" isNavigable="true"
                                association="UMLAssociation.5" type="UMLClass.3">
              <UML:AssociationEnd.multiplicity>
                <UML:Multiplicity xmi.id="X.8">
                  <UML:Multiplicity.range>
                    <UML:MultiplicityRange xmi.id="X.9" lower="1" upper="-1" multiplicity="X.8"/>
                  </UML:Multiplicity.range>
                </UML:Multiplicity>
              </UML:AssociationEnd.multiplicity>
            </UML:AssociationEnd>
            <UML:AssociationEnd xmi.id="UMLAssociationEnd.7"
                                name="pracownik" visibility="public" targetScope="instance"
                                ordering="unordered" aggregation="none" isNavigable="true"
                                association="UMLAssociation.5" type="UMLClass.4">
              <UML:AssociationEnd.multiplicity>
                <UML:Multiplicity xmi.id="X.10">
                  <UML:Multiplicity.range>
                    <UML:MultiplicityRange xmi.id="X.11" lower="-1" upper="-1" multiplicity="X.10"/>
                  </UML:Multiplicity.range>
                </UML:Multiplicity>
              </UML:AssociationEnd.multiplicity>
            </UML:AssociationEnd>
          </UML:Association.connection>
        </UML:Association>
      </UML:Namespace.ownedElement>
    </UML:Package>
  </UML:Namespace.ownedElement>
</UML:Model>
</XMI.content>
</XMI>

Źródła

pl/miw/miw08_umlandardxtt/notatki.1208194316.txt.gz · ostatnio zmienione: 2019/06/27 15:59 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0