Introducción a la ingeniería dirigida por modelos

123
Ingeniería Dirigida por Modelos Introducción Vicente García Díaz – [email protected] Universidad de Oviedo, 2012 Model Driven Engineering Research Group

Transcript of Introducción a la ingeniería dirigida por modelos

Page 1: Introducción a la ingeniería dirigida por modelos

Ingeniería Dirigida por Modelos

Introducción

Vicente García Díaz – [email protected]

Universidad de Oviedo, 2012

Model Driven Engineering

Research Group

Page 2: Introducción a la ingeniería dirigida por modelos

Tabla de contenidos

1. Conceptos básicos

2. Ejemplos de aplicación

3. Terminología

4. El estándar Model-Driven Architecture

5. La plataforma Eclipse Modeling Project

2

Introducción

Page 3: Introducción a la ingeniería dirigida por modelos
Page 5: Introducción a la ingeniería dirigida por modelos

5

Conceptos básicos

Fuente: http://www.flightglobal.com//

Page 6: Introducción a la ingeniería dirigida por modelos

6

Conceptos básicos

¿Qué es un modelo?

1. Punto de referencia para imitarlo o reproducirlo 2. Ejemplar que por su perfección se debe seguir e

imitar 3. Representación en pequeño de alguna cosa 4. Esquema teórico, generalmente matemático, de

un sistema o de una realidad compleja, como la evolución económica de un país, que se elabora para facilitar su comprensión y el estudio de su comportamiento

Fuente: http://www.rae.es/rae.html

Page 7: Introducción a la ingeniería dirigida por modelos

• Por supuesto…

7

Conceptos básicos

¿Modelos en el desarrollo software?

Modelo Producto Desarrollo

Page 8: Introducción a la ingeniería dirigida por modelos

• Las ingenierías clásicas se basan en el empleo de modelos para obtener un producto tras realizar un desarrollo

▫ No es posible automatizar el desarrollo completamente

8

Conceptos básicos

Proceso típico de desarrollo

Page 9: Introducción a la ingeniería dirigida por modelos

• Peculiaridad: los productos software se pueden diseñar y crear sin “salir” del ordenador

• Informática Información + Automática

¿Podríamos automatizar la etapa de desarrollo?

9

Conceptos básicos

Proceso de desarrollo de software

Modelo Producto Desarrollo

Page 10: Introducción a la ingeniería dirigida por modelos

• Para crear modelos software

• Dichos modelos definen los conceptos de un dominio determinado

• Las tecnologías existentes englobadas en MDE permiten trabajar con los modelos como si fueran lenguajes de programación de alto nivel

▫ Generalmente lenguajes de dominio específico

10

¿Para qué se utiliza principalmente MDE?

Conceptos básicos

Page 11: Introducción a la ingeniería dirigida por modelos

• Crecimiento de la complejidad del software

• No se reutiliza ni el conocimiento tecnológico ni del dominio

• Se necesita industrializar el desarrollo del software

• El término crisis del software sigue vigente

11

Motivación

Conceptos básicos

The major cause of the software crisis is that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem [Dijkstra, 1972]

Page 12: Introducción a la ingeniería dirigida por modelos

• El nivel de abstracción de los lenguajes va en aumento ▫ Binario

▫ Ensamblador

▫ Procedimental

▫ Orientado a objetos

• Hacia el espacio de la solución del problema

• En los años 80 surgen las herramientas CASE ▫ No tuvieron mucho éxito

12

Antecedentes

Conceptos básicos

Page 13: Introducción a la ingeniería dirigida por modelos

• Reducir la complejidad de las plataformas actuales

• Expresar los conceptos de los diferentes dominios de forma más apropiada

13

Objetivos

Conceptos del dominio

Conceptos del dominio

Conceptos de la tecnología utilizada

Trabajo mental de los desarrolladores

Conceptos de la tecnología utilizada

Conceptos básicos

Page 14: Introducción a la ingeniería dirigida por modelos
Page 15: Introducción a la ingeniería dirigida por modelos

Ejemplos de aplicación

Telefonía IP

Fuente: [Kelly and Tolvanen, 2008]

Page 16: Introducción a la ingeniería dirigida por modelos

Ejemplos de aplicación

Productos de seguros

Fuente: [Kelly and Tolvanen, 2008]

Page 17: Introducción a la ingeniería dirigida por modelos

Ejemplos de aplicación

Automatización del hogar

Fuente: [Kelly and Tolvanen, 2008]

Page 18: Introducción a la ingeniería dirigida por modelos

Ejemplos de aplicación

Aplicaciones para móviles

Fuente: [Kelly and Tolvanen, 2008]

Page 19: Introducción a la ingeniería dirigida por modelos

