Este documento presenta una introducción a la ingeniería dirigida por modelos (MDE). Explica conceptos básicos como los modelos, metamodelos y el proceso de desarrollo basado en modelos. También describe ejemplos de aplicación de MDE en diferentes dominios como la telefonía IP, los seguros y los videojuegos. Finalmente, introduce los estándares relacionados con MDE como el estándar Model-Driven Architecture y lenguajes como UML y MOF.
Avances tecnológicos del siglo XXI y ejemplos de estos
Introducción a la ingeniería dirigida por modelos
1. Ingeniería Dirigida por Modelos
Introducción
Vicente García Díaz – garciavicente@uniovi.es
Universidad de Oviedo, 2012
Model Driven Engineering
Research Group
2. 2
Tabla de contenidos
Introducción
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
6. 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
7. 7
Conceptos básicos
¿Modelos en el desarrollo software?
• Por supuesto…
Modelo Desarrollo Producto
8. 8
Conceptos básicos
Proceso típico de desarrollo
• 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
9. 9
Conceptos básicos
Proceso de desarrollo de software
• Peculiaridad: los productos software se pueden
diseñar y crear sin “salir” del ordenador
Modelo Desarrollo Producto
• Informática Información + Automática
¿Podríamos automatizar la etapa de desarrollo?
10. 10
Conceptos básicos
¿Para qué se utiliza principalmente MDE?
• 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
11. 11
Conceptos básicos
Motivación
• 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
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]
12. 12
Conceptos básicos
Antecedentes
• 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
13. 13
Conceptos básicos
Objetivos
• Reducir la complejidad de las plataformas
actuales
• Expresar los conceptos de los diferentes dominios
de forma más apropiada
Conceptos del dominio
Conceptos del dominio
Trabajo mental de
los desarrolladores
Conceptos de la
tecnología utilizada
Conceptos de la
tecnología utilizada
20. Ejemplos de aplicación
Sistemas de trazabilidad alimentaria
1.1 Pro ducto r ?
FABRICA DE QUESOS
1.2 Tipo ?
PROCESO BEYOS
1.3 Pes o ? 6.1 Lo te ? 7.1 Lo te Leche?
1.4 Temperatura? 6.2 Cantidad? 7.2 Cantidad? Fecha: 04/06/2008
1.5 Acidez? 6.2 PH? 7.3 Mas Leche? Versión: 0.017
1.6 Lo te Pro ductor? 7.4 Lo te Cuajo ?
1.7 Lo te INT->? 1. RECEPCION 7.5 Mas Cuajo ?
LECHE 7.6 Lo te Fermento s?
6. 7.7 Mas Fermento s?
2.1 Pro ducto r ? PASTEURIZA 7.8 Lo te Calcio ?
2.2 Cantidad? 7.9 Mas Calcio ?
2.3 Lo te Pro ductor? 7.10 Lo te INT->
2.4 Lo te INT->? 2. RECEPCION
CUAJO 12.1 Lo te?
12.2 Nº Artículo s?
3.1 Pro ducto r ? 12.3 Cliente?
3.2 Cantidad?
3.3 Lo te Pro ductor? 7. CUAJADA
3.4 Lo te INT->? 3. RECEPCION
FERMENTOS
13. ENVASADO
4.1 Pro ducto r ? Las etiquetas las irán REQUESÓN
4.2 Cantidad? colocando en las
4.3 Lo te Pro ductor? estanterías que
4.4 Lo te INT->? 4. RECEPCION quieran
CALCIO 14.1 Cliente?
8.1 Lo te Cuajada? 14.2 Lo te?
8.2 Nº etiquetas deseadas? 14.3 Unidades?
5.1 Pro ducto r ?
5.2 Cantidad? ETIQUETAS RFID
5.3 Lo te Pro ductor? 5. RECEPCION
5.4 Lo te INT->? SAL 14.
8. COMERCIALIZ
EMMOLDADO ACION
11.1 RFID Secado ?
11.3 Nº Co ntra-etiquetas?
11.4 Primera Co ntra-etiqueta 13.1 Cliente?
9.1 RFID Enmo ldado? 10.1 RFID Salado ? 11.5 Cliente? 13.2 Pes o ?
9.2 Lo te Sal? 13.3 Lo te?
13.4 Unidades?
ETIQUETAS
COMERCIALES
12.
9. SALADO 10. SECADO 11. ENVASADO COMERCIALIZ
ACION
21. Ejemplos de aplicación
Videojuegos en entorno .NET
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?
[Furtado, 2007]
22.
23. 23
Terminología
El metamodelado
• Relación en cascada entre modelos y metamodelos
Elementos del describe describe
mundo real Modelo Metamodelo
(dominio)
24. 24
Terminología
Espacio conceptual
Meta-
metamodelo
Subdominios
<<instanceof>> Sintaxis Basado en Semántica
abstracta estática
Describe
conceptos de
Dominio Metamodelo
Lenguaje de
<<instanceof>> Sintaxis
dominio
concreta
específico
Modelo
formal
Semántica
Respeta a
25. 25
Terminología
Beneficios del uso de un metamodelo
• 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
27. 27
Terminología Ejemplo de dominio: Redes de Petri
Dominio de las Redes de Petri
• 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…
P1
T1
17 P2
15
T2
4
3 4 6
P3 P1 P5
28. 28
Terminología Ejemplo de dominio: Redes de Petri
Un metamodelo para el dominio
P1
T1
17 P2
15
T2
4
3 4 6
P3 P1 P5
PetriNet
0..*
1
1 Node Arc
+Name : string +weight : int
0..*
Place Transition
29. 29
Terminología Ejemplo de dominio: Redes de Petri
Un meta-metamodelo para el dominio
Model Element
PetriNet
0..*
1
1 Node Arc
+Name : string +weight : int
Typed Element Generalizable Element 0..*
Place Transition
Attribute Association Class
30. 30
Terminología Ejemplo de dominio: Redes de Petri
Mapeo entre sintaxis abstracta y concreta
T1
PetriNet
P1 15 17
P2
1 0..*
1 Node Arc
+Name : string +weight : int
0..*
Place Transition
31. 31
Terminología
Supermetamodelo (I)
M3 Meta-metamodelo
M2 Metamodelo
M1 Modelo
M0 Elementos del mundo real
Instancia de
Representado por
32. 32
Terminología
Supermetamodelo (II)
MOF EBNF
M3 MOF EBNF
M2 UML, ODM, ... JAVA, C#, XML, ...
M1 UML classes, objects, ... Programas informáticos
M0 Elementos del mundo real Elementos del mundo real
Instancia de
Representado por
33. 33
Terminología
Dualidad de los espacios de modelado
M3 MOF
MO
F
M2 UML ODM
Modelo UML de
M1 la gramática de
Modelo UML
de un
Modelo
ODM de
Java programa Java animales
M0
N F
EB
Programa Java
Gramática de
EBNF
Java
34. 34
Terminología
Ciclo de vida del desarrollo con MDE
Tradicional MDE
Requisitos Requisitos
Texto Texto
Análisis Análisis
Modelo Modelo
Diseño Diseño
Modelo Modelo
Codificación Codificación
Código Código
Pruebas Pruebas
Código Código
Despliegue Despliegue
Paso manual
Paso automático
35. 35
Terminología
Secuencia de pasos
Modelo
Modelo <<instanceof>> Metamodelo
Modelo
<<instanceof>>
Reglas de
Transformación
transformación
Modelo
Reglas de
Transformación
transformación
Artefactos
textuales
generados
36. 36
Terminología
¿Cómo se generan los artefactos? (I)
• Metamodelo (meta-metamodelo) + Plantillas
Metamodelo
Apply to
Instancia del
Plantillas
Instance of metamodelo
Based
on
Yields
Especificación
Código
generado
37. 37
Terminología
¿Cómo se generan los artefactos? (II)
• Metamodelo (meta-metamodelo) + Plantillas
Fuente: http://www.openarchitectureware.org/pub/documentation/4.3.1/openArchitectureWare-4.3.1-Reference.pdff
40. 40
El estándar Model-Driven Architecture
Puntos de vista
• Computation Independent Model (CIM)
• Platform Independent Model (PIM) CIM
• Platform Specific Model (PSM)
• Implementation Specific Model (ISM)
PIM
PSM 1 PSM n
…
ISM 1 ISM n
…
41. 41
El estándar Model-Driven Architecture
Arquitectura en cuatro capas
Meta-metamodelo (M3) MOF
Metamodelo (M2) UML ODM
…
Modelo (M1) Modelos UML Modelos ODM
…
Realidad (M0) Sistema
43. 43
El estándar Model-Driven Architecture Estándares relacionados (MOF)
Empleo de MOF como origen de todo
MOF
Metamodelo origen Metamodelo destino
Reglas de
transformación
(QVT)
transformación
Modelo origen Modelo destino
44. 44
El estándar Model-Driven Architecture Estándares relacionados (UML)
Unified Modeling Language (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
45. 45
El estándar Model-Driven Architecture Estándares relacionados (UML)
Extensión de UML basada en Perfiles
«metaclass» * 1 «metaclass» «metaclass»
Attribute Class Operation
1 *
«extends» «extends» «extends»
stereotype
<<stereotype>> PrimaryKey <<stereotype>> Entity <<stereotype>> FinderMethod
PersistenceTime: (short, long)
constraint context Entity
tagged value
inv: attribute->exists(isStereoKinded("PrimaryKey")
<<Entity>> Empleado * 1 <<Entity>> Empresa
-<<PrimaryKey>> nif : string -<<PrimaryKey>> cif : string
-edad : int -name : string
{PersistenceTime=short} -<<FinderMethod>>findByCif()
46. 46
El estándar Model-Driven Architecture Estándares relacionados (XMI)
XML Metadata Interchange (XMI) (I)
• Sirve para serializar modelos
• Permite que las herramientas se integren
XMI 2.1 –
MOF 2.0
XMI 1.3 –
MOF 1.4
XMI 2.0 –
XMI 1.1 –
MOF 1.4
MOF 1.3
XMI 1.2 –
MOF 1.4
49. 49
El estándar Model-Driven Architecture Estándares relacionados (OCL)
Object Constraint Language (OCL) (I)
• Se utiliza para definir restricciones
• Es parte de UML
• Tipos
▫ Clase invariant
▫ Precondiciones de una operación precondition
▫ Postcondiciones de una operación postcondition
50. 50
El estándar Model-Driven Architecture Estándares relacionados (OCL)
Object Constraint Language (OCL) (II)
context Empresa context Coche
inv: conductoresPotenciales = empleados->select(edad >= 18) inv: conductor.edad >= 18
Empresa poseedor Coche
vehículos
+contratar(entrada p : Persona) +conducir(entrada p : Persona)
jefe context Coche::conducir(p: Persona)
pre: (conductor==null) && (p.edad >= 18)
post: conductor = p
conductoresPotenciales
empleados
Persona
conductor
-edad : int
context Empresa::contratar(p: Persona)
pre: --none
post: (empleados.size = empleados@pre.size + 1) &&
(empleados.includes(p))
Fuente: [Stahl and Völter, 2006]
51. 51
El estándar Model-Driven Architecture Estándares relacionados (OCL)
Object Constraint Language (OCL) (III)
• Restricción en nivel Mn afecta al nivel Mn-1
«metaclass» «metaclass»
UML::Class UML::Attribute
-name : String -name : String
-type : Type
«metaclass» «metaclass»
MM::PersonaDesconocida MM::ParametrosNumericos
context PersonaDesconocida context ParametrosNumericos
inv: name == “no identificada” inv: type.name == “Integer”
|| “desconocida”
52. 52
El estándar Model-Driven Architecture Estándares relacionados (QVT)
Query, Views, Transformations (QVT) (I)
• Lenguaje de transformación de modelos
• Compuesto de tres lenguajes con objetivos
distintos
• QVT
Operation Mappings Language
Relations Language
▫ Relacional
Black Box Mappings
▫ Core
▫ Operacional
Core Language
53. 53
El estándar Model-Driven Architecture Estándares relacionados (QVT)
Query, Views, Transformations (QVT) (II)
• Lenguaje relacional
▫ Transformaciones un conjunto de relaciones
Declarativo
Fuente: [Mens, 2009]
54. 54
El estándar Model-Driven Architecture Estándares relacionados (QVT)
Query, Views, Transformations (QVT) (III)
• Lenguaje operacional
▫ Transformaciones un conjunto de operaciones
Imperativo
Fuente: [Mens, 2009]
55. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M1 y M2
Relaciones entre M1 y M2 Instance of
Vehículo ModelElement
-name : string
+puedeMoverse() : bool
*
Persona +driver +car Coche Classifier Feature
-nombre : string -generalizations
1 1..* -visibility : Visibility
1 *
*
1
4
Class DataType Operation Attribute AssociationEnd
Rueda
-malEstado : bool
1
Association
[http://smv.unige.ch/old/tiki-download_file.php?fileId=661]
56. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M1 y M2
Relaciones entre M1 y M2 Instance of
Vehículo ModelElement
-name : string
+puedeMoverse() : bool
*
Persona +driver +car Coche Classifier Feature
-nombre : string -generalizations
1 1..* -visibility : Visibility
1 *
*
1
4
Class DataType Operation Attribute AssociationEnd
Rueda
-malEstado : bool
1
Association
57. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M1 y M2
Relaciones entre M1 y M2 Instance of
Vehículo ModelElement
-name : string
+puedeMoverse() : bool
*
Persona +driver +car Coche Classifier Feature
-nombre : string -generalizations
1 1..* -visibility : Visibility
1 *
*
1
4
Class DataType Operation Attribute AssociationEnd
Rueda
-malEstado : bool
1
Association
58. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M1 y M2
Relaciones entre M1 y M2 Instance of
Vehículo ModelElement
-name : string
+puedeMoverse() : bool
*
Persona +driver +car Coche Classifier Feature
-nombre : string -generalizations
1 1..* -visibility : Visibility
1 *
*
1
4
Class DataType Operation Attribute AssociationEnd
Rueda
-malEstado : bool
1
Association
59. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M1 y M2
Relaciones entre M1 y M2 Instance of
Vehículo ModelElement
-name : string
+puedeMoverse() : bool
*
Persona +driver +car Coche Classifier Feature
-nombre : string -generalizations
1 1..* -visibility : Visibility
1 *
*
1
4
Class DataType Operation Attribute AssociationEnd
Rueda
-malEstado : bool
1
Association
60. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M1 y M2
Relaciones entre M1 y M2 Instance of
Vehículo ModelElement
-name : string
+puedeMoverse() : bool
*
Persona +driver +car Coche Classifier Feature
-nombre : string -generalizations
1 1..* -visibility : Visibility
1 *
*
1
4
Class DataType Operation Attribute AssociationEnd
Rueda
-malEstado : bool
1
Association
61. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M1 y M2
Relaciones entre M1 y M2 Instance of
Vehículo ModelElement
-name : string
+puedeMoverse() : bool
*
Persona +driver +car Coche Classifier Feature
-nombre : string -generalizations
1 1..* -visibility : Visibility
1 *
*
1
4
Class DataType Operation Attribute AssociationEnd
Rueda
-malEstado : bool
1
Association
62. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M1 y M2
Relaciones entre M1 y M2 Instance of
Vehículo ModelElement
-name : string
+puedeMoverse() : bool
*
Persona +driver +car Coche Classifier Feature
-nombre : string -generalizations
1 1..* -visibility : Visibility
1 *
*
1
4
Class DataType Operation Attribute AssociationEnd
Rueda
-malEstado : bool
1
Association
63. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M2 y M3 ModelElement
Instance of
-name : string
ModelElement
-name : string
*
Classifier Feature
-generalizations
1 1..* -visibility : Visibility
*
GeneralizableElement Feature TypedElement
*
Class DataType Operation Attribute AssociationEnd *
Classifier StructuralFeature AssociationEnd
1
Association
Association Class DataType Attribute
PrimitiveType VisibilityKind
[http://smv.unige.ch/old/tiki-download_file.php?fileId=661]
64. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M2 y M3 ModelElement
Instance of
-name : string
ModelElement
-name : string
*
Classifier Feature
-generalizations
1 1..* -visibility : Visibility
*
GeneralizableElement Feature TypedElement
*
Class DataType Operation Attribute AssociationEnd *
Classifier StructuralFeature AssociationEnd
1
Association
Association Class DataType Attribute
PrimitiveType VisibilityKind
65. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M2 y M3 ModelElement
Instance of
-name : string
ModelElement
-name : string
*
Classifier Feature
-generalizations
1 1..* -visibility : Visibility
*
GeneralizableElement Feature TypedElement
*
Class DataType Operation Attribute AssociationEnd *
Classifier StructuralFeature AssociationEnd
1
Association
Association Class DataType Attribute
PrimitiveType VisibilityKind
66. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M2 y M3 ModelElement
Instance of
-name : string
ModelElement
-name : string
*
Classifier Feature
-generalizations
1 1..* -visibility : Visibility
*
GeneralizableElement Feature TypedElement
*
Class DataType Operation Attribute AssociationEnd *
Classifier StructuralFeature AssociationEnd
1
Association
Association Class DataType Attribute
PrimitiveType VisibilityKind
67. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M2 y M3 ModelElement
Instance of
-name : string
ModelElement
-name : string
*
Classifier Feature
-generalizations
1 1..* -visibility : Visibility
*
GeneralizableElement Feature TypedElement
*
Class DataType Operation Attribute AssociationEnd *
Classifier StructuralFeature AssociationEnd
1
Association
Association Class DataType Attribute
PrimitiveType VisibilityKind
68. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M2 y M3 ModelElement
Instance of
-name : string
ModelElement
-name : string
*
Classifier Feature
-generalizations
1 1..* -visibility : Visibility
*
GeneralizableElement Feature TypedElement
*
Class DataType Operation Attribute AssociationEnd *
Classifier StructuralFeature AssociationEnd
1
Association
Association Class DataType Attribute
PrimitiveType VisibilityKind
69. El estándar Model-Driven Architecture La cadena de modelado
Relación entre M2 y M3 ModelElement
Instance of
-name : string
ModelElement
-name : string
*
Classifier Feature
-generalizations
1 1..* -visibility : Visibility
*
GeneralizableElement Feature TypedElement
*
Class DataType Operation Attribute AssociationEnd *
Classifier StructuralFeature AssociationEnd
1
Association
Association Class DataType Attribute
PrimitiveType VisibilityKind
70.
71. 71
La Plataforma Eclipse Modeling Project
Eclipse Modeling Project
• 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
72. 72
La Plataforma Eclipse Modeling Project
Desarrollo de sintaxis abstractas
• 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
73. 73
La Plataforma Eclipse Modeling Project
Desarrollo de sintaxis concretas
• 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
74. 74
La Plataforma Eclipse Modeling Project
Transformación de modelados
• 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…
75. 75
La Plataforma Eclipse Modeling Project
Herramientas de desarrollo
• 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
…
76. 76
La Plataforma Eclipse Modeling Project
Desarrollo de nuevas tecnologías
• 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
77. 77
La Plataforma Eclipse Modeling Project
Agrupación de proyectos
• 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
79. 79
La Plataforma Eclipse Modeling Project Instalación del entorno de desarrollo
Instalación
• Lo más fácil es descargar un Eclipse con todo
• http://www.eclipse.org/downloads/packages/eclipse-
modeling-tools/junosr1 (Eclipse Modeling Tools)
81. 81
La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico)
Crear un proyecto
• Nuevo Proyecto MDEWebMetamodelEditor
82. 82
La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico)
Crear el metamodelo (I)
• Nuevo elemento en la carpeta model Web.ecore
83. 83
La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico)
Crear el metamodelo (II)
84. 84
La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico)
Visualizar el metamodelo
85. 85
La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico)
Crear el modelo generador
• Nuevo EMF Generator Model Web.genmodel
86. 86
La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico)
Configurar el modelo generador
87. 87
La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico)
Crear JavaDoc
Botón derecho en Web.genmodel Reload
88. 88
La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico)
Especificar métodos (I)
89. 89
La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico)
Especificar métodos (II)
Cuerpo del método
EOperation
Documentación JavaDoc
EParameter
90. 90
La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico)
Especificar métodos (III)
91. 91
La Plataforma Eclipse Modeling Project Definición de un modelo (programáticamente)
Generar el código de los modelos
92. 92
La Plataforma Eclipse Modeling Project Definición de un modelo (programáticamente)
Crear un proyecto
93. 93
La Plataforma Eclipse Modeling Project Definición de un modelo (programáticamente)
Crear el código fuente para la definición
94. 94
La Plataforma Eclipse Modeling Project Definición de un modelo (plugin)
Generar todos los artefactos
95. 95
La Plataforma Eclipse Modeling Project Definición de un modelo (plugin)
Crear el modelo mediante el editor
96. 96
La Plataforma Eclipse Modeling Project Persistencia de modelos
Guardar el modelo en formato XMI
• El archivo My.web internamente es código XML (XMI)
• También se puede persistir el modelo creado con Java
97. 97
La Plataforma Eclipse Modeling Project Persistencia de modelos
Cargar el modelo guardado en XMI
98. 98
La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos
Java Emitter Templates
• 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 <% … %>
99. 99
La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos
Preparar el proyecto para trabajar con JET
• Desde el proyecto en el que se quiera generar
artefactos…
100. 100
La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos
Resumen de acciones a realizar
• Estado de cómo quedará el proyecto al finalizar el proceso
101. 101
La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos
Crear la plantilla
102. 102
La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos
Generar artefactos desde la clase Java
• Crear ConvertToHTML.java
104. 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
Metamodelo
generador
105. 105
La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java)
Aspecto final del proyecto
• Se crea un proyecto Java y se incluyen librerías para
trabajar con Ecore y para trabajar con XMI
106. 106
La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java)
Elementos fundamentales de la API
• Se utilizan comentarios JavaDoc para indicar
• Algunas propiedades…
▫ abstract=“BOOLEAN”
▫ required=“BOOLEAN
▫ containment=“BOOLEAN”
▫ default=VALUE
▫ changeable=“BOOLEAN"
107. 107
La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java)
Código de las interfaces (I)
108. 108
La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java)
Código de las interfaces (II)
109. 109
La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java)
Generación del metamodelo
• Cuando se crea el archivo web.genmodel
elegir como model importer las anotaciones Java
• Se generará el archivo Ecore automáticamente
111. 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
Se crea el
metamodelo
Serializar de forma
Modelo XMI dinámica
Deserializar
112. 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
113. La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)
Elementos fundamentales de la API
• Metamodelo
• Modelo API reflectiva basada en EObject
▫ eClass()
▫ eGet() y eSet()
▫ eContents() / eContainer()
114. La Plataforma Eclipse Modeling Project
Generación del metamodelo (I) Definición de un metamodelo (programáticamente)
115. La Plataforma Eclipse Modeling Project
Generación del metamodelo (II) Definición de un metamodelo (programáticamente)
116. La Plataforma Eclipse Modeling Project
Generación del metamodelo (III) Definición de un metamodelo (programáticamente)
117. La Plataforma Eclipse Modeling Project
Generación del metamodelo (IV) Definición de un metamodelo (programáticamente)
118. La Plataforma Eclipse Modeling Project
Generación del metamodelo (V) Definición de un metamodelo (programáticamente)
119. La Plataforma Eclipse Modeling Project
Generación de un modelo Definición de un metamodelo (programáticamente)
120. La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)
Serializar y deserializar
121. La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)
Resultado final
123. 123
¿Siguientes pasos?
• 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