Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_umlandardxtt:notatki [2008/04/14 19:45] miw |
pl:miw:miw08_umlandardxtt:notatki [2008/04/14 20:48] miw |
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] | |
| |
{{http://student.agh.edu.pl/~kkluza/xmi/przyklad1.png|Klasa w XMI}} | |
| |
Reprezentacja powyższej klasy w XMI wygenerowana przy użyciu StarUML: | |
<code xml> | |
<?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> | |
</code> | |
| |
===== Przykład dwóch klas powiązanych asocjacją ===== | |
| |
{{http://student.agh.edu.pl/~kkluza/xmi/przyklad2_asocjacja.png|2klasyZAsocjacja}} | |
| |
Przykład dokumentu XMI dla dwóch klas powiązanych asocjacją z zaznaczonymi rolami i licznością | |
(dokument wygenerowany przy użyciu StarUML): | |
| |
<code xml> | |
<?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> | |
</code> | |
| |
| |
=== Źródła === | |
1. http://www.omg.org/docs/formal/03-05-02.pdf \\ | |
2. http://www.zsk.ict.pwr.wroc.pl/zsk/repository/dydaktyka/wzsr/mda.pdf \\ | |
3. http://www.openmdx.org/documents/introduction/htmlsingle/openMDX_Introduction.html#F-OMG-MDA-2 \\ | |
| |