Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la...

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

Transcript of Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la...

Page 1: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería 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

Departamento de Informática y Sistemas

Jesús García MolinaDepartamento de Informática y Sistemas

Universidad de Murciahttp://dis.um.es/~jmolina

Page 2: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

DSDM 221/04/23

Contenidos

Metamodelado Lenguajes de metamodelado

– MOF– Ecore

Lenguaje OCL Perfiles UML Cuestiones de metamodelado

Page 3: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 4: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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,...)

Page 5: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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).

Page 6: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Metamodelado

CompositeState

Event

Transition

0..n

0..1

0..n

0..1+trigger

State

0..n

0..n

0..n

0..n

0..n0..1 0..n0..1

StateMachine

0..n

0..1

0..n+transitions

0..1

0..1

1

0..1

1+top

Sintaxis abstracta de una máquina de

estados

context StateMachine inv: EstadosDistintoNombre states-> forAll (s1 | states->forAll (s2 | s1.name = s2.name

implies s1 = s2))end

+states

Page 7: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Metamodelado

ruido

after (2 sec) send c.estaActivo

contactar

objetivoEn(p)[representaAmenaza] / t.añadirObjetivo(p)

InactivoBuscando

Rastreando Acoplamiento

Sintaxis concreta de una máquina de

estados

Page 8: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 9: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 10: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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.

Page 11: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 12: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 13: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 14: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 15: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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,…

Page 16: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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”

Page 17: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Arquitectura de cuatro niveles

Page 18: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Arquitectura de cuatro niveles

Page 19: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

MOFElementoModelo

nombre : String

Tabla Columna

1..n1

+tabla +columna

1 1..n

ElementoModelo

nombre : String

ColumnaTabla

1..n1

+columna

1..n

+tabla

1

0..1

0..n

0..1 +padre

+hijo

0..n

context Tabla inv: padre.columna -> forAll (columnaPadre | self.columna ->includes (columnaPadre))

Tabla y Columna sonelementos de un modelo

Existe el concepto de jerarquía de tablas

Page 20: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Á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

Page 21: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Ejemplo AST

:Tabla

nombre = “Persona”

:Columna

nombre = “Pepe”

:Columna

dni = “1234567”

:Columna

sueldo = “100000”

:Tabla

nombre = “Empleado”

Page 22: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 23: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Infraestructura: Core

ProfilesDefine mecanismos para

extender metamodelos

CoreContiene conceptos

básicos de metamodelos

Page 24: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

SuperEstructura: Estructura

Page 25: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

SuperEstructura: Comportamiento

Page 26: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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, …

Page 27: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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.

Page 28: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.
Page 29: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

EMOF

Page 30: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

EMOF

Page 31: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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.

Page 32: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

CMOF

Page 33: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

MOF

Association

isDerived : boolean

Classifier

Property

Operation

Class

isSingleton : boolean

Page 34: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Metamodelo UML

ModelElement

name : Name

NameSpaceGeneralizableElement

isRoot : booleanisLeaf : booleanisAbstract : boolean

StructuralFeature

multiplicity : MultiplicityChangeableKindScopeKindOrderingKind

BehavioralFeature

isQuery : boolean

Class

active : boolean

Attribute

initialValue : Expression

Operation

concurrency : CallConcurrencyKindisRoot : booleanisLeaf : booleanisAbstract : booleanspecification : String

ClassifierFeature

ownerScope : ScopeKindvisibility : VisibilityKind 0..10..n

+owner

0..1

+feature

0..n

Instancia de MOFClass

Instancia de MOFAttribut

eInstancia de

MOFAssociation

Instancia de MOFGeneralizes

Page 35: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

MetamodeloUML

[0..1]

StructuralFeatureClassi fier

AggregationKind<<enumeration>>

nonesharedcom posite

Relationship

[0..1]

Classi fier

Classi fier

Operation

ValueSpecifi cation

Class

0..1 *

+class

0..1 {subsets nam espace,subsets redefinitionContext}

+nestedClassifier

