1 / 99

Tema 2. Fundamentos del DSDM. Metamodelado

Departamento de Informática y Sistemas. Tema 2. Fundamentos del DSDM. Metamodelado. Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería . Jesús García Molina Departamento de Informática y Sistemas Universidad de Murcia http://dis.um.es/~jmolina. Contenidos.

cera
Download Presentation

Tema 2. Fundamentos del DSDM. Metamodelado

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Departamento de Informática y Sistemas Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Jesús García Molina Departamento de Informática y Sistemas Universidad de Murcia http://dis.um.es/~jmolina

  2. Contenidos • Metamodelado • Lenguajes de metamodelado • MOF • Ecore • Lenguaje OCL • Perfiles UML • Cuestiones de metamodelado DSDM

  3. Metamodelado • DSDM requiere lenguajes apropiados para describir todos los aspectos de los sistemas y a diferentes niveles de abstracción. • Lenguajes de modelado son lenguajes específicos del dominio (DSL). • Dos posibilidades para definir un nuevo lenguaje: • Crear un perfil UML • Crear un metamodelo con un lenguaje de metamodelado

  4. Metamodelado • Un lenguaje de modelado o DSL se define formalmente mediante un metamodelo: • Sintaxis abstracta y restricciones • Sintaxis concreta • Semántica • Necesidad de un lenguaje de metamodelado: • OMG • MOF: EMOF y CMOF • Eclipse (EMF, Eclipse Modeling Framework) • Ecore • Otros: Herramientas de metamodelado existentes disponen de uno propio (XMF, Metaedit+, DSL Tools,...)

  5. Metamodelado • Un metamodelo define los elementos de un lenguaje de modelado y las relaciones entre ellos, y las restricciones (semántica abstracta). • Un metamodelo define la sintaxis abstracta y la semántica estática, pero no la sintaxis concreta. • Un metamodelo define formalmente un lenguaje de modelado o DSL. • Crear un metamodelo es una actividad de modelado conceptual OO • Necesidad de conocer bien el dominio • Herramientas manejan metamodelos y los desarrolladores sintaxis concreta (modelos).

  6. Metamodelado context StateMachine inv: EstadosDistintoNombre states-> forAll (s1 | states->forAll (s2 | s1.name = s2.name implies s1 = s2)) end +states Sintaxis abstracta de una máquina de estados

  7. after (2 sec) send c.estaActivo ruido Buscando Inactivo objetivoEn(p) [representaAmenaza] / t.añadirObjetivo(p) Acoplamiento Rastreando contactar Metamodelado Sintaxis concreta de una máquina de estados

  8. Metamodelado • MOF y Ecore se basan en elementos de modelado orientado a objetos: • Clases y Atributos • Asociaciones en MOF y referencias entre objetos en Ecore • Agregación en MOF • Generalización • Paquetes

  9. MOF (MetaObject Facility) • MOFes el lenguaje para crear metamodelos propuesto por OMG para MDA. • UML está definido como un metamodelo MOF. • Aplicable a cualquier dominio. • Lenguajes OMG: CWM, EJB, EAI, EDOC • “Medio universal para definir lenguajes de modelado” • MOF permite expresar metadatos (igual que XML) • Independiente de la plataforma

  10. MOF (MetaObject Facility) • MOF es descrito con la notación UML, OCL y texto informal. • La notación para metamodelos MOF es la sintaxis concreta de UML: ¡Puede generar confusión al principio! • Comparte elementos de modelado con UML: clases, atributos, generalización, etc.

  11. MOF • Cada elemento del lenguaje de modelado se representa mediante una clase y sus propiedades como atributos • Las relaciones entre elementos se representan como asociaciones. • La generalización permite expresar que un elemento es una especialización de otro. • Se usa OCL para expresar la semántica estática. • Uso de paquetes si el metamodelo es muy grande

  12. Arquitectura de cuatro niveles

  13. Arquitectura de cuatro niveles en MDA

  14. Arquitectura de cuatro niveles: Ejemplo

  15. Arquitectura de cuatro niveles: Ejemplo

  16. Arquitectura de cuatro niveles: Ejemplo

  17. Arquitectura de cuatro niveles

  18. Arquitectura de cuatro niveles

  19. MOF Tabla y Columna son elementos de un modelo Existe el concepto de jerarquía de tablas context Tabla inv: padre.columna -> forAll (columnaPadre | self.columna ->includes (columnaPadre))

  20. Árbol Sintaxis Abstracta • Compiladores construyen árbol de sintaxis a partir de una sintaxis concreta (gramática). • Herramientas que manejan metamodelos crean un árbol de sintaxis abstracta (AST) para representar un modelo. • Sus nodos son instancias de clases del metamodelo • Sus arcos son instancias de asociaciones del metamodelo

  21. Ejemplo AST :Tabla nombre = “Persona” :Tabla nombre = “Empleado” :Columna nombre = “Pepe” :Columna dni = “1234567” :Columna sueldo = “100000”

  22. MOF (MetaObject Facility) • UML 2.0 está organizado en dos partes: Infraestructura y SuperEstructura • Infraestructuradefine las construcciones básicas de UML 2.0. • SuperEstructuradefine las construcciones a nivel de usuario de UML 2.0. • MOF “merges” ciertos paquetes de Infraestructura • Subconjunto de UML • Misma notación que UML

  23. Infraestructura: Core Core Contiene conceptos básicos de metamodelos Profiles Define mecanismos para extender metamodelos

  24. SuperEstructura: Estructura

  25. SuperEstructura: Comportamiento

  26. MOF(MetaObject Facility) • Integra facilidades básicas como reflexión o identificadores. • Reflexión útil para crear herramientas de metamodelado • Se debe manejar elementos de cualquier metamodelo • Identificadores • Se asigna un identificador único a cada elemento. • Útil en actualizaciones de datos, identificación de objetos en comunicación, comparación por identidad, establecer la traza de los elementos, …

  27. EMOF • MOF: Essential MOF (EMOF) + Complete MOF (CMOF) • EMOF es un subconjunto “mínimo” de MOF que contiene el núcleo con las capacidades básicas. • El objetivo de EMOF es facilitar su implementación y que las herramientas conformen a MOF. • Proporciona el conjunto mínimo de elementos para hacer modelado OO: clases, atributos, operaciones, herencia, y paquetes. • EMOF permite definir metamodelos simples.

  28. EMOF

  29. EMOF

  30. CMOF • Elementos principales: • Clase, Asociación, Generalización y Paquete • Las clases tienenAtributosyOperaciones • Una asociación tiene dos extremos que pueden tener una cardinalidad asociada y semántica de orden y agregación, y navegabilidad.

  31. CMOF

  32. MOF

  33. Metamodelo UML Instancia de MOFAttribute Instancia de MOFGeneralizes Instancia de MOFAssociation Instancia de MOFClass

  34. MetamodeloUML Instancia de MOFGeneralizes Instancia de MOFAttribute Instancia de MOFAssociation Instancia de MOFClass

  35. CWM Instancia de MOFAssociation Instancia de MOFClass Instancia de MOFAttribute Instancia de MOFGeneralization

  36. Arquitectura de cuatro niveles

  37. EMF-Eclipse • Framework de DSDM para Eclipse. • “Modelado y programación pueden ser considerados la misma cosa” • Código Java generado a partir de un modelo Ecore • Notificación de cambios, reflexión, serialización XMI, persistencia, clases de utilidad. UML (diagramas de clase) Java (anotaciones) EMF Model Ecore XML

  38. Ecore 0..* 0..* 0..*

  39. Ecore • EClass • Modela clases • EAttribute • Modela atributos • EDataType • Modela los tipos de los atributos, que son tipos primitivos y tipos de datos objetos definidos en Java. • EReference • Modela asociaciones entre clases, incluyendo composición. • Epackage y EFactory • Clases y tipos relacionados son agrupados en paquetes y una factoría se utiliza para crear objetos.

  40. Ecore: Parte Estructural

  41. Ecore : Parte Comportamiento 0..* 0..* 0..* 0..*

  42. Ecore: Paquetes 0..* 0..*

  43. MOF • Metamodelos MOF son independientes de la plataforma. • Mappings de MOF a middleware, lenguajes, y formatos de información, permiten a generadores transformar automáticamente una sintaxis abstracta de un metamodelo en representaciones concretas basadas en plataformas concretas. • Se han definido mappings para CORBA, XML (XMI) y Java (JMI).

  44. XMI (XML Data Interchange) • Formato de intercambio de metadatos común independiente de cualquier plataforma. • Nueva forma de transferir metadatos entre repositorios MOF. • Serialización de modelos y metamodelos MOF en XML • Primero fue aplicado al metamodelo de UML • Proporciona interoperabilidad entre herramientas

  45. Metamodelo de clases MOF EMOF

  46. XMI del metamodelo de clases (EMOF) <?xml version="1.0" encoding="UTF-8"?> <emof:Package xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:emof="http://schema.omg.org/spec/mof/2.0/emof.xmi" xmi:id="ClassM" name="ClassM"> <ownedType xmi:type="emof:Class" xmi:id="6E721B079B360F7A00D1E07C4458BAA5" name="Class" superClass="6EEE79489B360F7A007244CA3BE86B5B"> <ownedAttribute xmi:id="73695CDB9B360F7A0033B121713E40BF"name="attrs"upper="*" type="6EF9DA649B360F7A007244CA408DB38E" isComposite="true"opposite="ClassM.Attribute.owner"/> </ownedType> <ownedType xmi:type="emof:Class" xmi:id="6EEE79489B360F7A007244CA3BE86B5B" name="Classifier"> <ownedAttribute xmi:id="ClassM.Classifier.name" name="name“ > <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/mof/2.0/emof.xmi#String"/> </ownedAttribute> <ownedAttribute xmi:id="73695CDB9B360F7A0033B121AF590F9B" name="typeOf" upper="*" type="6EF9DA649B360F7A007244CA408DB38E" opposite="ClassM.Attribute.type"/> </ownedType> <ownedType xmi:type="emof:Class" xmi:id="6EF9DA649B360F7A007244CA408DB38E" name="Attribute"> <ownedAttribute xmi:id="ClassM.Attribute.owner" name="owner"lower="1" type="6E721B079B360F7A00D1E07C4458BAA5" opposite="73695CDB9B360F7A0033B121713E40BF"/> <ownedAttribute xmi:id="ClassM.Attribute.type" name="type" lower="1" type="6EEE79489B360F7A007244CA3BE86B5B" opposite="73695CDB9B360F7A0033B121AF590F9B"/> <ownedAttribute xmi:id="ClassM.Attribute.name" name="name"> <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/mof/2.0/emof.xmi#String"/> </ownedAttribute> <ownedAttribute xmi:id="ClassM.Attribute.is_primary" name="is_primary"> <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/mof/2.0/emof.xmi#Boolean"/> </ownedAttribute> </ownedType> <ownedType xmi:type="emof:Class" xmi:id="6EF9E0579B360F7A007244CA0FCB1365" name="PrimitiveType" superClass="6EEE79489B360F7A007244CA3BE86B5B"/> </emof:Package>

  47. XMI del metamodelo de clases (ECore) <?xml version="1.0" encoding="UTF-8"?> <ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="ClassM" nsURI="http://gts.inf.um.es/examples/class" nsPrefix="classm"> <eClassifiers xsi:type="ecore:EClass"name="Class" eSuperTypes="#//Classifier"> <eStructuralFeatures xsi:type="ecore:EReference" name="attrs" upperBound="-1" eType="#//Attribute" containment="true" eOpposite="#//Attribute/owner"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass"name="Attribute"> <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//Classifier"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="is_primary" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> <eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="#//Class" eOpposite="#//Class/attrs"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass"name="Classifier"> <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="PrimitiveType" eSuperTypes="#//Classifier"/> <eClassifiers xsi:type="ecore:EClass" name="Model"> <eStructuralFeatures xsi:type="ecore:EReference" name="classifiers" upperBound="-1" eType="#//Classifier" containment="true"/> </eClassifiers> </ecore:EPackage>

  48. Table Column name : String name : String Fkey cols : set(Column) owner : Table references : Table pKeys : set(Column) pKeyOf : Table +pKeys 1..n 1..n owner : Table referenceBy : set(FKey) partOfFkey : Fkey +pKeyOf 1 1 cols : set(Column) fkeys : set(Fkey) type : String Column +owner +cols Table +owner name : String name : String 1 1 1 1 0..n 0..n type : String +references 1..n 1..n +cols 1 1 0..n +partOfFkey +referencedBy Fkey 0..n 0..n +fKeys 0..n 0..n Metamodelo Relacional MOF EMOF

  49. Metamodelo relacional (EMOF) <?xml version="1.0" encoding="UTF-8"?> <emof:Package xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:emof="http://schema.omg.org/spec/mof/2.0/emof.xmi" xmi:id="TableM" name="TableM"> <ownedType xmi:type="emof:Class" xmi:id="6F184C409B360F7A007244CA1577F422" name="Table“ > <ownedAttribute xmi:id="TableM.Table.name" name="name"> <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/mof/2.0/emof.xmi#String"/> </ownedAttribute> <ownedAttribute xmi:id="73A6F82B9B360F7A0033B121EF646314" name="cols" upper="*" type="6F1951099B360F7A007244CA3E24CF40"isComposite="true"opposite="TableM.Column.owner"/> <ownedAttribute xmi:id="73A6F82B9B360F7A0033B1218D1F3EAA" name="pkeys" upper="*" type="6F1951099B360F7A007244CA3E24CF40" opposite="TableM.Column.pkeyOf"/> <ownedAttribute xmi:id="73A6F82B9B360F7A0033B12107163D64" name="referenceBy" upper="*" type="6F197CD29B360F7A007244CA704AD65E" opposite="TableM.FKey.references"/> <ownedAttribute xmi:id="73A6F82B9B360F7A0033B1219677E62B" name="fkeys" upper="*" type="6F197CD29B360F7A007244CA704AD65E" opposite="TableM.FKey.owner"/> </ownedType> <ownedType xmi:type="emof:Class"xmi:id="6F1951099B360F7A007244CA3E24CF40" name="Column"> <ownedAttribute xmi:id="TableM.Column.owner" name="owner" lower="1" type="6F184C409B360F7A007244CA1577F422" opposite="73A6F82B9B360F7A0033B121EF646314"/> <ownedAttribute xmi:id="TableM.Column.pkeyOf" name="pkeyOf" lower="1" type="6F184C409B360F7A007244CA1577F422" opposite="73A6F82B9B360F7A0033B1218D1F3EAA"/> <ownedAttribute xmi:id="TableM.Column.type" name="type"> <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/mof/2.0/emof.xmi#String"/> </ownedAttribute> <ownedAttribute xmi:id="TableM.Column.name" name="name"> <type xmi:type="emof:PrimitiveType" href="http://schema.omg.org/spec/mof/2.0/emof.xmi#String"/> </ownedAttribute> <ownedAttribute xmi:id="73A6F82C9B360F7A0033B1218CE3CB87" name="partOfFkey" lower="1" type="6F197CD29B360F7A007244CA704AD65E" opposite="TableM.FKey.cols"/> </ownedType> <ownedType xmi:type="emof:Class" xmi:id="6F197CD29B360F7A007244CA704AD65E" name="FKey"> <ownedAttribute xmi:id="TableM.FKey.references" name="references" type="6F184C409B360F7A007244CA1577F422" opposite="73A6F82B9B360F7A0033B12107163D64"/> <ownedAttribute xmi:id="TableM.FKey.owner" name="owner" lower="1" type="6F184C409B360F7A007244CA1577F422" opposite="73A6F82B9B360F7A0033B1219677E62B"/> <ownedAttribute xmi:id="TableM.FKey.cols" name="cols" upper="*" type="6F1951099B360F7A007244CA3E24CF40" opposite="73A6F82C9B360F7A0033B1218CE3CB87"/> </ownedType> </emof:Package>

More Related