Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_umlandardxtt:notatki [2008/04/14 19:09] miw |
pl:miw:miw08_umlandardxtt:notatki [2019/06/27 15:50] (aktualna) |
FIXME | FIXME |
====== Brudnopis ====== | ======= Brudnopis ======= |
| |
==== XML Metadata Interchange (XMI) ==== | ====== XML Metadata Interchange (XMI) ====== |
| |
XML Metadata Interchange (XMI) to standard dla wymiany metadanych przy użyciu XMLa. | XML Metadata Interchange (XMI) to standard dla wymiany metadanych przy użyciu XMLa. |
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 zostać użyty także do zapisu aplikacji (np. Java, C++), komponentów (np. EJB), baz danych (np. CWM). |
| |
XMI może definiować: | XMI może definiować: [za: [[pl:miw:miw08_umlandardxtt:notatki#zrodla|1]]] |
| |
* reprezentację obiektów i atrybutów, | * reprezentację obiektów i atrybutów, |
* walidację dokumentów XMI przy pomocy DTD i XML Schema. | * 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. [ [[pl:miw:miw08_umlandardxtt:notatki#zrodla|2]] ] |
| |
| |
| ===== Uproszczony przykład reprezentacji klasy ===== |
| |
| Uproszczony przykład reprezentacji klasy zapisanej przy pomocy XMLa: [schemat za: [[pl:miw:miw08_umlandardxtt:notatki#zrodla|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="" 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> |
| </code> |
| |
| XMI jest ogólnoświatowym standardem zdefiniowanym normą: \\ |
| [[http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=32622|ISO/IEC 19503:2005 Information technology -- XML Metadata Interchange (XMI)]]. |
| |
| === Ź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 \\ |
| |
| |
| |
| ====== 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 [[pl:miw:miw08_umlandardxtt:notatki#zrodla1|2]]]: |
| |
| {{http://student.agh.edu.pl/~kkluza/xmi/metamodel_model_jezyk.png|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. [ [[pl:miw:miw08_umlandardxtt:notatki#zrodla1|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 [[pl:miw:miw08_umlandardxtt:notatki#zrodla1|3]]] ^ |
| | {{http://student.agh.edu.pl/~kkluza/xmi/m3.png|M3}} | specyfikacja języka modelowania (metamodelu) | Meta-Object Facility (MOF) | |
| | {{http://student.agh.edu.pl/~kkluza/xmi/m2.png|M2}} | model metadanych (specyfikacja języka) | specyfikacja SQL, specyfikacja UML, specyfikacja XML | |
| | {{http://student.agh.edu.pl/~kkluza/xmi/m1.png|M1}} | metadane, czyli opis formatu i znaczenia danych | schemat bazy danych, model klas, definicja dokumentu XML (DTD) | |
| | {{http://student.agh.edu.pl/~kkluza/xmi/m0.png|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: [[pl:miw:miw08_umlandardxtt:notatki#zrodla1|4]]]: |
| |
| {{http://student.agh.edu.pl/~kkluza/xmi/example4layer.png|Przykład hierarchii warstw dla obiektu książki}} |
| |
| \\ |
| Najwyższą warstwą, znajdującą się na najwyższym poziomie abstrakcji tej architektury, jest model specyfikacji języka modelowania MOF, czyli meta-metamodel. |
| |
| > Na tym poziomie można stworzyć repozytorium opisu języków modelowania. |
| > Repozytorium to umożliwia systemom wzajemne poznanie struktur i semantyk w celu nawiązania |
| > współpracy. Jeśli podczas modelowania systemu, wykorzystano język modelowania, którego opis |
| > umieszczono w repozytorium, wówczas inny system może poznać sposób opisu tego modelu, a co za |
| > tym idzie odczytać sam model w celu rozpoczęcia współdziałania. \\ |
| > Celem istnienia repozytorium MOF jest zapewnienie systemom możliwości odkrycia i manipulowania |
| > metadanymi. Poprzez możliwość wymiany meta informacji uzyskuje się semantyczną wymianę danych, |
| > co prowadzi do łatwiejszej integracji systemów. Powstają już rozwiązania pozwalające na realizację |
| > dostępu, składowania i specyfikowania meta informacji. Jednym z nich jest Java API for Metadata (JMI). [ [[pl:miw:miw08_umlandardxtt:notatki#zrodla1|3]] ] |
| |
| Specyfikacja MOF posługuje się także dodatkowymi technikami specyfikowania. Gdyby chcieć je umieścić na diagramie hierarchii, należałoby dodać nową (wirtualną) warstwę, zawierającą dodatkowe techniki specyfikacji. Poniższy rysunek [za: [[pl:miw:miw08_umlandardxtt:notatki#zrodla|2]]] pokazuje zależności między MOF, a dodatkowymi technikami specyfikowania: |
| |
| {{http://student.agh.edu.pl/~kkluza/xmi/MOFandOtherTechSpec.jpg|Zależności między MOF, a dodatkowymi technikami specyfikowania}} |
| |
| OMG zdefiniowało 2 warianty MOF: |
| |
| * podstawowy - Essential MOF (EMOF), |
| * pełny - Complete MOF (CMOF). |
| |
| \\ |
| MOF jest ogólnoświatowym standardem zdefiniowanym normą: \\ |
| [[http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=32621|ISO/IEC 19502:2005 Information technology -- Meta Object Facility (MOF)]]. |
| |
| === Źródła === |
| 1. http://www.omg.org/mof/ \\ |
| 2. http://essay.utwente.nl/57286/1/scriptie_Overbeek.pdf \\ |
| 3. http://adlejman.w.interia.pl/mda.pdf \\ |
| 4. http://de.wikipedia.org/wiki/Meta_Object_Facility \\ |
| |
http://www.zsk.ict.pwr.wroc.pl/zsk/repository/dydaktyka/wzsr/mda.pdf: | |
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. | |
| |
| |