*{ordered, subsets ownedMem ber}

*

+/superClass

*{redefines general }

0..1 *

+class

0..1 {subsets redefini tionContext,subsets namespace,

subsets featuringClassifier}

+ownedOperation

*{ordered,subsets feature,

subsets ownedMember}

Type

Property

isDerived : Boolean = falseisReadOnly : Boolean = falseisDerivedUnion : Boolean = false/ defaul t : Stringaggregation : AggregationKind = none/ isComposi te : Boolean

*

+redefinedProperty

*{subsets redefinedElement}

0..1 +/opposite0..1

*

+subsettedProperty

*

0..1 0..1

+owningProperty

0..1

{subsets owner}

+defaul tValue

0..1

{subsets ownedElement}

0..1 *

+class

0..1 {subsets classifier,subsets namespace,

subsets featuringClassifier}

+ownedAttribute

*{ordered,subsets attribute,

subsets ownedMem ber}

Association

isDerived : Boolean = false

1..*+/endT ype 1..*

{ordered}

0..1*

+owningAssociation

0..1{subsets association,subsets namespace,

subsets featuringClassifier}

+ownedEnd

* {ordered,subsets mem berEnd,

subsets feature,subsets ownedMem ber}

0..12..*

+association

0..1

+memberEnd

2..*

{ordered, subsets member}

*

+navigableOwnedEnd

* {subsets ownedEnd}

Instancia de MOFAssociation

Instancia de MOFClass

Instancia de MOFGeneralizes

Instancia de MOFAttribut

e

Page 36: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

CWM

Table

isTemporary : boolean/trigger : TriggerisSystem : boolean

View

isReadOnly : booleancheckOption : booleanqueryExpression : QueryExpression

NamedColumnSet

/type : SQLStructuredType/usingTrigger : Trigger/optionScopeColumn : Column

ColumnSet

Column

scale : intNullable : NullableTypelength : intCharacterSetName : StringCollationName : String

0..n0..1

+/owner +/feature

0..n0..1

Instancia de MOFClass

Instancia de MOFAttribut

e

Instancia de MOFAssociation

Instancia de MOFGeneralizatio

n

Page 37: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 38: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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.

EMF Model

Java (anotaciones)

XML

UML(diagramas de clase)

Ecore

Page 39: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Ecore

0..*

0..*

0..*

EAttribute

name : StringiD : boolean

EDataType

name : String1

eAttributeType

1

EReference

name : Stringcontainment : booleanlowerBound : intupperBound : int

0..10..1

eOpposite

EClass

name : String

eAttributes

eSuperTypes

eReferences1

eReferenceType

1

Page 40: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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.

Page 41: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Ecore: Parte Estructural

ENamedElement

name : String

ETypedElementEClassifier

0..10..1

eType

EStructuralFeature

changeable : boolean = truetransient : booleanunique : boolean = trueunsettable : booleanvolatile : booleanlowerBound : intupperBound : int = 1required : booleanmany : booleandefaultValueLiteral : StringdefaultValue : EJavaObject

getFeatureID()getContainerClass()

EDataType

name : String

EAttribute

EClass

name : String

EReference

Page 42: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Ecore : Parte Comportamiento

0..*

0..*

0..*

0..*

+eParameter

ETypedElement

EParameter

EClassifier

0..10..1

eType

EClass

name : StringEOperation

eExceptions

eAllOperations

+econtainingClass +eOperations +eOperation

Page 43: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Ecore: Paquetes

ENamedElement

name : StringEModelElement

EFactory

create()createFromString()convertToString()

EClassifier

EPackage

nsURI : StringnsPrefix : String

getEClassifier()11

+eEFactoryInstance

1

+ePackage

1

+ePackage+eClassifiers

+eSuperPackage

+eSubPackages0..*

0..*

Page 44: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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).

Page 45: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 46: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Metamodelo de clases

Classifier

name : StringtypeOf : set(Attribute)

Class

attrs : set(Attribute)

PrimitiveType

Attribute

