Nowa wersja
|
Poprzednia wersja
Nowa wersja
Both sides next revision
|
pl:miw:miw08_umlandardxtt:notatki [2008/02/26 12:34] gjn utworzono |
pl:miw:miw08_umlandardxtt:notatki [2008/04/14 20:39] 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: [[pl:miw:miw08_umlandardxtt:notatki#zrodla|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. [ [[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]] ] |
| |
| Standard MOF jest zdefiniowany przy pomocy specyfikacji MOF, jednak sama 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 \\ |
| |
| |
| |
FIXME | |