Ejemplos de aplicación

Relojes digitales

Fuente: [Kelly and Tolvanen, 2008]

Page 20: Introducción a la ingeniería dirigida por modelos

Ejemplos de aplicación

Sistemas de trazabilidad alimentaria

2. RECEPCION CUAJO

5. RECEPCION SAL

1. RECEPCION LECHE

10. SECADO

7. CUAJADA

FABRICA DE QUESOSPROCESO BEYOS

Fecha: 04/06/2008Versión: 0.017

11. ENVASADO

12. COMERCIALIZ

ACION

6. PASTEURIZA

14.1 Cliente?

14.2 Lote?

14.3 Unidades?

11.1 RFID Secado?

11.3 Nº Contra-etiquetas?

11.4 Primera Contra-etiqueta

11.5 Cliente?

1.1 Productor ?

1.2 Tipo?

1.3 Peso?

1.4 Temperatura?

1.5 Acidez?

1.6 Lote Productor?

1.7 Lote INT->?

2.1 Productor ?2.2 Cantidad?2.3 Lote Productor?2.4 Lote INT->?

3.1 Productor ?3.2 Cantidad?3.3 Lote Productor?3.4 Lote INT->?

7.1 Lote Leche?

7.2 Cantidad?

7.3 Mas Leche?

7.4 Lote Cuajo?

7.5 Mas Cuajo?

7.6 Lote Fermentos?

7.7 Mas Fermentos?

7.8 Lote Calcio? 7.9 Mas Calcio? 7.10 Lote INT->

6.1 Lote ?

6.2 Cantidad?

6.2 PH?

10.1 RFID Salado?

3. RECEPCION FERMENTOS

4. RECEPCION CALCIO

5.1 Productor ?5.2 Cantidad?5.3 Lote Productor?5.4 Lote INT->?

8. EMMOLDADO

4.1 Productor ?4.2 Cantidad?4.3 Lote Productor?4.4 Lote INT->?

ETIQUETAS RFID

9. SALADO

9.1 RFID Enmoldado?

9.2 Lote Sal?

13. ENVASADO REQUESÓN

12.1 Lote?

12.2 Nº Artículos?

12.3 Cliente?

ETIQUETAS COMERCIALES

Las etiquetas las irán colocando en las estanterías que quieran

14. COMERCIALIZ

ACION

13.1 Cliente?

13.2 Peso?

13.3 Lote?

13.4 Unidades?

8.1 Lote Cuajada?

8.2 Nº etiquetas deseadas?

Page 21: Introducción a la ingeniería dirigida por modelos

Ejemplos de aplicación

Videojuegos en entorno .NET

[Furtado, 2007]

Esto es un poco la idea del GADE4ALL, ¿Podríais cambiarlo por un par de

imágenes del GADE4ALL y así hablamos un poco del proyecto?

Page 22: Introducción a la ingeniería dirigida por modelos
Page 23: Introducción a la ingeniería dirigida por modelos

• Relación en cascada entre modelos y metamodelos

23

Terminología

El metamodelado

Elementos del mundo real (dominio)

Modelo Metamodelo describe describe

Page 24: Introducción a la ingeniería dirigida por modelos

24

Espacio conceptual

Dominio Metamodelo

Meta-metamodelo

Sintaxis abstracta

Semántica estática

Sintaxis concreta

Lenguaje de dominio

específico

Semántica

Modelo formal

Describe conceptos de

<<instanceof>>

<<instanceof>>

Basado en

Respeta a

Subdominios

Terminología

Page 25: Introducción a la ingeniería dirigida por modelos

• Clave de la ingeniería dirigida por modelos

• Es imprescindible para: 1. Construir lenguajes de dominio específico

2. Validar modelos

3. Transformar modelos

4. Generar artefactos (código, documentación, etc.)

5. Integración de herramientas

25

Beneficios del uso de un metamodelo

Terminología

Page 26: Introducción a la ingeniería dirigida por modelos

Terminología

Page 27: Introducción a la ingeniería dirigida por modelos

• Fueron definidas en los años 60 por Carl Adam Petri

• Son una especialización de la teoría de autómatas que permite expresar eventos concurrentes

• Tiene lugares, transiciones y arcos dirigidos

• Áreas de aplicación: análisis de datos, diseño de software, fiabilidad, flujo de trabajo…

27

Ejemplo de dominio: Redes de Petri

Dominio de las Redes de Petri

P1

P2

P1P3 P5

T1

T2

15

4

17

3 4 6

Terminología

Page 28: Introducción a la ingeniería dirigida por modelos

28

Ejemplo de dominio: Redes de Petri

Un metamodelo para el dominio

+Name : string

Node

+weight : int

Arc