name : Stringowner : Classtype : ClassifierisPrimary : Boolean

PrimitiveType

Classifier

name : String

Attribute

name : Stringowner : Classtype : ClassifierisPrimary : Boolean

0..n1

Class

Attribute

isPrimary : Booleanname : String

0..n

1 +owner

+attrs

+type

1

0..n

1 0..n

+typeOf

EMOF

MOF

Page 47: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

<?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>

XMI del metamodelo de clases (EMOF)

Page 48: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

<?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>

XMI del metamodelo de clases (ECore)

Page 49: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Metamodelo Relacional

EMOF

MOF

Table

name : Stringcols : set(Column)pKeys : set(Column)referenceBy : set(FKey)fkeys : set(Fkey)

Column

name : Stringowner : TablepKeyOf : TablepartOfFkey : Fkeytype : String

Fkeyreferences : Tableowner : Tablecols : set(Column)

Column

name : Stringtype : String

Table

name : String 0..n1

+cols

0..n1

+owner

1..n1

+pKeys1..n+pKeyOf 1

Fkey

0..n

1..n

+partOfFkey

+cols1..n

0..n

1

+fKeys

0..n

+owner

1

0..n

1 +references1

0..n+referencedBy

Page 50: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

<?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>

Metamodelo relacional (EMOF)

Page 51: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

<?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="TableM" nsURI="http://gts.inf.um.es/examples/relational" nsPrefix="relational"> <eClassifiers xsi:type="ecore:EClass" name="Table"> <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType

http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EReference" name="cols" upperBound="-1"

eType="#//Column" containment="true" eOpposite="#//Column/owner"/> <eStructuralFeatures xsi:type="ecore:EReference" name="pkeys" upperBound="-1" eType="#//Column"/> <eStructuralFeatures xsi:type="ecore:EReference" name="fkeys" upperBound="-1" eType="#//FKey" containment="true" eOpposite="#//FKey/owner"/> <eStructuralFeatures xsi:type="ecore:EReference" name="referencedBy" upperBound="-

1" eType="#//FKey"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="Column"> <eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="#//Table" eOpposite="#//Table/cols"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType

http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType

http://www.eclipse.org/emf/2002/Ecore#//EString"/> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="FKey"> <eStructuralFeatures xsi:type="ecore:EReference" name="references“ eType="#//Table"/> <eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="#//Table" eOpposite="#//Table/fkeys"/> <eStructuralFeatures xsi:type="ecore:EReference" name="cols" upperBound="-1"

eType="#//Column"/> </eClassifiers></ecore:EPackage>

Metamodelo Relacional (Ecore)

Page 52: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

XMI de un modelo “Relacional” (EMOF)

<xmi:XMI xmlns:emof='http://schema.omg.org/spec/mof/2.0/emof.xmi' xmi:version='2.0' xmlns:TableM='file:////home/jesus/usr/eclipse-age-dev/runtime-age.product/class2table-tutorial/metamodels/TableM.emof'

xmlns:xmi='http://www.omg.org/XMI'>

<TableM:Table name='Person' pkeys='TableM.Column_4' xmi:id='TableM.Table_1' referenceBy='TableM.FKey_3' fkeys='TableM.FKey_2 TableM.FKey_1'>

<cols name='Pet_name_id' partOfFkey='TableM.FKey_1' type='String' xmi:id='TableM.Column_1'/>

<cols name='Job_name_id' partOfFkey='TableM.FKey_2' type='String' xmi:id='TableM.Column_2'/>

<cols name='Job_address_id' partOfFkey='TableM.FKey_2' type='String' xmi:id='TableM.Column_3'/>

<cols name='name' type='String' xmi:id='TableM.Column_4' pkeyOf='TableM.Table_1'/>

<cols name='age' type='Integer' xmi:id='TableM.Column_5'/>

</TableM:Table>

<TableM:Table name='Job' pkeys='TableM.Column_6 TableM.Column_7' xmi:id='TableM.Table_2' referenceBy='TableM.FKey_2' fkeys='TableM.FKey_3'>

