Ingeniería dirigida por modelos
-
Upload
vicente-garcia-diaz -
Category
Documents
-
view
116 -
download
4
description
Transcript of Ingeniería dirigida por modelos
![Page 1: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/1.jpg)
Ingeniería Dirigida por Modelos
Introducción
Vicente García Díaz ([email protected])
Juan Manuel Cueva LovelleMDE-OOTLAB Research GroupNoviembre de 2010
![Page 2: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/2.jpg)
Conceptos básicos
![Page 3: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/3.jpg)
![Page 4: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/4.jpg)
Motivación
Crecimiento de la complejidad del software [Groth, 2004]
No se reutiliza ni el conocimiento tecnológico ni del dominio [Caldiera and Basili, 1991]
Se necesita industrializar el desarrollo del software [Mcilroy, 1968]
El término crisis del software sigue vigente [Dijkstra, 1972]
![Page 5: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/5.jpg)
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
![Page 6: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/6.jpg)
Objetivos
Reducir la complejidad de las plataformas actuales
Expresar los conceptos de los diferentes dominios de forma más apropiadaConceptos del
dominio Conceptos del dominio
Conceptos de la tecnología utilizada
Trabajo mental de los desarrolladores Conceptos de la
tecnología utilizada
![Page 7: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/7.jpg)
El metamodelado (1/2)
Relación en cascada entre modelos y metamodelos
Elementos del mundo
real (dominio)
Modelo Metamodelodescribe
describe
![Page 8: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/8.jpg)
El metamodelado (2/2)
Clave de la ingeniería dirigida por modelos
Es necesario para Construir lenguajes de dominio
específico Validar modelos Transformar modelos Generar artefactos (código,
documentación, etc.) Integración de herramientas
![Page 9: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/9.jpg)
Beneficios
![Page 10: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/10.jpg)
Desarrollo de software tradiccional
[Stahl and Völter, 2006]
![Page 11: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/11.jpg)
Desarrollo de software con MDE
[Stahl and Völter, 2006]
PARTE VARIABLE
PARTE ESPECÍFICA
PARTE COMÚN
![Page 12: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/12.jpg)
Desarrollo completo con MDE
[Stahl and Völter, 2006]
![Page 13: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/13.jpg)
Tradicional vs MDE
[Stahl and Völter, 2006]
![Page 14: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/14.jpg)
Espacio Conceptural
![Page 15: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/15.jpg)
Referentes al modelo (1/5)
DominioMetamod
elo
Meta-metamod
elo
Sintaxis abstracta
Semántica estática
Sintaxis concreta
Lenguaje de
dominio específico
Semántica
Modelo formal
Describe conceptos de
<<instanceof>>
<<instanceof>>
Basado en
Basado en
Obtiene el significado de
Respeta a
Subdominios
![Page 16: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/16.jpg)
Referentes al modelo (2/5)
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
P2
P1P3 P5
T1
T2
15
4
17
3 4 6
![Page 17: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/17.jpg)
Referentes al modelo (3/5)
Metamodelo para Redes de Petri
+Name : string
Node
+weight : int
Arc
Place Transition
PetriNet
10..*
1
0..*
P1
P2
P1P3 P5
T1
T2
15
4
17
3 4 6
![Page 18: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/18.jpg)
Referentes al modelo (4/5)
Meta-metamodelo para Redes de Petri
Model Element
Generalizable Element
Association ClassAttribute
Typed Element+Name : string
Node
+weight : int
Arc
Place Transition
PetriNet
10..*
1
0..*
![Page 19: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/19.jpg)
Referentes al modelo (5/5)
Mapeo entre sintaxis abstracta y concreta para Redes de Petri
+Name : string
Node
+weight : int
Arc
Place Transition
PetriNet
1 0..*
1
0..*
P1 P2
T1
15 17
![Page 20: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/20.jpg)
Proceso de trabajo
![Page 21: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/21.jpg)
Supermetamodelo
Elementos del mundo real
Modelo
Metamodelo
Meta-metamodeloM3
M2
M1
M0
Instancia de
Representado por
![Page 22: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/22.jpg)
Espacios de modelado
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 23: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/23.jpg)
Dualidad
MOFM3
M2
M1
M0
UML ODM
Modelo UML de la gramática de
Java
Modelo UML de un
programa Java
Modelo ODM de animales
EBNF
Gra
mát
ica d
e Ja
va
Prog
ram
a Ja
va
![Page 24: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/24.jpg)
Ciclo de vidaTradicional
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 25: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/25.jpg)
Secuencia de pasos
Modelo
Transformación
Modelo
Transformación
Artefactos textuales
generados
Metamodelo
Reglas de transformaci
ón
Reglas de transformaci
ón
ModeloModelo
<<instanceof>>
<<instanceof>>
![Page 26: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/26.jpg)
Generación de artefactos
![Page 27: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/27.jpg)
¿Dónde se generan artefactos?
Modelo Código Código intermedio
Model2Code
Mod
el2M
odel
Cod
e2C
ode
Inte
rmed
iate
2Int
erm
edia
te
Code2Intermediate
Tanto el código (Code) como el código intermedio (Intermediate) son
considerados artefactos textuales
![Page 28: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/28.jpg)
Plantillas + Filtros
Especificación
Filtro
Subconjunto de la
especificaciónPlantillas
Código generado
Apply to
Apply to
![Page 29: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/29.jpg)
Plantillas + FiltrosEjemplo
[http://www.abbeyworkshop.com/howto/xslt/xslt_templates/index.html]
![Page 30: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/30.jpg)
Plantillas + Metamodelo
Especificación
Metamodelo
Instancia del metamodelo
Plantillas
Código generado
Based on
Yields
Instance of
Apply to
![Page 31: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/31.jpg)
Plantillas + MetamodeloEjemplo
[http://www.openarchitectureware.org/pub/documentation/4.3.1/openArchitectureWare-4.3.1-Reference.pdf]
![Page 32: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/32.jpg)
Basados en una API
Código generado
Programa cliente
API
Gramática (AST/CST)
Based on
Uses
Instance of
Creates
Modifies
![Page 33: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/33.jpg)
Basados en una APIEjemplo
Class
[http://ondotnet.com/pub/a/dotnet/2003/02/03/codedom.html?page=1]
![Page 34: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/34.jpg)
En línea
Especificación variantes del
código
Algunas variantes resueltas
Código con variantes resueltas
Código generado
Pre
pro
cesa
mie
nto
![Page 35: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/35.jpg)
En líneaEjemplo
[http:// irc.essex.ac.uk/www.iota-six.co.uk/c/j1_the_c_preprocessor.asp]
![Page 36: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/36.jpg)
Tejido de código
Artefacto 1
Especificación de los puntos
de enlace
Artefacto 2
Código generado /
Tejido
Artefacto 3
![Page 37: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/37.jpg)
Tejido de códigoEjemplo
[http:// today.java.net/today/2004/11/22/Aspects_2-2.pdf]
![Page 38: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/38.jpg)
Basado en atributos
Código no generado
Atributos
Representación interna
Generador
Código generado
Apply to
Apply to
![Page 39: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/39.jpg)
Basado en atributosEjemplo
[http:// java.sun.com/j2se/javadoc/writingdoccomments/]
![Page 40: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/40.jpg)
Procesamiento de Frames
Frame de especificación
Generador
Frame de código
Código generado
4) Genera
1) Crea e instancia
2) Instancia y parametriza
5)
{repeat}
3) Instancia y parametriza
![Page 41: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/41.jpg)
Procesamiento de FramesEjemplo
[http://www.voelter.de/data/pub/ProgramGeneration.pdf]
Frame
Instanciación
Generación
short int aShortNumber;
![Page 42: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/42.jpg)
MDAModel-Driven Architecture
![Page 43: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/43.jpg)
Conceptos Básicos
![Page 45: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/45.jpg)
Puntos de vista
Computation Independent Model (CIM) Platform Independent Model (PIM) Platform Specific Model (PSM) Implementation Specific Model (ISM)
CIM
PIM
PSM 1 PSM n
ISM 1 ISM n
…
…
![Page 46: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/46.jpg)
Arquitectura de cuatro capas
MOF
UML ODM
Modelos UML Modelos ODM
…
…
Sistema
Meta-metamodelo (M3)
Metamodelo (M2)
Modelo (M1)
Realidad (M0)
![Page 47: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/47.jpg)
Estándares relacionados con MDA
![Page 48: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/48.jpg)
The Meta Object Facility (MOF)
Model Element
Import Namespace Constraint Tag Feature
Generalizable Element
Behavioral Feature
Package Classifier Operation Exception
Association Class
Can throw
generalizes
imports
![Page 49: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/49.jpg)
MOF (2/2)
MOF
Metamodelo origen
Metamodelo destino
Modelo origen Modelo destino
Reglas de transformaci
ón(QVT)
transformación
![Page 50: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/50.jpg)
Unified Modeling Language 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 51: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/51.jpg)
UML (2/2)Extender UML basándose en perfiles UML
«metaclass»Attribute
«metaclass»Class
«metaclass»Operation
1*
1 *
<<stereotype>> PrimaryKey <<stereotype>> Entity <<stereotype>> FinderMethod
«extends» «extends» «extends»
PersistenceTime: (short, long)
context Entityinv: 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 52: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/52.jpg)
XML Metadata Interchange (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
2009
![Page 53: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/53.jpg)
XMI (2/2)
![Page 54: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/54.jpg)
XMI (3/3)
![Page 55: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/55.jpg)
Object Constraint Language (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 56: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/56.jpg)
OCL (2/3)
[Stahl and Völter, 2006]
context Cocheinv: conductor.edad >= 18
+contratar(entrada p : Persona)
Empresa
+conducir(entrada p : Persona)
Coche
-edad : int
Personaconductor
conductoresPotenciales
jefe
empleados
vehículos
poseedor
context Empresainv: 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: --nonepost: (empleados.size = [email protected] + 1) && (empleados.includes(p))
![Page 57: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/57.jpg)
OCL (3/3)
Restricción en nivel Mn afecta al nivel Mn-1
context PersonaDesconocidainv: name == “no identificada” || “desconocida”
context ParametrosNumericosinv: type.name == “Integer”
-name : String-type : Type
«metaclass»UML::Attribute
«metaclass»MM::ParametrosNumericos
-name : String
«metaclass»UML::Class
«metaclass»MM::PersonaDesconocida
![Page 58: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/58.jpg)
Query, Views, Transformations (QVT)
Lenguaje de transformación de modelos
Compuesto de tres lenguajes con objetivos distintos
QVT Relacional Core Operacional
Core Language
Relations Language
Op
era
tion
Map
pin
gs
Lan
gu
ag
e
Bla
ck B
ox M
ap
pin
gs
![Page 59: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/59.jpg)
QVT (2/3)Lenguaje relacional
Transformaciones un conjunto de relaciones Declarativo
[Mens, 2009]
![Page 60: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/60.jpg)
QVT (3/3)Lenguaje operacional
Transformaciones un conjunto de operaciones Imperativo
[Mens, 2009]
![Page 61: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/61.jpg)
La cadena de modelado
![Page 62: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/62.jpg)
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]
![Page 63: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/63.jpg)
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
![Page 64: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/64.jpg)
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
![Page 65: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/65.jpg)
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
![Page 66: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/66.jpg)
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
![Page 67: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/67.jpg)
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
![Page 68: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/68.jpg)
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
![Page 69: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/69.jpg)
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
![Page 70: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/70.jpg)
Relaciones entre M2 y M3
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
http://smv.unige.ch/old/tiki-download_file.php?fileId=661
![Page 71: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/71.jpg)
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
Relaciones entre M2 y M3
![Page 72: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/72.jpg)
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
Relaciones entre M2 y M3
![Page 73: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/73.jpg)
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
Relaciones entre M2 y M3
![Page 74: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/74.jpg)
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
Relaciones entre M2 y M3
![Page 75: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/75.jpg)
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
Relaciones entre M2 y M3
![Page 76: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/76.jpg)
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
Relaciones entre M2 y M3
![Page 77: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/77.jpg)
EjemplosAplicación de la Ingeniería Dirigida por Modelos
![Page 78: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/78.jpg)
Telefonía IP
[Kelly and Tolvanen, 2008]
![Page 79: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/79.jpg)
Productos de seguros
[Kelly and Tolvanen, 2008]
![Page 80: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/80.jpg)
Automatización del hogar
[Kelly and Tolvanen, 2008]
![Page 81: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/81.jpg)
Aplicaciones para móviles
[Kelly and Tolvanen, 2008]
![Page 82: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/82.jpg)
Relojes digitales
[Kelly and Tolvanen, 2008]
![Page 83: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/83.jpg)
Línea de productos para crear videojuegos
![Page 84: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/84.jpg)
Introducción
Los videojuegos son uno de los negocios más rentables del mundo
Se quiere industrializar su desarrollo [Furtado, 2007] Juegos de aventuras
![Page 85: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/85.jpg)
SLGML
Integrado en Visual Studio
![Page 86: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/86.jpg)
Entorno de desarrollo (1/2)
![Page 87: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/87.jpg)
Entorno de desarrollo (2/2)
![Page 88: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/88.jpg)
Generación de artefactos
![Page 89: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/89.jpg)
Validaciones semánticas
Todos los estados del juego tienen que ser alcanzables
Un personaje principal Una pantalla de inicio Una pantalla de fin de juego Etc…
![Page 90: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/90.jpg)
Resultados
![Page 91: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/91.jpg)
Sistemas de trazabilidad alimentaria
![Page 92: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/92.jpg)
Introducción
Sistema que sirve para hacer la trazabilidad en la fabricación de productos alimentarios
Caso real de aplicación de MDE
Raw Material
Storage
RFID
HomeDistribution
Barcode
ShopProduct
Monitor
Transport Production
Trazabilidad hacia delante
Trazabilidad hacia detrás
CustomerProducerAuthority
...
CustomerProducerAuthority
...
Otros sistemas de identificación
Sistemas de identificación
![Page 93: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/93.jpg)
La idea
Crear un sistema software/hardware adaptable a cada cliente de forma sencilla
Labeler
Server
Producer Interface
Consumer Interface
Authority Interface
Terminal
RFID Reader
RFID Chip
Printer
![Page 94: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/94.jpg)
Proceso de fabricación
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. ENVASADO12.
COMERCIALIZACION
6. PASTEURIZA
14.1 Cliente?14.2 Lote?14.3 Unidades?
11.1 RFID Secado?11.3 Nº Contra-etiquetas?11.4 Primera Contra-etiqueta11.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 95: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/95.jpg)
El punto de vista PIM
Documento XML conforme con un XML Schema
Se hacen transformaciones para generar código
Varias secciones para definir el proceso También hay una interfaz gráfica
![Page 96: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/96.jpg)
PIM (Productos)
![Page 97: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/97.jpg)
Generador de código
Modelo origenSistema
generado
nUML ExpertCoder
![Page 98: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/98.jpg)
Sistema generado
Database.sql
![Page 99: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/99.jpg)
Eclipse Modeling Project
Plataforma para el desarrollo de software dirigido por modelos
![Page 100: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/100.jpg)
Eclipse Modeling Project
Engloba todo lo relacionado con MDE en EclipseThe 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 tiene Eclipse Public Licence y ha 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
![Page 101: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/101.jpg)
Sintaxis abstracta
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
![Page 102: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/102.jpg)
Sintaxis concreta
Graphical Modeling Framework (GMF) Servicio de sintaxis gráficas Permite crear un editor sobre el metamodelo Ecore
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
![Page 103: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/103.jpg)
Transformación de modelos
Model to Model Transformation (M2M) Para transformar unos modelos en otros QVT, ATL, Xtend, etc…
Model to Text Transformation (M2T) Para generar artefactos textuales Java Emitter Templates (JET), Xpand, etc…
![Page 104: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/104.jpg)
Herramientas de desarrollo
Model Development Tools (MDT) Proyectos basados en estándares de la
industria▪ XML Schema (XSD)▪ UML2▪ UML2 Tools▪ Object Constraint Language (OCL)▪ Business Process Modeling Notation (BPMN2)▪ …
![Page 105: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/105.jpg)
Desarrollo de nuevas tecnologías
Generative Modeling Technologies (GMT) Agrupa a 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
![Page 106: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/106.jpg)
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
![Page 107: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/107.jpg)
PrácticoTrabajando con el Eclipse Modeling Project
![Page 108: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/108.jpg)
Instalación
Lo más fácil es descargar un Eclipse con todo
http://www.eclipse.org/downloads/packages/release/galileo/sr2 (Eclipse Modeling Tools)
![Page 109: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/109.jpg)
Definición de un metamodeloMediante el editor gráfico
![Page 110: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/110.jpg)
Meta-metamodelo Ecore
EcoreECORE META-METAMODEL
![Page 111: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/111.jpg)
Crear un Proyecto
Nuevo proyecto org.eclipse.emp.examples.web
![Page 112: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/112.jpg)
Crear el modelo Ecore (1/2)Metamodelo
Nuevo elemento en la carpeta model web.ecore
![Page 113: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/113.jpg)
Crear el modelo Ecore (2/2)Metamodelo
![Page 114: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/114.jpg)
Visualizar el modelo Ecore
![Page 115: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/115.jpg)
Crear el modelo Generador Metamodelo generador
Nuevo EMF Generator Model web.genmodel
![Page 116: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/116.jpg)
Configurar el modelo Generador
![Page 117: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/117.jpg)
Generar código Java
![Page 118: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/118.jpg)
Generar un plug-in
![Page 119: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/119.jpg)
Crear un modelo con el plug-in
Proyecto Java
![Page 120: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/120.jpg)
Crear un modelo programáticamente (1/2)
![Page 121: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/121.jpg)
Crear un modelo programáticamente (2/2)
![Page 122: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/122.jpg)
Crear JavaDoc
![Page 123: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/123.jpg)
Crear métodos (1/3)
![Page 124: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/124.jpg)
Crear métodos (2/3)
EOperation
EParameter
Cuerpo del método
Documentación JavaDoc
![Page 125: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/125.jpg)
Crear métodos (3/3)
![Page 126: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/126.jpg)
Extender un modelo Ecore (1/2)
![Page 127: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/127.jpg)
Extender un modelo Ecore (2/2)
![Page 128: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/128.jpg)
Persistir el modelo a XMI
Abrir org.eclipse.emp.examples.web.programming
Crear SaveXMI.java
![Page 129: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/129.jpg)
Cargar el modelo serializado Abrir
org.eclipse.emp.examples.web.programming Crear LoadXMI.java
![Page 130: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/130.jpg)
Generar código a partir del modelo (1/6)
Java Emitter Template (JET) Model-to-Text Modelo JAVA Texto Traducción y generación Tipos de elementos
▪ Directivas <%@ … %>▪ Expresiones <%= .. %>▪ Scriplets <% … %>
![Page 131: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/131.jpg)
Generar código a partir del modelo (2/6)
Convertir el proyecto para trabajar con JET org.eclipse.emp.examples.web.programmi
ng
![Page 132: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/132.jpg)
Generar código a partir del modelo (3/6)
![Page 133: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/133.jpg)
Generar código a partir del modelo (4/6)Creación de la plantilla
![Page 134: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/134.jpg)
Generar código a partir del modelo (5/6)Utilización de la clase Java creada por la plantilla
Abrir org.eclipse.emp.examples.web.programming
Crear ConvertToHTML.java
![Page 135: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/135.jpg)
Generar código a partir del modelo (6/6)
Crear programáticamente categorías y artículos dentro de una Web
Crear mediante JET un archivo HTML para la Web (index.html) y dentro enlaces a un archivo HTML para cada categoría, mostrando en cada categoría la información de los artículos
![Page 136: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/136.jpg)
Patrón de diseño Observer
Abrir org.eclipse.emp.examples.web.programming
Crear Observable.java y Observer.java
![Page 137: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/137.jpg)
Definición de un metamodeloMediante interfaces Java anotadas
![Page 138: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/138.jpg)
Interfaces Java anotadas (1/4)
Se utilizan comentarios JavaDoc para anotarlas
Algunas propiedades… abstract=“BOOLEAN” required=“BOOLEAN containment=“BOOLEAN” default=VALUE changeable=“BOOLEAN"
![Page 139: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/139.jpg)
Interfaces Java anotadas (2/4)
Crear archivo web.genmodel Proyecto org.eclipse.emp.examples.web.interfaces
![Page 140: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/140.jpg)
Interfaces Java anotadas (3/4)
![Page 141: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/141.jpg)
Interfaces Java anotadas (4/4)
![Page 142: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/142.jpg)
Definición de un metamodeloProgramáticamente
![Page 143: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/143.jpg)
Programáticamente (1/5)
Metamodelo
Modelo API reflectiva basada en Eobject eClass() eGet() y eSet() eContents() / eContainer()
![Page 144: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/144.jpg)
Programáticamente (2/5)
Crear dinámicamente el metamodelo (modelo Ecore) Crear dinámicamente un modelo a partir del
metamodelo Serializar el modelo Deserializar el modelo Mostrar información del modelo Abrir org.eclipse.emp.examples.web.programming Crear Dynamic.java
![Page 145: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/145.jpg)
Programáticamente (3/5)
![Page 146: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/146.jpg)
Programáticamente (4/5)
![Page 147: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/147.jpg)
Programáticamente (5/5)
![Page 148: Ingeniería dirigida por modelos](https://reader033.fdocuments.net/reader033/viewer/2022061210/548ccf22b4795978378b45bc/html5/thumbnails/148.jpg)
BibliografíaBibliografía básica
http://www.omg.org