Place Transition

PetriNet

10..*

1

0..*

P1

P2

P1P3 P5

T1

T2

15

4

17

3 4 6

Terminología

Page 29: Introducción a la ingeniería dirigida por modelos

29

Ejemplo de dominio: Redes de Petri

Un meta-metamodelo para el dominio

Model Element

Generalizable Element

Association ClassAttribute

Typed Element

+Name : string

Node

+weight : int

Arc

Place Transition

PetriNet

10..*

1

0..*

Terminología

Page 30: Introducción a la ingeniería dirigida por modelos

30

Ejemplo de dominio: Redes de Petri

Mapeo entre sintaxis abstracta y concreta

+Name : string

Node

+weight : int

Arc

Place Transition

PetriNet

1 0..*

1

0..*

P1 P2

T1

15 17

Terminología

Page 31: Introducción a la ingeniería dirigida por modelos

31

Terminología

Supermetamodelo (I)

Elementos del mundo real

Modelo

Metamodelo

Meta-metamodeloM3

M2

M1

M0

Instancia de

Representado por

Page 32: Introducción a la ingeniería dirigida por modelos

32

Terminología

Supermetamodelo (II)

Elementos del mundo real

UML classes, objects, ...

UML, ODM, ...

MOFM3

M2

M1

M0

MOF

Instancia de

Representado por

Elementos del mundo real

Programas informáticos

JAVA, C#, XML, ...

EBNF

EBNF

Page 33: Introducción a la ingeniería dirigida por modelos

33

Terminología

Dualidad de los espacios de modelado

MOFM3

M2

M1

M0

MO

F

UML ODM

Modelo UML de

la gramática de

Java

Modelo UML

de un

programa Java

Modelo

ODM de

animales

EB

NF

EBNF

Gra

mát

ica

de

Java

Pro

gram

a Ja

va

Page 34: Introducción a la ingeniería dirigida por modelos

34

Terminología

Ciclo de vida del desarrollo con MDE

Tradicional

Requisitos

Análisis

Diseño

Codificación

Pruebas

Despliegue

Texto

Modelo

Modelo

Código

Código

MDE

Requisitos

Análisis

Diseño

Codificación

Pruebas

Despliegue

Texto

Modelo

Modelo

Código

Código

Paso manual

Paso automático

Page 35: Introducción a la ingeniería dirigida por modelos

35

Terminología

Secuencia de pasos

Modelo

Transformación

Modelo

Transformación

Artefactos textuales

generados

Metamodelo

Reglas de transformación

Reglas de transformación

Modelo Modelo

<<instanceof>>

<<instanceof>>

Page 36: Introducción a la ingeniería dirigida por modelos

• Metamodelo (meta-metamodelo) + Plantillas

36

Terminología

¿Cómo se generan los artefactos? (I)

Especificación

Metamodelo

Instancia del

metamodeloPlantillas

Código

generado

Based

on

Yields

Instance of

Apply to

Page 38: Introducción a la ingeniería dirigida por modelos
Page 39: Introducción a la ingeniería dirigida por modelos

• http://www.omg.org/mda

39

El estándar Model-Driven Architecture

Introducción

Page 40: Introducción a la ingeniería dirigida por modelos

• Computation Independent Model (CIM)

• Platform Independent Model (PIM)

• Platform Specific Model (PSM)

• Implementation Specific Model (ISM)

40

El estándar Model-Driven Architecture

Puntos de vista

CIM

PIM

PSM 1 PSM n

ISM 1 ISM n

Page 41: Introducción a la ingeniería dirigida por modelos

41

El estándar Model-Driven Architecture

Arquitectura en cuatro capas

MOF

UML ODM

Modelos UML Modelos ODM

Sistema

Meta-metamodelo (M3)

Metamodelo (M2)

Modelo (M1)

Realidad (M0)

Page 42: Introducción a la ingeniería dirigida por modelos

• Ecore

ECORE META-METAMODEL

Estándares relacionados (MOF)

Meta-Object Facility (MOF) ECORE

El estándar Model-Driven Architecture

Page 43: Introducción a la ingeniería dirigida por modelos

43

El estándar Model-Driven Architecture

Empleo de MOF como origen de todo Estándares relacionados (MOF)

MOF

Metamodelo origen Metamodelo destino

Modelo origen Modelo destino

Reglas de transformación

(QVT)

transformación

Page 44: Introducción a la ingeniería dirigida por modelos

44

El estándar Model-Driven Architecture

Unified Modeling Language (UML) Estándares relacionados (UML)

• Estándar para ▫ Visualizar

▫ Especificar

▫ Documentar

▫ …

• Independiente del lenguaje

• Una combinación ▫ Fue diseñado por “The three amigos”