<cols name='name' type='String' xmi:id='TableM.Column_6' pkeyOf='TableM.Table_2'/>

<cols name='address' type='String' xmi:id='TableM.Column_7' pkeyOf='TableM.Table_2'/>

<cols name='Person_name_id' partOfFkey='TableM.FKey_3' type='String' xmi:id='TableM.Column_8'/> </TableM:Table>

<TableM:Table name='Pet' pkeys='TableM.Column_9' xmi:id='TableM.Table_3' referenceBy='TableM.FKey_1'>

<cols name='name' type='String' xmi:id='TableM.Column_9' pkeyOf='TableM.Table_3'/>

<cols name='age' type='Integer' xmi:id='TableM.Column_10'/>

</TableM:Table>

<TableM:FKey references='TableM.Table_1' xmi:id='TableM.FKey_3' cols='TableM.Column_8' owner='TableM.Table_2'/>

<TableM:FKey references='TableM.Table_2' xmi:id='TableM.FKey_2' cols='TableM.Column_2 TableM.Column_3' owner='TableM.Table_1'/>

<TableM:FKey references='TableM.Table_3' xmi:id='TableM.FKey_1' cols='TableM.Column_1' owner='TableM.Table_1'/> </xmi:XMI>

Page 53: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

<xmi:XMI xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://gts.inf.um.es/examples/relational ../metamodels/TableM.ecore' xmi:version='2.0' xmlns:xmi='http://www.omg.org/XMI'>

<relational:Table name='Person' pkeys='#/0/@cols.3' xmlns:relational='http://gts.inf.um.es/examples/relational'>

<cols name='Pet_name_id' type='String'/>

<cols name='Job_name_id' type='String'/>

<cols name='Job_address_id' type='String'/>

<cols name='name' type='String'/>

<cols name='age' type='Integer'/>

<fkeys references='#/1' cols='#/0/@cols.1 #/0/@cols.2'/>

<fkeys references='#/2' cols='#/0/@cols.0'/>

</relational:Table>

<relational:Table name='Job' pkeys='#/1/@cols.0 #/1/@cols.1' xmlns:relational='http://gts.inf.um.es/examples/relational'>

<cols name='name' type='String'/>

<cols name='address' type='String'/>

<cols name='Person_name_id' type='String'/>

<fkeys references='#/0' cols='#/1/@cols.2'/>

</relational:Table>

<relational:Table name='Pet' pkeys='#/2/@cols.0' xmlns:relational='http://gts.inf.um.es/examples/relational'>

<cols name='name' type='String'/>

<cols name='age' type='Integer'/>

</relational:Table>

</xmi:XMI>

XMI de un modelo “Relacional” (Ecore)

Page 54: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Ejemplo XMI (UML)

<XMI xmi.version="1.2" xmlns:UML="org.omg/standards/UML"><XMI.header>

<XMI.metamodel name="UML" version="1.3" href="UML.xml"/>

<XMI.model name=“ejemplo" version="1" href="ejemplo.xml"/></XMI.header><XMI.content>

<UML:Class name="C1"><UML:Classifier.feature> <UML:Attribute name="at1“

visibility="private"/></UML:Classifier.feature>

</UML:Class></XMI.content>

</XMI>

C1

at1

Page 55: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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.

Page 56: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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.

Page 57: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Ejemplo JMI

Page 58: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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);

}

Page 59: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Ejemplo JMI: Interfaz proxy clase

public interface AttributeClass extends javax.jmi.reflect.RefClass {

public Attribute createAttribute();

public Attribute createAttribute(String name, String value);

}

Page 60: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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);

}

Page 61: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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();

}

Page 62: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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)

Page 63: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Repositorio MOF

Modelos UML (M1)

Modelos datos (M1)

Metamodelos (M2)

XMIJMI

El modelo MOF (M3)

Page 64: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

¿MOF o XML?

Tabla

nombre : String

Columna

nombre : String1..n1

+columna

1..n1

+tabla

{ordered}

