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: [schemat za: 3]

Klasa w XMI

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" owner="UMLClass"/>
            <UML:Attribute xmi.id="UMLAttribute.7" name="nazwisko" owner="UMLClass"/>
            <UML:Attribute xmi.id="UMLAttribute.8" name="pesel" owner="UMLClass"/>
          </UML:Classifier.feature>
        </UML:Class>
    </UML:Model>
</XMI.content>
</XMI>

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

2klasyZAsocjacja

Przykład dokumentu XMI dla dwóch klas powiązanych asocjacją z zaznaczonymi rolami i licznością (dokument wygenerowany 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.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="" namespace="UMLPackage.2">
          <UML:Association.connection>
 
            <UML:AssociationEnd xmi.id="UMLAssociationEnd.6"
                                name="pracodawca" aggregation="none" targetScope="instance"
                                visibility="public" ordering="unordered" 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" aggregation="none" targetScope="instance"
                                visibility="public" ordering="unordered" 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

MetaObject Facility (MOF)

MetaObject Facility (MOF) to specyfikacja definiująca zasady opisu języka modelowania (tzw. metamodel) dla wszystkich specyfikacji tworzonych przez Object Management Group (OMG). MOF sprawia, że wywodzące się z niej specyfikacje są kompatybilne ze sobą. Definiuje również standard przechowywania metamodeli oraz modeli.

Poniższy diagram ukazuje relacje między modelem, metamodelem, a językiem [za 2]:

Metamodel, model a język

MOF umożliwia budowanie własnych języków modelowania specyficznych dla wybranej kategorii
zastosowań lub definiowanie rozszerzeń do istniejących języków modelowania. Ponieważ zarówno
same rozszerzenia, jak i ewentualne nowe języki są zgodne ze specyfikacją MOF, dlatego też stają się
automatycznie dostępne do dalszego wykorzystania w systemach współpracujących z repozytorium modeli MOF. [3]

Czterowarstwowa architektura metadanych

Specyfikacja MOF została zaprojektowana jako najwyższa warstwa w hierarchii metamodeli OMG. Hierarchia ta posiada 4 warstwy:

  • M3 - warstwa meta-metamodelu,
  • M2 - warstwa metamodelu,
  • M1 - warstwa modelu,
  • M0 - warstwa informacyjna.

Każda warstwa reprezentuje różne poziomy danych lub meta danych.

Warstwa w hierarchii: Co zawiera warstwa: Przykłady: [za 3]
M3 specyfikacja języka modelowania (metamodelu) Meta-Object Facility (MOF)
M2 model metadanych (specyfikacja języka) specyfikacja SQL, specyfikacja UML, specyfikacja XML
M1 metadane, czyli opis formatu i znaczenia danych schemat bazy danych, model klas, definicja dokumentu XML (DTD)
M0 rzeczywiste dane, które chcemy opisać dane w bazie danych, instancje obiektów, dokument XML

Przykład hierarchii dla książki [stworzony na podstawie przykładu z niemieckiej wikipedii 4]:

Przykład hierarchii warstw dla obiektu książki

Źródła

pl/miw/miw08_umlandardxtt/notatki.1208197441.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