▫ James Rumbaugh, Ivar Jacobson, Grady Booch

Page 45: Introducción a la ingeniería dirigida por modelos

45

El estándar Model-Driven Architecture

Extensión de UML basada en Perfiles Estándares relacionados (UML)

«metaclass»

Attribute

«metaclass»

Class

«metaclass»

Operation1*

1 *

<<stereotype>> PrimaryKey <<stereotype>> Entity <<stereotype>> FinderMethod

«extends» «extends» «extends»

PersistenceTime: (short, long)

context Entity

inv: attribute->exists(isStereoKinded("PrimaryKey")

-<<FinderMethod>>findByCif()

-<<PrimaryKey>> cif : string

-name : string

<<Entity>> Empresa

-<<PrimaryKey>> nif : string

-edad : int

<<Entity>> Empleado 1*

{PersistenceTime=short}

stereotype

tagged value constraint

Page 46: Introducción a la ingeniería dirigida por modelos

46

El estándar Model-Driven Architecture

XML Metadata Interchange (XMI) (I) Estándares relacionados (XMI)

• Sirve para serializar modelos

• Permite que las herramientas se integren

XMI 1.1 – MOF 1.3

XMI 1.2 – MOF 1.4

XMI 1.3 – MOF 1.4

XMI 2.0 – MOF 1.4

XMI 2.1 – MOF 2.0

Page 47: Introducción a la ingeniería dirigida por modelos

47

El estándar Model-Driven Architecture

XML Metadata Interchange (XMI) (II) Estándares relacionados (XMI)

Page 48: Introducción a la ingeniería dirigida por modelos

48

El estándar Model-Driven Architecture

XML Metadata Interchange (XMI) (III) Estándares relacionados (XMI)

Page 49: Introducción a la ingeniería dirigida por modelos

49

El estándar Model-Driven Architecture

Object Constraint Language (OCL) (I) Estándares relacionados (OCL)

• Se utiliza para definir restricciones

• Es parte de UML

• Tipos ▫ Clase invariant

▫ Precondiciones de una operación precondition

▫ Postcondiciones de una operación postcondition

Page 50: Introducción a la ingeniería dirigida por modelos

50

El estándar Model-Driven Architecture

Object Constraint Language (OCL) (II) Estándares relacionados (OCL)

context Coche inv: conductor.edad >= 18

+contratar(entrada p : Persona)

Empresa

+conducir(entrada p : Persona)

Coche

-edad : int

Personaconductor

conductoresPotenciales

jefe

empleados

vehículos

poseedor

context Empresa inv: conductoresPotenciales = empleados->select(edad >= 18)

context Coche::conducir(p: Persona) pre: (conductor==null) && (p.edad >= 18) post: conductor = p

context Empresa::contratar(p: Persona) pre: --none post: (empleados.size = [email protected] + 1) && (empleados.includes(p))

Fuente: [Stahl and Völter, 2006]

Page 51: Introducción a la ingeniería dirigida por modelos

51

El estándar Model-Driven Architecture

Object Constraint Language (OCL) (III) Estándares relacionados (OCL)

• Restricción en nivel Mn afecta al nivel Mn-1

context PersonaDesconocida inv: name == “no identificada” || “desconocida”

context ParametrosNumericos inv: type.name == “Integer”

-name : String

-type : Type

«metaclass»

UML::Attribute

«metaclass»

MM::ParametrosNumericos

-name : String

«metaclass»

UML::Class

«metaclass»

MM::PersonaDesconocida

Page 52: Introducción a la ingeniería dirigida por modelos

52

El estándar Model-Driven Architecture

Query, Views, Transformations (QVT) (I) Estándares relacionados (QVT)

• Lenguaje de transformación de modelos

• Compuesto de tres lenguajes con objetivos distintos

• QVT ▫ Relacional

▫ Core

▫ Operacional Core Language

Relations Language O

per

atio

n M

app

ings

Lan

guag

e

Bla

ck Bo

x Ma

pp

ings

Page 53: Introducción a la ingeniería dirigida por modelos

53

El estándar Model-Driven Architecture

Query, Views, Transformations (QVT) (II) Estándares relacionados (QVT)

• Lenguaje relacional ▫ Transformaciones un conjunto de relaciones

Declarativo

Fuente: [Mens, 2009]

Page 54: Introducción a la ingeniería dirigida por modelos

54

El estándar Model-Driven Architecture

Query, Views, Transformations (QVT) (III) Estándares relacionados (QVT)

• Lenguaje operacional ▫ Transformaciones un conjunto de operaciones

Imperativo

Fuente: [Mens, 2009]

Page 55: Introducción a la ingeniería dirigida por modelos

Relaciones entre M1 y M2

+puedeMoverse() : bool

Vehículo

Coche

-malEstado : bool

Rueda

-nombre : string

Persona

1

4

+driver

1

+car

*

-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

Instance of

[http://smv.unige.ch/old/tiki-download_file.php?fileId=661]

La cadena de modelado

Relación entre M1 y M2 El estándar Model-Driven Architecture

Page 56: Introducción a la ingeniería dirigida por modelos

Relaciones entre M1 y M2

+puedeMoverse() : bool

Vehículo

Coche

-malEstado : bool

Rueda

-nombre : string

Persona

1

4

+driver

1

+car

*

-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

Instance of

La cadena de modelado

Relación entre M1 y M2 El estándar Model-Driven Architecture

Page 57: Introducción a la ingeniería dirigida por modelos

Relaciones entre M1 y M2

+puedeMoverse() : bool

Vehículo

Coche

-malEstado : bool

Rueda

-nombre : string

Persona

1

4

+driver

1

+car

*

-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

Instance of

La cadena de modelado

Relación entre M1 y M2 El estándar Model-Driven Architecture

Page 58: Introducción a la ingeniería dirigida por modelos

Relaciones entre M1 y M2

+puedeMoverse() : bool

Vehículo

Coche

-malEstado : bool

Rueda

-nombre : string

Persona

1

4

+driver

1

+car

*

-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

Instance of

La cadena de modelado

Relación entre M1 y M2 El estándar Model-Driven Architecture

Page 59: Introducción a la ingeniería dirigida por modelos

Relaciones entre M1 y M2

+puedeMoverse() : bool

Vehículo

Coche

-malEstado : bool

Rueda

-nombre : string

Persona

1

4

+driver

1

+car

*

-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

Instance of

La cadena de modelado

Relación entre M1 y M2 El estándar Model-Driven Architecture

Page 60: Introducción a la ingeniería dirigida por modelos

Relaciones entre M1 y M2

+puedeMoverse() : bool

Vehículo

Coche

-malEstado : bool

Rueda

-nombre : string

Persona

1

4

+driver

1

+car

*

-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

Instance of

La cadena de modelado

Relación entre M1 y M2 El estándar Model-Driven Architecture

Page 61: Introducción a la ingeniería dirigida por modelos

Relaciones entre M1 y M2

+puedeMoverse() : bool

Vehículo

Coche

-malEstado : bool

Rueda

-nombre : string

Persona

1

4

+driver

1

+car

*

-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

Instance of

La cadena de modelado

Relación entre M1 y M2 El estándar Model-Driven Architecture

Page 62: Introducción a la ingeniería dirigida por modelos

Relaciones entre M1 y M2

+puedeMoverse() : bool

Vehículo

Coche

-malEstado : bool

Rueda

-nombre : string

Persona

1

4

+driver

1

+car

*

-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

Instance of

La cadena de modelado

Relación entre M1 y M2 El estándar Model-Driven Architecture

Page 63: Introducción a la ingeniería dirigida por modelos

Instance of-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

-name : string

ModelElement

GeneralizableElement Feature

Classifier

Association

*

*

Class DataType

PrimitiveType VisibilityKind

TypedElement

StructuralFeature AssociationEnd

Attribute

La cadena de modelado

Relación entre M2 y M3

[http://smv.unige.ch/old/tiki-download_file.php?fileId=661]

El estándar Model-Driven Architecture

Page 64: Introducción a la ingeniería dirigida por modelos

Instance of-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

-name : string

ModelElement

GeneralizableElement Feature

Classifier

Association

*

*

Class DataType

PrimitiveType VisibilityKind

TypedElement

StructuralFeature AssociationEnd

Attribute

La cadena de modelado

Relación entre M2 y M3 El estándar Model-Driven Architecture

Page 65: Introducción a la ingeniería dirigida por modelos

Instance of-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

-name : string

ModelElement

GeneralizableElement Feature

Classifier

Association

*

*

Class DataType

PrimitiveType VisibilityKind

TypedElement

StructuralFeature AssociationEnd

Attribute

La cadena de modelado

Relación entre M2 y M3 El estándar Model-Driven Architecture

Page 66: Introducción a la ingeniería dirigida por modelos

Instance of-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

-name : string

ModelElement

GeneralizableElement Feature

Classifier

Association

*

*

Class DataType

PrimitiveType VisibilityKind

TypedElement

StructuralFeature AssociationEnd

Attribute

La cadena de modelado

Relación entre M2 y M3 El estándar Model-Driven Architecture

Page 67: Introducción a la ingeniería dirigida por modelos

Instance of-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

-name : string

ModelElement

GeneralizableElement Feature

Classifier

Association

*

*

Class DataType

PrimitiveType VisibilityKind

TypedElement

StructuralFeature AssociationEnd

Attribute

La cadena de modelado

Relación entre M2 y M3 El estándar Model-Driven Architecture

Page 68: Introducción a la ingeniería dirigida por modelos

Instance of-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

-name : string

ModelElement

GeneralizableElement Feature

Classifier

Association

*

*

Class DataType

PrimitiveType VisibilityKind

TypedElement

StructuralFeature AssociationEnd

Attribute

La cadena de modelado

Relación entre M2 y M3 El estándar Model-Driven Architecture

Page 69: Introducción a la ingeniería dirigida por modelos

Instance of-name : string

ModelElement

Classifier

-visibility : Visibility

Feature

Class DataType Operation Attribute AssociationEnd

Association

1

1 1..*

*

-generalizations

*

-name : string

ModelElement

GeneralizableElement Feature

Classifier

Association

*

*

Class DataType

PrimitiveType VisibilityKind

TypedElement

StructuralFeature AssociationEnd

Attribute

La cadena de modelado

Relación entre M2 y M3 El estándar Model-Driven Architecture

Page 70: Introducción a la ingeniería dirigida por modelos
Page 71: Introducción a la ingeniería dirigida por modelos

• Engloba todo lo relacionado con MDE en Eclipse The Eclipse Modeling Project (EMP) focuses on the evolution and promotion of

model‐based development technologies within the Eclipse community by providing a unified set of modeling frameworks, tooling, and standards implementations

• Todos tienen Eclipse Public Licence y han de ser Open Source

• No está relacionado con el grupo OMG pero…

• Se divide principalmente en: ▫ Desarrollo de sintaxis abstractas

▫ Desarrollo de sintaxis concretas

▫ Transformación de modelos

▫ Herramientas de desarrollo

▫ Desarrollo de nuevas tecnologías

▫ Agrupación de proyectos

• http://www.eclipse.org/modeling

71

La Plataforma Eclipse Modeling Project

Eclipse Modeling Project

Page 72: Introducción a la ingeniería dirigida por modelos

• Eclipse Modeling Framework (EMF)

▫ Ecore

▫ Otros componentes: Soporte para realizar transacciones sobre modelos

Validación de modelos

Consultas sobre modelos

Búsquedas sobre modelos

Comparación de modelos

Mecanismos de persistencia

72

La Plataforma Eclipse Modeling Project

Desarrollo de sintaxis abstractas

Page 73: Introducción a la ingeniería dirigida por modelos

• Graphical Modeling Framework (GMF)

▫ Servicio de sintaxis gráficas

▫ Permite crear un editor sobre el metamodelo Ecore

▫ Graphiti es una tecnología englobada dentro de GMF

• Textual Modeling Framework (TMF)

▫ Servicio de sintaxis textuales

▫ Permite crear un editor sobre el metamodelo Ecore

▫ Xtext es una tecnología englobada dentro de TMF

73

La Plataforma Eclipse Modeling Project

Desarrollo de sintaxis concretas

Page 74: Introducción a la ingeniería dirigida por modelos

• Model to Model Transformation (M2M)

▫ Para transformar unos modelos en otros

▫ QVT, ATL, …

• Model to Text Transformation (M2T)

▫ Para generar artefactos textuales

▫ Java Emitter Templates (JET), Xpand, etc…

74

La Plataforma Eclipse Modeling Project

Transformación de modelados

Page 75: Introducción a la ingeniería dirigida por modelos

• Model Development Tools (MDT)

▫ Proyectos basados en estándares de la industria UML

XML Schema Definition

Object Constraint Language (OCL)

Business Process Modeling Notation (BPMN2)

eTrice

Papyrus

75

La Plataforma Eclipse Modeling Project

Herramientas de desarrollo

Page 76: Introducción a la ingeniería dirigida por modelos

• Generative Modeling Technologies (GMT)

▫ Agrupa varios proyectos que aún están en fase experimental

▫ Muchos de ellos acaban formando parte de la lista principal de proyectos de EMP ATL -> ahora en M2M

Xpand -> ahora en M2T

Xtext -> ahora en TMF

76

La Plataforma Eclipse Modeling Project

Desarrollo de nuevas tecnologías

Page 77: Introducción a la ingeniería dirigida por modelos

• Modeling Amalgamation Project (Amalgam)

▫ Amalgamation -> Es el proceso de combinar o unir entidades en una única forma

▫ Su propósito es agrupar tecnologías de EMP y facilitar su uso, instalación e integración

▫ Es un Eclipse con un gran número de proyectos del EMP integrado

77

La Plataforma Eclipse Modeling Project

Agrupación de proyectos

Page 78: Introducción a la ingeniería dirigida por modelos

La Plataforma Eclipse Modeling Project

Page 80: Introducción a la ingeniería dirigida por modelos

Mediante editor gráfico

La Plataforma Eclipse Modeling Project

Page 81: Introducción a la ingeniería dirigida por modelos

• Nuevo Proyecto MDEWebMetamodelEditor

81

La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico)

Crear un proyecto

Page 82: Introducción a la ingeniería dirigida por modelos

• Nuevo elemento en la carpeta model Web.ecore

82

La Plataforma Eclipse Modeling Project

Crear el metamodelo (I) Definición de un metamodelo (editor gráfico)

Page 83: Introducción a la ingeniería dirigida por modelos

83

La Plataforma Eclipse Modeling Project

Crear el metamodelo (II) Definición de un metamodelo (editor gráfico)

Page 84: Introducción a la ingeniería dirigida por modelos

84

La Plataforma Eclipse Modeling Project

Visualizar el metamodelo Definición de un metamodelo (editor gráfico)

Page 85: Introducción a la ingeniería dirigida por modelos

• Nuevo EMF Generator Model Web.genmodel

85

La Plataforma Eclipse Modeling Project

Crear el modelo generador Definición de un metamodelo (editor gráfico)

Page 86: Introducción a la ingeniería dirigida por modelos

86

La Plataforma Eclipse Modeling Project

Configurar el modelo generador Definición de un metamodelo (editor gráfico)

Page 87: Introducción a la ingeniería dirigida por modelos

87

La Plataforma Eclipse Modeling Project

Crear JavaDoc

Botón derecho en Web.genmodel Reload

Definición de un metamodelo (editor gráfico)

Page 88: Introducción a la ingeniería dirigida por modelos

88

La Plataforma Eclipse Modeling Project

Especificar métodos (I) Definición de un metamodelo (editor gráfico)

Page 89: Introducción a la ingeniería dirigida por modelos

89

La Plataforma Eclipse Modeling Project

Especificar métodos (II)

EOperation

EParameter

Documentación JavaDoc

Cuerpo del método

Definición de un metamodelo (editor gráfico)

Page 90: Introducción a la ingeniería dirigida por modelos

90

La Plataforma Eclipse Modeling Project

Especificar métodos (III) Definición de un metamodelo (editor gráfico)

Page 91: Introducción a la ingeniería dirigida por modelos

91

La Plataforma Eclipse Modeling Project

Generar el código de los modelos Definición de un modelo (programáticamente)

Page 92: Introducción a la ingeniería dirigida por modelos

92

La Plataforma Eclipse Modeling Project

Crear un proyecto Definición de un modelo (programáticamente)

Page 93: Introducción a la ingeniería dirigida por modelos

93

La Plataforma Eclipse Modeling Project

Crear el código fuente para la definición

Definición de un modelo (programáticamente)

Page 94: Introducción a la ingeniería dirigida por modelos

94

La Plataforma Eclipse Modeling Project

Generar todos los artefactos Definición de un modelo (plugin)

Page 95: Introducción a la ingeniería dirigida por modelos

95

La Plataforma Eclipse Modeling Project

Crear el modelo mediante el editor Definición de un modelo (plugin)

Page 96: Introducción a la ingeniería dirigida por modelos

• El archivo My.web internamente es código XML (XMI)

• También se puede persistir el modelo creado con Java

96

La Plataforma Eclipse Modeling Project

Guardar el modelo en formato XMI Persistencia de modelos

Page 97: Introducción a la ingeniería dirigida por modelos

97

La Plataforma Eclipse Modeling Project

Cargar el modelo guardado en XMI Persistencia de modelos

Page 98: Introducción a la ingeniería dirigida por modelos

• Los modelos se utilizan para obtener artefactos en base a lo que se haya modelado

• Java Emitter Templates (JET) es una tecnología que permite transformar modelos a texto (M2T)

• En concreto, con JET se hace traducción y generación

▫ Modelo Clase Java Texto

• Tipos de elementos: ▫ Directivas <%@ … %>

▫ Expresiones <%= .. %>

▫ Scriplets <% … %>

98

La Plataforma Eclipse Modeling Project

Java Emitter Templates Generación de artefactos a partir de modelos

Page 99: Introducción a la ingeniería dirigida por modelos

• Desde el proyecto en el que se quiera generar artefactos…

99

La Plataforma Eclipse Modeling Project

Preparar el proyecto para trabajar con JET

Generación de artefactos a partir de modelos

Page 100: Introducción a la ingeniería dirigida por modelos

• Estado de cómo quedará el proyecto al finalizar el proceso

100

La Plataforma Eclipse Modeling Project

Resumen de acciones a realizar Generación de artefactos a partir de modelos

Page 101: Introducción a la ingeniería dirigida por modelos

101

La Plataforma Eclipse Modeling Project

Crear la plantilla Generación de artefactos a partir de modelos

Page 102: Introducción a la ingeniería dirigida por modelos

• Crear ConvertToHTML.java

102

La Plataforma Eclipse Modeling Project

Generar artefactos desde la clase Java Generación de artefactos a partir de modelos

Page 103: Introducción a la ingeniería dirigida por modelos

Mediante interfaces Java anotadas

La Plataforma Eclipse Modeling Project

Page 104: Introducción a la ingeniería dirigida por modelos

La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java)

Idea general de lo que se hará

1. Crear interfaces Java anotadas

2. Crear el modelo generador (web.genmodel) en base a las interfaces

3. Se obtiene el metamodelo

Interfaces Java

Modelo generador

Metamodelo

Page 105: Introducción a la ingeniería dirigida por modelos

• Se crea un proyecto Java y se incluyen librerías para trabajar con Ecore y para trabajar con XMI

105

La Plataforma Eclipse Modeling Project

Aspecto final del proyecto Definición de un metamodelo (interfaces Java)

Page 106: Introducción a la ingeniería dirigida por modelos

• Se utilizan comentarios JavaDoc para indicar

• Algunas propiedades… ▫ abstract=“BOOLEAN”

▫ required=“BOOLEAN

▫ containment=“BOOLEAN”

▫ default=VALUE

▫ changeable=“BOOLEAN"

106

La Plataforma Eclipse Modeling Project

Elementos fundamentales de la API Definición de un metamodelo (interfaces Java)

Page 107: Introducción a la ingeniería dirigida por modelos

107

La Plataforma Eclipse Modeling Project

Código de las interfaces (I) Definición de un metamodelo (interfaces Java)

Page 108: Introducción a la ingeniería dirigida por modelos

108

La Plataforma Eclipse Modeling Project

Código de las interfaces (II) Definición de un metamodelo (interfaces Java)

Page 109: Introducción a la ingeniería dirigida por modelos

• Cuando se crea el archivo web.genmodel elegir como model importer las anotaciones Java

• Se generará el archivo Ecore automáticamente

109

La Plataforma Eclipse Modeling Project

Generación del metamodelo Definición de un metamodelo (interfaces Java)

Page 110: Introducción a la ingeniería dirigida por modelos

Programáticamente

La Plataforma Eclipse Modeling Project

Page 111: Introducción a la ingeniería dirigida por modelos

La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)