context Table inv: columna -> forAll (col | col.nombre <> self.nombre)

< xml version = “1.0” encoding = “UTF-8”? ><! ELEMENT TABLA (NOMBRE, COLUMNA+)><!ELEMENT NOMBRE (#PCDATA)><!ELEMENT COLUMNA (NOMBRE)>

Page 65: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 66: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 67: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

OCL (Object Constraint Language )

¿Por qué usar OCL?– Limitaciones de los lenguajes (diagramas) para crear

modelos precisos y completos.

Pasajero

nombre

Vuelo

numeroVuelo

plazasDisponibles()

0..n

0..n

Avion

númeroPlazas10..n

+pasajeros

+vuelos

+avion

1

0..n

0..n

0..n

+vuelos

context Vuelo inv: pasajeros -> size() <= avion. númeroPlazas

Page 68: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 69: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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.

Page 70: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Ejemplo: Modelo “Royal and Loyal”

Page 71: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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 -> size() > 0

CustomerLoyaltyProgram

CustomerCard

programs

0..*

cards

owner

0..*

0..*

1

Page 72: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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)

Page 73: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

OCL: Query

context CustomerCard::getTransactions (from: Date,

until: Date) : Set(Transaction)

body: transactions -> select (date.isAfter(from) and

date.isBefore(until))

context LoyaltyProgram::getServices():Set(Service)

body: partners.deliveredServices->asSet()

context LoyaltyProgram::getServices(pp: ProgramPartner) :

Set(Service)

body: if partners ->includes(pp)

then pp.deliveredServices else Set() end

Page 74: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

OCL: Invariantes

context Customer

inv ofAge: age >= 18

context CustomerCard

inv checkDates: validFrom.isBefore(goodThru)

context CustomerCard

inv ofAge: owner.age >= 18

Page 75: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

OCL: Colecciones (Operaciones Estándar)

Operación Descripcióncount(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

Page 76: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

OCL: Colecciones (operaciones con significado diferente)

= y <> 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)

Page 77: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

OCL: OrderedSet y Sequence

append(objeto) at(index) first() last() insertAt(objeto) indexOf(objeto)

Page 78: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

OCL: Iteradores col -> isUnique (expr)

– Retorna true si expr tiene el mismo valor para cada elemento

col -> iterate (…)– Iterar sobre todos los elementos

select reject collect forAll exist sortedBy(expr)

Page 79: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

OCL: Coleccionescontext LoyaltyProgram

inv minServices: partners.deliveredServices -> size() >=1

context Customer

inv sizesAgree: programs ->size() =

card -> select(valid = true)->size()

context LoyaltyProgram

inv: participants -> forAll (age() <= 70)

context LoyaltyProgram

inv: self.participants -> forAll (c1, c2 |

c1 <> c2 implies c1.name <> c2.name)

context LoyaltyProgram

inv: points>0 implies transactions->exist(t | t.points > 0)

Page 80: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

OCL: Colecciones

context LoyaltyAccount

inv: transactions -> collect (points)->exist(

p : Integer | p = 500)

context LoyaltyAccount

inv: transactions.points -> exist(

p : Integer | p = 500)

Page 81: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

OCL: Pre y Postcondiciones

context LoyaltyAccount::enroll(c : Customer)

pre – not (participants -> includes (c))

post participants = participants@pre ->including(c)

context LoyaltyAccount::isEmpty(): Boolean

pre -- ninguna

post result = (points = 0)

context Customer::birthdaysHappens()

post: age = age@pre + 1

context Person::birthdaysHappens()

post: age = age@pre + 1

Page 82: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 83: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Extensión del metamodelo

Necesidad de herramientas que permitan:– Manejar el metamodelo– Asociar una sintaxis concreta a la extensión

UML::Class

CM::Component

transational: bool

Page 84: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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

Page 85: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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.

Page 86: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Perfiles UML

<<metaclass>>UML::Class

<<stereotype>>CM::Component

transational: bool

Extensión

