Tema 2. Fundamentos del DSDM. Metamodelado - PowerPoint PPT Presentation

About This Presentation
Title:

Tema 2. Fundamentos del DSDM. Metamodelado

Description:

Eclipse (EMF, Eclipse Modeling Framework) Ecore ... EMF-Eclipse. Framework de DSDM para Eclipse. ... xmlns:ecore='http://www.eclipse.org/emf/2002/Ecore' name='ClassM' ... – PowerPoint PPT presentation

Number of Views:294
Avg rating:3.0/5.0
Slides: 100
Provided by: jessjoaqun
Category:

less

Transcript and Presenter's Notes

Title: Tema 2. Fundamentos del DSDM. Metamodelado


1
Tema 2. Fundamentos del DSDM. Metamodelado
Departamento de Informática y Sistemas
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/j
molina
2
Contenidos
  • Metamodelado
  • Lenguajes de metamodelado
  • MOF
  • Ecore
  • Lenguaje OCL
  • Perfiles UML
  • Cuestiones de metamodelado

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-gt forAll (s1 states-gtforAll
(s2 s1.name s2.name implies s1
s2)) end
states
Sintaxis abstracta de una máquina de estados
7
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)
  • MOF es 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
Nivel Descripción
M3 (Meta-metamodelo) Define un lenguaje para especificar metamodelos
M2 (Metamodelo) Define un lenguaje para especificar modelos Cada elemento es una instancia del meta-metamodelo
M1 (Modelo) Cada elemento es una instancia de un metamodelo.
M0 (Instancia) Instancias de elementos definidos en un modelo
13
Arquitectura de cuatro niveles en MDA
Nivel Descripción
M3 MOF
M2 metamodelos, instancias de los elementos MOF
M1 modelos, instancia de un metamodelo MOF
M0 el sistema, objetos y datos, instancias de los elementos de un modelo
14
Arquitectura de cuatro niveles Ejemplo
Nivel Ejemplo
M3 MOF
M2 Metamodelo de UML
M1 Modelo de clases UML para un sistema TPV
M0 Instancias de elementos en el modelo de clases del TPV
15
Arquitectura de cuatro niveles Ejemplo
Nivel Ejemplo Elementos
M3 MOF Clase, Atributo, Asociación,..
M2 Metamodelo de UML Clase, Atributo, Asociación, Estado, Actividad, Caso de uso,
M1 Modelo de clases UML para un sistema TPV Clase Cliente, atributo dni, asociación Cliente-Pedido
M0 Instancias de elementos en el modelo de clases del TPV Cliente Pepe Pérez, 87654321, Cliente Ana Haro, 1234567,
16
Arquitectura de cuatro niveles Ejemplo
Nivel Ejemplo Elementos
M3 MOF Clase, Atributo, Asociación,..
M2 Metamodelo del DSL TaskFlow Actividad, Tarea, Agente,..
M1 Modelo de TaskFlow Actividad Gestión artículos de un Congreso, Tarea Enviar artículo, Actor Autor
M0 Instancias de elementos en el modelo de clases del TPV Actividad Congreso DSDM, Tarea Envío artículo XXX, Actor JJGM
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 -gt forAll
(columnaPadre self.columna -gtincludes
(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
Columna nombre Pepe
Columna dni 1234567
Tabla nombre Empleado
Columna sueldo 100000
22
MOF (MetaObject Facility)
  • UML 2.0 está organizado en dos partes
    Infraestructura y SuperEstructura
  • Infraestructura define las construcciones básicas
    de UML 2.0.
  • SuperEstructura define 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
Profiles Define mecanismos para extender
metamodelos
Core Contiene conceptos básicos de 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
(No Transcript)
29
EMOF
30
EMOF
31
CMOF
  • Elementos principales
  • Clase, Asociación, Generalización y Paquete
  • Las clases tienen Atributos y Operaciones
  • Una asociación tiene dos extremos que pueden
    tener una cardinalidad asociada y semántica de
    orden y agregación, y navegabilidad.

32
CMOF
33
MOF
34
Metamodelo UML
Instancia de MOFAttribute
Instancia de MOFGeneralizes
Instancia de MOFAssociation
Instancia de MOFClass
35
MetamodeloUML
Instancia de MOFGeneralizes
Instancia de MOFAttribute
Instancia de MOFAssociation
Instancia de MOFClass
36
CWM
Instancia de MOFAssociation
Instancia de MOFClass
Instancia de MOFAttribute
Instancia de MOFGeneralization
37
Arquitectura de cuatro niveles
Nivel Descripción
M3 MOF
M2 metamodelos, instancias de los elementos MOF
M1 modelos, instancia de un metamodelo MOF
M0 el sistema, objetos y datos, instancias de los elementos de un modelo
38
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
39
Ecore
0..
0..
0..
40
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.

41
Ecore Parte Estructural
42
Ecore Parte Comportamiento
0..
0..
0..
0..
43
Ecore Paquetes
0..
0..
44
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).

45
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

46
Metamodelo de clases
MOF
EMOF
47
XMI del metamodelo de clases (EMOF)
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltemofPackage xmiversion"2.0"
  • xmlnsxmi"http//www.omg.org/XMI"
    xmlnsemof"http//schema.omg.org/spec/mof/2.0/emo
    f.xmi" xmiid"ClassM"
  • name"ClassM"gt
  • ltownedType xmitype"emofClass"
    xmiid"6E721B079B360F7A00D1E07C4458BAA5"
    name"Class"
  • superClass"6EEE79489B360F7A007244CA3BE86B5B
    "gt
  • ltownedAttribute xmiid"73695CDB9B360F7A0033B1
    21713E40BF" name"attrs" upper""
  • type"6EF9DA649B360F7A007244CA408DB38E"
    isComposite"true" opposite"ClassM.Attribute.owne
    r"/gt
  • lt/ownedTypegt
  • ltownedType xmitype"emofClass"
    xmiid"6EEE79489B360F7A007244CA3BE86B5B"
    name"Classifier"gt
  • ltownedAttribute xmiid"ClassM.Classifier.name
    " name"name gt
  • lttype xmitype"emofPrimitiveType"
    href"http//schema.omg.org/spec/mof/2.0/emof.xmi
    String"/gt
  • lt/ownedAttributegt
  • ltownedAttribute xmiid"73695CDB9B360F7A0033B1
    21AF590F9B" name"typeOf" upper""
  • type"6EF9DA649B360F7A007244CA408DB38E"
    opposite"ClassM.Attribute.type"/gt
  • lt/ownedTypegt
  • ltownedType xmitype"emofClass"
    xmiid"6EF9DA649B360F7A007244CA408DB38E"
    name"Attribute"gt
  • ltownedAttribute xmiid"ClassM.Attribute.owner
    " name"owner" lower"1" type"6E721B079B360F7A00D
    1E07C4458BAA5"
  • opposite"73695CDB9B360F7A0033B121713E40BF
    "/gt

48
XMI del metamodelo de clases (ECore)
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltecoreEPackage xmiversion"2.0"
  • xmlnsxmi"http//www.omg.org/XMI"
    xmlnsxsi"http//www.w3.org/2001/XMLSchema-instan
    ce"
  • xmlnsecore"http//www.eclipse.org/emf/2002/E
    core" name"ClassM"
  • nsURI"http//gts.inf.um.es/examples/class"
    nsPrefix"classm"gt
  • lteClassifiers xsitype"ecoreEClass"
    name"Class" eSuperTypes"//Classifier"gt
  • lteStructuralFeatures xsitype"ecoreEReferenc
    e" name"attrs" upperBound"-1"
  • eType"//Attribute" containment"true"
    eOpposite"//Attribute/owner"/gt
  • lt/eClassifiersgt
  • lteClassifiers xsitype"ecoreEClass"
    name"Attribute"gt
  • lteStructuralFeatures xsitype"ecoreEAttribut
    e" name"name" eType"ecoreEDataType
    http//www.eclipse.org/emf/2002/Ecore//EString"/gt
  • lteStructuralFeatures xsitype"ecoreEReferenc
    e" name"type" eType"//Classifier"/gt
  • lteStructuralFeatures xsitype"ecoreEAttribut
    e" name"is_primary" eType"ecoreEDataType
    http//www.eclipse.org/emf/2002/Ecore//EBoolean"/
    gt
  • lteStructuralFeatures xsitype"ecoreEReferenc
    e" name"owner" eType"//Class"
  • eOpposite"//Class/attrs"/gt
  • lt/eClassifiersgt
  • lteClassifiers xsitype"ecoreEClass"
    name"Classifier"gt
  • lteStructuralFeatures xsitype"ecoreEAttribut
    e" name"name" eType"ecoreEDataType
    http//www.eclipse.org/emf/2002/Ecore//EString"/gt
  • lt/eClassifiersgt

49
Metamodelo Relacional
MOF
EMOF
50
Metamodelo relacional (EMOF)
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltemofPackage xmiversion"2.0"
  • xmlnsxmi"http//www.omg.org/XMI"
    xmlnsemof"http//schema.omg.org/spec/mof/2.0/emo
    f.xmi" xmiid"TableM"
  • name"TableM"gt
  • ltownedType xmitype"emofClass"
    xmiid"6F184C409B360F7A007244CA1577F422"
    name"Table gt
  • ltownedAttribute xmiid"TableM.Table.name"
    name"name"gt
  • lttype xmitype"emofPrimitiveType"
    href"http//schema.omg.org/spec/mof/2.0/emof.xmi
    String"/gt
  • lt/ownedAttributegt
  • ltownedAttribute xmiid"73A6F82B9B360F7A0033B1
    21EF646314" name"cols" upper""
  • type"6F1951099B360F7A007244CA3E24CF40"
    isComposite"true" opposite"TableM.Column.owner"/
    gt
  • ltownedAttribute xmiid"73A6F82B9B360F7A0033B1
    218D1F3EAA" name"pkeys" upper""
  • type"6F1951099B360F7A007244CA3E24CF40"
    opposite"TableM.Column.pkeyOf"/gt
  • ltownedAttribute xmiid"73A6F82B9B360F7A0033B1
    2107163D64" name"referenceBy" upper""
  • type"6F197CD29B360F7A007244CA704AD65E"
    opposite"TableM.FKey.references"/gt
  • ltownedAttribute xmiid"73A6F82B9B360F7A0033B1
    219677E62B" name"fkeys" upper""
  • type"6F197CD29B360F7A007244CA704AD65E"
    opposite"TableM.FKey.owner"/gt
  • lt/ownedTypegt
  • ltownedType xmitype"emofClass"
    xmiid"6F1951099B360F7A007244CA3E24CF40"
    name"Column"gt
  • ltownedAttribute xmiid"TableM.Column.owner"
    name"owner" lower"1" type"6F184C409B360F7A00724
    4CA1577F422"

51
Metamodelo Relacional (Ecore)
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltecoreEPackage xmiversion"2.0"
  • xmlnsxmi"http//www.omg.org/XMI"
    xmlnsxsi"http//www.w3.org/2001/XMLSchema-instan
    ce"
  • xmlnsecore"http//www.eclipse.org/emf/2002/E
    core" name"TableM"
  • nsURI"http//gts.inf.um.es/examples/relationa
    l" nsPrefix"relational"gt
  • lteClassifiers xsitype"ecoreEClass"
    name"Table"gt
  • lteStructuralFeatures xsitype"ecoreEAttribut
    e" name"name" eType"ecoreEDataType
    http//www.eclipse.org/emf/2002/Ecore//EString"/gt
  • lteStructuralFeatures xsitype"ecoreEReferenc
    e" name"cols" upperBound"-1" eType"//Column"
  • containment"true" eOpposite"//Column/ow
    ner"/gt
  • lteStructuralFeatures xsitype"ecoreEReferenc
    e" name"pkeys" upperBound"-1"
  • eType"//Column"/gt
  • lteStructuralFeatures xsitype"ecoreEReferenc
    e" name"fkeys" upperBound"-1"
  • eType"//FKey" containment"true"
    eOpposite"//FKey/owner"/gt
  • lteStructuralFeatures xsitype"ecoreEReferenc
    e" name"referencedBy" upperBound"-1"
  • eType"//FKey"/gt
  • lt/eClassifiersgt
  • lteClassifiers xsitype"ecoreEClass"
    name"Column"gt
  • lteStructuralFeatures xsitype"ecoreEReferenc
    e" name"owner" eType"//Table"
  • eOpposite"//Table/cols"/gt

52
XMI de un modelo Relacional (EMOF)
  • ltxmiXMI xmlnsemof'http//schema.omg.org/spec/mo
    f/2.0/emof.xmi' xmiversion'2.0'
    xmlnsTableM'file////home/jesus/usr/eclipse-age-
    dev/runtime-age.product/class2table-tutorial/metam
    odels/TableM.emof'
  • xmlnsxmi'http//www.omg.org/XMI'gt
  • ltTableMTable name'Person' pkeys'TableM.Column_4
    ' xmiid'TableM.Table_1' referenceBy'TableM.FKey
    _3' fkeys'TableM.FKey_2 TableM.FKey_1'gt
  • ltcols name'Pet_name_id' partOfFkey'TableM.FKey_
    1' type'String' xmiid'TableM.Column_1'/gt
  • ltcols name'Job_name_id' partOfFkey'TableM.FKey_
    2' type'String' xmiid'TableM.Column_2'/gt
  • ltcols name'Job_address_id' partOfFkey'TableM.FK
    ey_2' type'String' xmiid'TableM.Column_3'/gt
  • ltcols name'name' type'String'
    xmiid'TableM.Column_4' pkeyOf'TableM.Table_1'/gt
  • ltcols name'age' type'Integer'
    xmiid'TableM.Column_5'/gt
  • lt/TableMTablegt
  • ltTableMTable name'Job' pkeys'TableM.Column_6
    TableM.Column_7' xmiid'TableM.Table_2'
    referenceBy'TableM.FKey_2' fkeys'TableM.FKey_3'gt
  • ltcols name'name' type'String'
    xmiid'TableM.Column_6' pkeyOf'TableM.Table_2'/gt
  • ltcols name'address' type'String'
    xmiid'TableM.Column_7' pkeyOf'TableM.Table_2'/gt
  • ltcols name'Person_name_id' partOfFkey'TableM.FK
    ey_3' type'String' xmiid'TableM.Column_8'/gt
    lt/TableMTablegt
  • ltTableMTable name'Pet' pkeys'TableM.Column_9'
    xmiid'TableM.Table_3' referenceBy'TableM.FKey_1
    'gt
  • ltcols name'name' type'String'
    xmiid'TableM.Column_9' pkeyOf'TableM.Table_3'/gt
  • ltcols name'age' type'Integer'
    xmiid'TableM.Column_10'/gt

53
XMI de un modelo Relacional (Ecore)
  • ltxmiXMI xmlnsxsi'http//www.w3.org/2001/XMLSche
    ma-instance' xsischemaLocation'http//gts.inf.um
    .es/examples/relational ../metamodels/TableM.ecore
    ' xmiversion'2.0' xmlnsxmi'http//www.omg.org/
    XMI'gt
  • ltrelationalTable name'Person'
    pkeys'/0/_at_cols.3' xmlnsrelational'http//gts.i
    nf.um.es/examples/relational'gt
  • ltcols name'Pet_name_id' type'String'/gt
  • ltcols name'Job_name_id' type'String'/gt
  • ltcols name'Job_address_id' type'String'/gt
  • ltcols name'name' type'String'/gt
  • ltcols name'age' type'Integer'/gt
  • ltfkeys references'/1' cols'/0/_at_cols.1
    /0/_at_cols.2'/gt
  • ltfkeys references'/2' cols'/0/_at_cols.0'/gt
  • lt/relationalTablegt
  • ltrelationalTable name'Job' pkeys'/1/_at_cols.0
    /1/_at_cols.1' xmlnsrelational'http//gts.inf.um.e
    s/examples/relational'gt
  • ltcols name'name' type'String'/gt
  • ltcols name'address' type'String'/gt
  • ltcols name'Person_name_id' type'String'/gt
  • ltfkeys references'/0' cols'/1/_at_cols.2'/gt
  • lt/relationalTablegt
  • ltrelationalTable name'Pet' pkeys'/2/_at_cols.0'
    xmlnsrelational'http//gts.inf.um.es/examples/re
    lational'gt
  • ltcols name'name' type'String'/gt
  • ltcols name'age' type'Integer'/gt

54
Ejemplo XMI (UML)
  • ltXMI xmi.version"1.2" xmlnsUML"org.omg/standard
    s/UML"gt
  • ltXMI.headergt
  • ltXMI.metamodel name"UML" version"1.3"
    href"UML.xml"/gt
  • ltXMI.model nameejemplo" version"1"
    href"ejemplo.xml"/gt
  • lt/XMI.headergt
  • ltXMI.contentgt
  • ltUMLClass name"C1"gt
  • ltUMLClassifier.featuregt
  • ltUMLAttribute name"at1
  • visibility"private"/gt
  • lt/UMLClassifier.featuregt
  • lt/UMLClassgt
  • lt/XMI.contentgt
  • lt/XMIgt

55
JMI (Java Metadata Interface)
  • JMI define un mapping Java para MOF
  • JMI especifica cómo generar automáticamente, para
    un metamodelo MOF cualquiera, un conjunto de API
    Java para manipular modelos de ese metamodelo.
  • API que proporciona un mapping MOF-Java
  • Interfaz de programación a MOF.
  • Integración con J2EE.

56
JMI
  • Las aplicaciones Java cliente pueden usar esta
    API o un API reflectiva genérica, para
    interactuar con los metadatos operaciones de
    consulta, recorrido, ciclo de vida.
  • Se puede construir un mecanismo para facilitar la
    interoperabilidad con metadatos genéricos.

57
Ejemplo JMI
58
Ejemplo JMI Interfaz instancia
  • public interface Element extends
    javax.jmi.reflect.RefObject
  • public String getName()
  • public void setName(String newValue)
  • public Node getContainer()
  • public void setContainer(Node newValue)

59
Ejemplo JMI Interfaz proxy clase
  • public interface AttributeClass extends
    javax.jmi.reflect.RefClass
  • public Attribute createAttribute()
  • public Attribute createAttribute(String name,
    String value)

60
Ejemplo JMI Interfaz proxy asociación
  • public interface Contains extends
    javax.jmi.reflect.RefAssociation
  • public boolean exists(Element element, Node
    container)
  • public java.util.List getElements(Node
    container)
  • public Node getContainer(Element element)
  • public boolean add(Element element, Node
    container)
  • public boolean remove(Element element, Node
    container)

61
Ejemplo JMI Interfaz proxy paquete
  • public interface XMLModelPackage extends
    javax.jmi.reflect.RefPackage
  • public NodeClass getNode()
  • public AttributeClass getAttribute()
  • public ElementClass getElement()
  • public RootNodeClass getRootNode()
  • public Contains getContains()

62
Repositorio MOF
  • A partir de un metamodelo MOF, un generador crea
    las APIs, junto con sus implementaciones, que
    permiten manipular modelos de ese tipo.
  • Posibilidad de código genérico para manipular
    metadatos del repositorio mismo código para
    modelos de distintos metamodelos.
  • Editores genéricos en los repositorios
  • MDR/NetBeans (MOF 1.4 y JMI)
  • RMOF (EMOF 2.0 y Ruby)

63
Repositorio MOF
XMI
JMI
Modelos UML (M1)
Modelos datos (M1)
Metamodelos (M2)
El modelo MOF (M3)
64
MOF o XML?
lt xml version 1.0 encoding UTF-8? gt lt!
ELEMENT TABLA (NOMBRE, COLUMNA)gt lt!ELEMENT
NOMBRE (PCDATA)gt lt!ELEMENT COLUMNA (NOMBRE)gt
65
OCL (Object Constraint Language )
  • Lenguaje declarativo para añadir información a
    los modelos UML restricciones, invariantes,
    queries,..
  • Estándar del OMG
  • Versión actual OCL 2.0

66
OCL (Object Constraint Language )
  • Lenguaje de especificación para escribir
    expresiones sobre modelos UML, p.e. queries,
    reglas de derivación de atributos, el cuerpo de
    operaciones de consulta, pre y postcondiciones o
    el invariante, guardas.
  • Extiende la potencia expresiva de UML y permite
    crear modelos más precisos y más completos.
  • Es tipado, cada expresión OCL tiene un tipo.
  • Utilizado para escribir las restricciones

67
OCL (Object Constraint Language )
  • Por qué usar OCL?
  • Limitaciones de los lenguajes (diagramas) para
    crear modelos precisos y completos.

context Vuelo inv pasajeros -gt size() lt
avion. númeroPlazas
68
OCL Características
  • Lenguaje de restricciones y de consulta
  • Lenguaje formal basado en teoría de conjuntos y
    lógica de predicados pero notación fácil de usar.
  • Fuertemente tipado
  • Tipos de modelos UML
  • Modelos validados antes de la ejecución
  • Lenguaje declarativo

69
OCL
  • Contexto de una definición
  • Especifica el elemento de un modelo UML para el
    que se define una expresión OCL.
  • Normalmente una clase, una interfaz o una
    operación
  • Tipo contextual
  • Es el tipo del objeto para el que se evaluará una
    expresión OCL una clase, interfaz, tipo de dato
    o componente.
  • Una expresión OCL se evalúa siempre para una
    única instancia del tipo contextual.

70
Ejemplo Modelo Royal and Loyal
71
Navegación
  • Los extremos de las asociaciones pueden ser
    utilizados para navegar de un objeto a otro
    Notación Punto.
  • context CustomerCard
  • inv self.owner.programs -gt size() gt 0

72
Navegación Tipos
  • Contexto CustomerCard
  • Tipo(self.owner) Customer
  • Contexto CustomerCard
  • Tipo(self.owner.programs) Set(LoyaltyProgram)
  • Contexto Customer
  • Tipo(self.programs) Set(LoyaltyProgram)
  • Contexto Customer
  • Tipo(self.cards) Set(CustomerCard)
  • Contexto LoyaltyProgram
  • Tipo(self.Customer.programs)
    Bag(CustomerCard)

73
OCL Query
  • context CustomerCardgetTransactions (from
    Date,
  • until Date) Set(Transaction)
  • body transactions -gt select (date.isAfter(from)
    and
  • date.isBefore(until))
  • context LoyaltyProgramgetServices()Set(Service)
  • body partners.deliveredServices-gtasSet()
  • context LoyaltyProgramgetServices(pp
    ProgramPartner) Set(Service)
  • body if partners -gtincludes(pp)
  • then pp.deliveredServices else Set() end

74
OCL Invariantes
  • context Customer
  • inv ofAge age gt 18
  • context CustomerCard
  • inv checkDates validFrom.isBefore(goodThru)
  • context CustomerCard
  • inv ofAge owner.age gt 18

75
OCL Colecciones (Operaciones Estándar)
Operación Descripción
count(obj) Número de ocurrencias de un objeto obj en la colección
excludes (obj) True si obj no pertenece a la colección
excludesAll(c) True si ningún objeto la colección c pertenece a la colección
includes(obj) True si obj pertenece a la colección
includesAll(c) True si todos los objetos c pertenecen a la colección
isEmpty True si la colección está vacía.
notEmpty True si no está vacía.
size() Número de elementos
sum() Suma de todos los elementos
76
OCL Colecciones (operaciones con significado
diferente)
  • y ltgt
  • asBag(), asSet(), asOrderedSet(), asSequence()
  • Conversión de un tipo en otro
  • including(obj)
  • Retorna una nueva colección que incluye a obj
  • excluding(obj)
  • Retorna una nueva colección en la que se ha
    eliminado obj
  • flatten()
  • Trasforma una colección de colecciones en una
    única colección
  • union (col), intersection (col)

77
OCL OrderedSet y Sequence
  • append(objeto)
  • at(index)
  • first()
  • last()
  • insertAt(objeto)
  • indexOf(objeto)

78
OCL Iteradores
  • col -gt isUnique (expr)
  • Retorna true si expr tiene el mismo valor para
    cada elemento
  • col -gt iterate ()
  • Iterar sobre todos los elementos
  • select
  • reject
  • collect
  • forAll
  • exist
  • sortedBy(expr)

79
OCL Colecciones
  • context LoyaltyProgram
  • inv minServices partners.deliveredServices -gt
    size() gt1
  • context Customer
  • inv sizesAgree programs -gtsize()
  • card -gt select(valid true)-gtsize()
  • context LoyaltyProgram
  • inv participants -gt forAll (age() lt 70)
  • context LoyaltyProgram
  • inv self.participants -gt forAll (c1, c2
  • c1 ltgt c2 implies c1.name ltgt c2.name)
  • context LoyaltyProgram
  • inv pointsgt0 implies transactions-gtexist(t
    t.points gt 0)

80
OCL Colecciones
  • context LoyaltyAccount
  • inv transactions -gt collect (points)-gtexist(
  • p Integer p 500)
  • context LoyaltyAccount
  • inv transactions.points -gt exist(
  • p Integer p 500)

81
OCL Pre y Postcondiciones
  • context LoyaltyAccountenroll(c Customer)
  • pre not (participants -gt includes (c))
  • post participants participants_at_pre
    -gtincluding(c)
  • context LoyaltyAccountisEmpty() Boolean
  • pre -- ninguna
  • post result (points 0)
  • context CustomerbirthdaysHappens()
  • post age age_at_pre 1
  • context PersonbirthdaysHappens()
  • post age age_at_pre 1

82
Perfiles UML (Profiles)
  • En vez de definir un nuevo metamodelo MOF se
    puede extender un metamodelo existente.
  • Extensibilidad de los metamodelos (DSL)
  • Si el metamodelo elegido es UML
  • Extender el metamodelo UML
  • Definir un perfil UML
  • Mecanismo definido en el propio metamodelo de UML

83
Extensión del metamodelo
UMLClass
CMComponent transational bool
  • Necesidad de herramientas que permitan
  • Manejar el metamodelo
  • Asociar una sintaxis concreta a la extensión

84
Perfiles UML
  • UML es una familia de lenguajes
  • Lenguaje core Perfiles
  • Un perfil define una extensión de UML mediante la
    especialización de un subconjunto del metamodelo
    de UML.
  • Un perfil define una forma específica de usar UML
    para un dominio concreto EJB, aplicaciones web,
    CORBA, modelado del negocio,..
  • Agrupación de un conjunto de estereotipos,
    valores etiquetados y restricciones, con su
    correspondiente notación.
  • Usados como lenguajes de los PSM en MDA

85
Perfiles UML
  • Un perfil se define mediante un modelo formal
    UML.
  • Estereotipos pueden extender cualquier
    elemento del metamodelo para definir nuevas
    meta-clases, meta-asociaciones,..
  • Valores etiquetados definen los atributos de
    un estereotipo.
  • Restricciones semánticas en OCL completan la
    definición del perfil.
  • Se puede asociar una representación gráfica a
    cada estereotipo.

86
Perfiles UML
ltltmetaclassgtgt UMLClass
Extensión
  • Metamodelo de UML 2.0
  • Un perfil es una especialización de UMLPackage
  • Un estereotipo es una especialización de
    UMLClass
  • Un perfil contiene estereotipos
  • Una extensión es una especialización de
    UMLAssociation cuyos extremos son una clase y
    un estereotipo.
  • Un perfil se define sobre un metamodelo
    referencia (UML u otro perfil) y no puede
    modificar las definiciones existentes.
  • Las herramientas actuales no soportan bien los
    perfiles.

87
ltltprofilegtgt EJB
ltltstereotypegtgt Bean
UMLComponent
ltltstereotypegtgt SessionBean state StateKind
ltltstereotypegtgt EntityBean
ltltstereotypegtgt Bean
UMLArtifact
ltltenumerationgtgt StateKind stateful stateless

ltltstereotypegtgt Remote
UMLArtifact
ltltstereotypegtgt Home
88
Perfiles del OMG
89
Perfiles del OMG
  • Perfiles definidos por OMG
  • CORBA y CCM
  • EDOC (Enterprise Distributed Object Computing)
  • EAI (Enterprise Application Integration)
  • Planificación, Prestaciones, y Tiempo
  • Otros perfiles estándares de-facto
  • EJB
  • Java
  • C

90
Pasos para definir un Perfil UML
  • Definir, si no se dispone, el modelo conceptual
    de la plataforma o del dominio de aplicación.
  • Definir un estereotipo para cada elemento del
    modelo conceptual hay que elegir el elemento del
    metamodelo UML a extender.
  • Definir como valores etiquetados los atributos de
    los elementos del modelo conceptual.
  • Definir las restricciones del dominio como
    restricciones del perfil.

91
Ejemplo de definición de Perfil UML
Modelar conexiones entre elementos de un sistema
de información conectados según la topología
estrella
context MyTopologyMainNode inv
self.localnodes -gtforAll (n Node
n.location self.location)
inv self.target -gtforAll (n MainNode
n.location ltgt self.location )
92
Ejemplo de definición de un Perfil UML
93
Ejemplo de definición de un Perfil UML
context UMLInfrastructureLibraryCoreConstru
ctsClass inv self.isStereotyped(Node)
implies self.connection -gt select
(isStereotyped(LocalEdge)) -gt size 1 and
self.connection -gt select (isStereotyped(Edge
)) -gtisEmpty context UMLInfrastructureLibrary
CoreConstructsAssociation inv
self.isStereotyped(LocalEdge) implies
self.connection -gt exists (participant.isStere
otyped(MainNode) and multiplicity.min1
and multiplicity.max1) inv
self.isStereotyped(LocalEdge) implies
self.connection -gt select (participant.isStereoty
ped(Node) or participant.isStereotyped(Mai
nNode) ) -gt forAll
(n1, n2 n1.location n2.location) inv
self.isStereotyped(Edge) implies
self.connection -gt select(participant.isStereotype
d(Node))-gtisEmpty and
self.connection-gtselect(participant.isStereotyped(
MainNode) ) -gt forAll (n1, n2 n1.location
ltgt n2.location)
94
Cuestiones de metamodelado
Cómo expresar que las instancias de cierta
metaclase Entidad deben implementar cierta
interfaz IA?
Entidad
context Entidad inv realization -gt
exist(realizer oclTypeOf IA)
Entidad
IA
subsets realization
Entidad
IA
95
Cuestiones de metamodelado
Varios elementos del metamodelo deben tener un
nombre
ltltinterfacegtgt ElementoConNombre
Servicio
Entidad
Nodo
96
Cuestiones de metamodelado
Varios elementos dependen de una interfaz IA
porque invocan sus operaciones
Entidad
IA


Entidad
IA
97
Cuestiones de metamodelado
Un elemento Entidad tiene un atributo ID de tipo
String.
context Entidad inv self.attributes -gt select
(name ID)-gtsize 1 self.attributes -gt
select (name ID)-gtforAll( type.name
String)
Entidad
Entidad ID String
98
Ejemplo de metamodelo
DSL para crear modelos de características
Attribute type String value String
attributes
MOFClass
MOF
FMFeature
FMSubFeatureGroup
groups
FMGroupKind
kind
1
1
n
1
parent
1
features
n
Feature Model
FMConcept
context FMGroupKind inv value optional
value required value alternative
context FMConcept inv parent null
99
Herramientas y metamodelado
  • Herramientas UML
  • Mayoría no soportan metamodelado
  • Tendencia a soportar perfiles
  • Herramientas que tiene como entrada modelos
    creados con herramientas UML
  • Entrada es un modelo XMI
  • Validadores, Transformación de modelos,
    Generadores de código
  • Herramientas de metamodelado
  • Permiten definir metamodelos y generan editores
    de modelos
  • Tienen su propio lenguaje de metamodelado
  • Metaedit, GME, DSL Tools, XMF
Write a Comment
User Comments (0)
About PowerShow.com