Idea general de lo que se hará

1. Crear dinámicamente el metamodelo (modelo Ecore)

2. Crear dinámicamente un modelo a partir del metamodelo

3. Serializar el modelo

4. Deserializar el modelo

Metamodelo

Modelo XMI

Serializar

Deserializar

Se crea el metamodelo de forma dinámica

Page 112: Introducción a la ingeniería dirigida por modelos

La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)

Aspecto final del proyecto

• Se crea un proyecto Java y se incluyen librerías para trabajar con Ecore y para trabajar con XMI

Page 113: Introducción a la ingeniería dirigida por modelos

• Metamodelo

• Modelo API reflectiva basada en EObject ▫ eClass()

▫ eGet() y eSet()

▫ eContents() / eContainer()

La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)

Elementos fundamentales de la API

Page 114: Introducción a la ingeniería dirigida por modelos

La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)

Ge

ner

ació

n d

el m

etam

od

elo

(I)

Page 115: Introducción a la ingeniería dirigida por modelos

La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)

Ge

ner

ació

n d

el m

etam

od

elo

(II

)

Page 116: Introducción a la ingeniería dirigida por modelos

La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)

Ge

ner

ació

n d

el m

etam

od

elo

(II

I)

Page 117: Introducción a la ingeniería dirigida por modelos

La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)

Ge

ner

ació

n d

el m

etam

od

elo

(IV

)

Page 118: Introducción a la ingeniería dirigida por modelos

La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)

Ge

ner

ació

n d

el m

etam

od

elo

(V

)

Page 119: Introducción a la ingeniería dirigida por modelos

La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)

Gen

erac

ión

de

un

mo

del

o

Page 120: Introducción a la ingeniería dirigida por modelos

La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)

Serializar y deserializar

Page 121: Introducción a la ingeniería dirigida por modelos

La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)

Resultado final

Page 122: Introducción a la ingeniería dirigida por modelos

Bibliografía

122

Page 123: Introducción a la ingeniería dirigida por modelos

¿Siguientes pasos?

123

• Creación de lenguajes de dominio específico textuales basados en modelos

• Creación de lenguajes de dominio

específico gráficos basados en modelos