Metamodelo de UML 2.0– Un perfil es una especialización de UML::Package – Un estereotipo es una especialización de UML::Class– Un perfil contiene estereotipos– Una extensión es una especialización de UML::Association 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.

Page 87: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

<<stereotype>>BeanUML::Component

<<stereotype>>SessionBean

state: StateKind

<<stereotype>>EntityBean

<<stereotype>>Bean

UML::Artifact

<<stereotype>>Remote

UML::Artifact<<stereotype>>

Home

<<enumeration>> StateKind

statefulstateless

context Beaninv: realization->realizer -> collect( ili.hasStereotype(“”Remote”)->size ()) == 1 && realization->realizer -> collect( ili.hasStereotype(“”Home”)->size ()) == 1

<<profile>>EJB

Page 88: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Perfiles del OMG

Page 89: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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#

Page 90: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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.

Page 91: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Ejemplo de definición de Perfil UML

Node *

+localnodes

1 *

MainNode

*

+target

+source

Edge

«metamodel» MyTopology

LocalEdge

location: String

“Modelar conexiones entre elementos de un sistema de información conectados según la topología estrella”

context MyTopology::MainNode inv : self.localnodes ->forAll (n : Node |

n.location = self.location) inv: self.target ->forAll (n : MainNode |

n.location <> self.location )

Page 92: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Ejemplo de definición de un Perfil UML

«profile» TopologyProfile

«stereotype» Node

«stereotype» MainNode

location: String

«metaclass» Class

«metaclass» Association

«stereotype» Egde

«stereotype» LocalEdge

Page 93: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Ejemplo de definición de un Perfil UML

context UML::InfrastructureLibrary::Core::Constructs::Class inv : self.isStereotyped(“Node”) implies

self.connection -> select (isStereotyped(“LocalEdge”)) -> size = 1 and self.connection -> select (isStereotyped(“Edge”)) ->isEmpty

context UML::InfrastructureLibrary::Core::Constructs::Association inv : self.isStereotyped(“LocalEdge”) implies

self.connection -> exists (participant.isStereotyped(“MainNode”) and multiplicity.min=1 and multiplicity.max=1)

inv : self.isStereotyped(“LocalEdge”) implies self.connection -> select (participant.isStereotyped(“Node”) or

participant.isStereotyped(“MainNode”) ) -> forAll (n1, n2 | n1.location = n2.location)

inv : self.isStereotyped(“Edge”) implies self.connection -> select(participant.isStereotyped(“Node”))->isEmpty and self.connection->select(participant.isStereotyped(“MainNode”) ) ->

forAll (n1, n2 | n1.location <> n2.location)

Page 94: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Cuestiones de metamodelado

¿Cómo expresar que las instancias de cierta metaclase Entidad deben implementar cierta interfaz IA?

Entidad context Entidadinv: realization -> exist(realizer oclTypeOf IA)

Entidad IA{subsets realization}

Entidad IA

Page 95: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Cuestiones de metamodelado

Varios elementos del metamodelo deben tener un nombre

<<interface>>ElementoConNombre

ServicioEntidad Nodo

Page 96: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Cuestiones de metamodelado

Varios elementos dependen de una interfaz IA porque invocan sus operaciones

Entidad IA* *

Entidad IA

Page 97: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Cuestiones de metamodelado

Un elemento Entidad tiene un atributo ID de tipo String.

Entidad

context Entidadinv: self.attributes -> select (name =“ID”)->size == 1&&self.attributes -> select (name =“ID”)->forAll( type.name = “String”)

Entidad

ID: String

Page 98: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

Ejemplo de metamodeloDSL para crear “modelos de características”

MOF::Class

Attribute

type: Stringvalue: String

attributes

FM::Feature FM::SubFeatureGroupgroups

n1

FM::Concept

features parentn 1

FM::GroupKind11

kind

MOF

FeatureModel

context FM::Conceptinv: parent == null

context FM::GroupKindinv: value ==“optional” || value ==“required” value == “alternative”

Page 99: Tema 2. Fundamentos del DSDM. Metamodelado Posgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas.

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