Sunteți pe pagina 1din 148

Introducción

Ingeniería Dirigida por


Modelos

Vicente García Díaz


(garciavicente@uniovi.es)
Juan Manuel Cueva Lovelle
MDE - OOTLAB Research Group
Noviembre de 2010
Conceptos básicos
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]

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


El metamodelado (1/2)

 Relación en cascada entre modelos y


metamodelos
 describ describ
Elementos del mundo real ( dominio
e ) Modelo e Metamodelo

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
Beneficios
Desarrollo de software
tradiccional

[Stahl and Völter , 2006]


Desarrollo de software
con MDE

PARTE ESPECÍFICA

PARTE VARIABLE

PARTE COMÚN

[Stahl and Völter , 2006]


Desarrollo completo con
MDE

[Stahl and Völter , 2006]


Tradicional vs MDE

[Stahl and Völter , 2006]


Espacio Conceptural
Referentes al modelo
(1/5)
 Meta - metamodelo


Subdominios
 Basado en
<<instanceof
>> Sintaxis abstracta Semántica estática

Describe
conceptos
de
Dominio Metamodelo

<<instanceof
>> Sintaxis concreta Lenguaje de dominio específico
en
a do
Bas

Modelo formal
Obtien
signif e el
icado
de

Semántica

Respeta a
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
T1
17 P2
15

T2
4 3
P3 4 6 P5
P1
Referentes al modelo
(3/5)
P1
T1

17 P2

Metamodelo para Redes de Petri


15

 4
T2

3 4 6
P3 P1 P5

PetriNet

0..*
1

1 Node Arc
+Name : string +weight : int
0..*

Place Transition
Referentes al modelo
(4/5)
 Meta-metamodelo para Redes de Petri

Model Element

PetriNet

0..*
1

1 Node Arc
Typed Element Generalizable Element +Name : string +weight : int
0..*

Place Transition

Attribute Association Class


Referentes al modelo
(5/5)
 Mapeo entre sintaxis abstracta y concreta para Redes
de Petri

T1
PetriNet
P1 15 17
P2
1 0..*

1 Node Arc
+Name : string +weight : int
0..*

Place Transition
Proceso de trabajo
Supermetamodelo

M3 Meta-metamodelo

M2 Metamodelo

M1 Modelo

M0 Elementos del mundo real

Instancia de

Representado por
Espacios de modelado
MOF EBNF

M3 MOF EBN F

M2 UML, ODM, ... JAVA, C#, XML, ...

M1 UML classes
, objects, ... Programas informáticos

M0 Elementos del mundo real Elementos del mundo real

Instancia de

R epresentado por
Dualidad
M3 MOF

M
O
F
M2 UML ODM

Modelo UML de
M1 la gramática de
Modelo UML
de un
Modelo
ODMde
Java programa Java animales

M0
NF
EB Programa Java
Gramática de
EBNF

Java
Ciclo de vida
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
Secuencia de pasos
Modelo
Modelo <<instanceof Metamodelo
Modelo >>

<<instanceof
>>

Transformación Reglas de transformación

Modelo

Transformación Reglas de transformación

Artefactos textuales generados


Generación de
artefactos
¿Dónde se generan
artefactos?

e
ediat
Tanto el código (Code) como
del

nterm
Code
el código intermedio
l 2Mo

(Intermediate) son

ate2I
2
Code
Mode

considerados artefactos
textuales

medi
Inter
Modelo Código
Model2Code Código Code2Intermediate
intermedio
Plantillas + Filtros

Filtro

Subconjunto Apply to
de la Plantillas
Apply to especificación

Especificación

Código
generado
Plantillas + Filtros
Ejemplo

[http://www.abbeyworkshop .com/howto/xslt/xslt_templates /index.htm


Plantillas + Metamodelo

Metamodelo

Apply to
Instancia del
Plantillas
Instance of metamodelo
Based
on

Yields
Especificación

Código
generado
Plantillas + Metamodelo
Ejemplo

[http://www.openarchitectureware .org/pub/documentation /4.3.1/openArchitectureWare -4.3.1-


Basados en una API

Gramática
(AST/CST)

Based on Instance of

Programa Uses Creates Código


API
cliente Modifies generado
Basados en una API
Ejemplo

Class

[http://ondotnet .com/pub/a/dotnet /2003/02/03/codedom .html?


En línea

Preprocesamiento
Especificación Algunas
variantes del variantes
código resueltas

Código con
variantes Código generado
resueltas
En línea
Ejemplo

[http:// irc.essex.ac.uk/www.iota-
Tejido de código

Especificación
de los puntos
de enlace

Artefacto 1 Artefacto 2 Artefacto 3

Código
generado /
Tejido
Tejido de código
Ejemplo

[http:// today .java.net/today/2004/11/22/Aspects_2 -


Basado en atributos

Atributos

Apply to
Representación
Generador
Apply to interna

Código no
generado

Código
generado
Basado en atributos
Ejemplo

[http://
Procesamiento de
Frames
3) Instancia y
parametriza
1) Crea e
instancia
Generador

2) Instancia y
4) Genera parametriza
Frame de Frame de
especificación código

{repeat}

5)
Código
generado
Procesamiento de
Frames
Ejemplo

Frame

Instanciación

Generación

short int aShortNumber ;

[http://www.voelter .de/data/pub/ProgramGeneration .pdf


Model-Driven Architecture

MDA
Conceptos Básicos
Introducción

 http://www.omg.org/mda
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

Arquitectura de cuatro
capas
Meta - metamodelo MOF
( M3 )

Metamodelo ( M2 ) UML ODM


Modelo ( M1 ) Modelos UML Modelos ODM


Realidad ( M0 ) Sistema
Estándares
relacionados con MDA
The Meta Object Facility
(MOF)
Model
Element

Import Namespace Constraint Tag Feature

imports

Generalizable Behavioral
generalizes Element Feature

Package Classifier Operation Canthrow Exception

Association Class
MOF (2/2)
MOF

Metamodelo origen Metamodelo destino

Reglas de transformación
(QVT)

transformación
Modelo origen Modelo destino
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
UML (2/2)
Extender UML basándose en perfiles UML
«metaclass» * 1 «metaclass» «metaclass»
Attribute Class Operation

1 *

«extends» «extends» «extends»

stereotype
<<stereotype>> PrimaryKey <<stereotype>> Entity <<stereotype>> FinderMethod
PersistenceTime : (short, long)

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

constraint tagged value

<<Entity>> Empleado * 1 <<Entity>> Empresa


-<<PrimaryKey>> nif : string -<<PrimaryKey>> cif : string
-edad : int -name : string
{PersistenceTime=short} -<<FinderMethod>>findByCif()
XML Metadata
Interchange (XMI)
 Sirve para serializar modelos
 Permite que las herramientas se
integren
XMI 2 . 1
– MOF 2009
2.0
XMI 1 . 3
– MOF
1.4 XMI 2 . 0
XMI 1 . 1 – MOF
– MOF 1.4
1.3
XMI 1 . 2
– MOF
1.4
XMI (2/2)
XMI (3/3)
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
OCL (2/3)
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)


conductoresPotenciales
empleados
pre: (conductor==null) && (p.edad >= 18)
post: conductor = p
Persona
conductor
-edad : int

context Empresa::contratar(p: Persona)


pre: --none
post: (empleados.size = empleados@pre.size + 1) &&
(empleados.includes(p))
[Stahl and Völter, 2006]
OCL (3/3)

 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

xt Pe rso n a D e sco n o cid a co n text Pa ra m e tro sN u m e rico s


a m e == “ n o id e n tifica d a ” ||“ desconocida ” in v : typ e . n a m e == “ In te g e r”
Query, Views,
Transformations (QVT)
 Lenguaje de transformación de
modelos
 Compuesto de tres lenguajes con
objetivos distintos
 QVT Operation Mappings Language
Relations Language

Black Box Mappings


 Relacional
 Core
Core Language
 Operacional
QVT (2/3)
Lenguaje relacional

 Transformaciones  un conjunto de
relaciones
 Declarativo

[Mens, 2009]
QVT (3/3)
Lenguaje operacional

 Transformaciones  un conjunto de
operaciones
 Imperativo

[Mens, 2009]
La cadena de
modelado
Relaciones entre M1 y
M2 In sta n ce o f

V e h íc u lo M o d e lE le m e n t
-n a m e: strin g
+p u e d e M o ve(r)se:b o o l

*
P e rs o n a +d r ive r+ca r C o ch e C la s s ifie r F e a t u re
-n o m b r :estrin g -g e n e r a liza tio n s -visib ility: V isib ility
1 1..*
1 *
*
1
4
C la s s D ataT yp e O p e ra t io n A t t rib u te A s s o c ia t io n E n d
R u ed a
-m a lE sta d:ob o o l
1

A s s o c ia t io n

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


Relaciones entre M1 y
M2 In sta n ce o f

V e h íc u lo M o d e lE le m e n t
-n a m e: strin g
+p u e d e M o ve(r)se:b o o l

*
P e rs o n a +d r ive r+ca r C o ch e C la s s ifie r F e a t u re
-n o m b r :estrin g -g e n e r a liza tio n s -visib ility: V isib ility
1 1..*
1 *
*
1
4
C la s s D ataT yp e O p e ra t io n A t t rib u te A s s o c ia t io n E n d
R u ed a
-m a lE sta d:ob o o l
1

A s s o c ia t io n
Relaciones entre M1 y
M2 In sta n ce o f

V e h íc u lo M o d e lE le m e n t
-n a m e: strin g
+p u e d e M o ve(r)se:b o o l

*
P e rs o n a +d r ive r+ca r C o ch e C la s s ifie r F e a t u re
-n o m b r :estrin g -g e n e r a liza tio n s -visib ility: V isib ility
1 1..*
1 *
*
1
4
C la s s D ataT yp e O p e ra t io n A t t rib u te A s s o c ia t io n E n d
R u ed a
-m a lE sta d:ob o o l
1

A s s o c ia t io n
Relaciones entre M1 y
M2 In sta n ce o f

V e h íc u lo M o d e lE le m e n t
-n a m e: strin g
+p u e d e M o ve(r)se:b o o l

*
P e rs o n a +d r ive r+ca r C o ch e C la s s ifie r F e a t u re
-n o m b r :estrin g -g e n e r a liza tio n s -visib ility: V isib ility
1 1..*
1 *
*
1
4
C la s s D ataT yp e O p e ra t io n A t t rib u te A s s o c ia t io n E n d
R u ed a
-m a lE sta d:ob o o l
1

A s s o c ia t io n
Relaciones entre M1 y
M2 In sta n ce o f

V e h íc u lo M o d e lE le m e n t
-n a m e: strin g
+p u e d e M o ve(r)se:b o o l

*
P e rs o n a +d r ive r+ca r C o ch e C la s s ifie r F e a t u re
-n o m b r :estrin g -g e n e r a liza tio n s -visib ility: V isib ility
1 1..*
1 *
*
1
4
C la s s D ataT yp e O p e ra t io n A t t rib u te A s s o c ia t io n E n d
R u ed a
-m a lE sta d:ob o o l
1

A s s o c ia t io n
Relaciones entre M1 y
M2 In sta n ce o f

V e h íc u lo M o d e lE le m e n t
-n a m e: strin g
+p u e d e M o ve(r)se:b o o l

*
P e rs o n a +d r ive r+ca r C o ch e C la s s ifie r F e a t u re
-n o m b r :estrin g -g e n e r a liza tio n s -visib ility: V isib ility
1 1..*
1 *
*
1
4
C la s s D ataT yp e O p e ra t io n A t t rib u te A s s o c ia t io n E n d
R u ed a
-m a lE sta d:ob o o l
1

A s s o c ia t io n
Relaciones entre M1 y
M2 In sta n ce o f

V e h íc u lo M o d e lE le m e n t
-n a m e: strin g
+p u e d e M o ve(r)se:b o o l

*
P e rs o n a +d r ive r+ca r C o ch e C la s s ifie r F e a t u re
-n o m b r :estrin g -g e n e r a liza tio n s -visib ility: V isib ility
1 1..*
1 *
*
1
4
C la s s D ataT yp e O p e ra t io n A t t rib u te A s s o c ia t io n E n d
R u ed a
-m a lE sta d:ob o o l
1

A s s o c ia t io n
Relaciones entre M1 y
M2 In sta n ce o f

V e h íc u lo M o d e lE le m e n t
-n a m e: strin g
+p u e d e M o ve(r)se:b o o l

*
P e rs o n a +d r ive r+ca r C o ch e C la s s ifie r F e a t u re
-n o m b r :estrin g -g e n e r a liza tio n s -visib ility: V isib ility
1 1..*
1 *
*
1
4
C la s s D ataT yp e O p e ra t io n A t t rib u te A s s o c ia t io n E n d
R u ed a
-m a lE sta d:ob o o l
1

A s s o c ia t io n
Relaciones entre M2 y
M3 M o d elElemen t
Instance of
-nam e: string

M o d elElemen t
-nam e: string

*
C lassifier F eatu re
-generalizations -visibility : Visibility
1 1..*
*
Gen eralizab leElemen t F eatu re T yp ed Elemen t
*

C lass D ataT yp e Op eratio n A ttrib u te A sso ciatio n En d *

C lassifier Stru ctu ralF eatu re A sso ciatio n En d


1

A sso ciatio n

A sso ciatio n C lass D ataT yp e A ttrib u te

PrimitiveT yp e Visib ilityK in d

http://smv.unige.ch/old/tiki-download_file.php?
Relaciones entre M2 y
M3 Mo d elElemen t
Instance of
-name: string

M o d elElemen t
-name: string

*
Classifier F eatu re
-generalizations -visibility : Visibility
1 1..*
*
Gen eralizab leElemen t F eatu re T yp ed Elemen t
*

C lass DataT yp e Op eratio n A ttrib u te Asso ciatio n En d *

Classifier Stru ctu ralF eatu re A sso ciatio n En d


1

A sso ciatio n

A sso ciatio n Class D ataT yp e Attrib u te

PrimitiveT yp e Visib ilityKin d


Relaciones entre M2 y
M3 Mo d elElemen t
Instance of
-name: string

M o d elElemen t
-name: string

*
Classifier F eatu re
-generalizations -visibility : Visibility
1 1..*
*
Gen eralizab leElemen t F eatu re T yp ed Elemen t
*

C lass DataT yp e Op eratio n A ttrib u te Asso ciatio n En d *

Classifier Stru ctu ralF eatu re A sso ciatio n En d


1

A sso ciatio n

A sso ciatio n Class D ataT yp e Attrib u te

PrimitiveT yp e Visib ilityKin d


Relaciones entre M2 y
M3 Mo d elElemen t
Instance of
-name: string

M o d elElemen t
-name: string

*
Classifier F eatu re
-generalizations -visibility : Visibility
1 1..*
*
Gen eralizab leElemen t F eatu re T yp ed Elemen t
*

C lass DataT yp e Op eratio n A ttrib u te Asso ciatio n En d *

Classifier Stru ctu ralF eatu re A sso ciatio n En d


1

A sso ciatio n

A sso ciatio n Class D ataT yp e Attrib u te

PrimitiveT yp e Visib ilityKin d


Relaciones entre M2 y
M3 Mo d elElemen t
Instance of
-name: string

M o d elElemen t
-name: string

*
Classifier F eatu re
-generalizations -visibility : Visibility
1 1..*
*
Gen eralizab leElemen t F eatu re T yp ed Elemen t
*

C lass DataT yp e Op eratio n A ttrib u te Asso ciatio n En d *

Classifier Stru ctu ralF eatu re A sso ciatio n En d


1

A sso ciatio n

A sso ciatio n Class D ataT yp e Attrib u te

PrimitiveT yp e Visib ilityKin d


Relaciones entre M2 y
M3 Mo d elElemen t
Instance of
-name: string

M o d elElemen t
-name: string

*
Classifier F eatu re
-generalizations -visibility : Visibility
1 1..*
*
Gen eralizab leElemen t F eatu re T yp ed Elemen t
*

C lass DataT yp e Op eratio n A ttrib u te Asso ciatio n En d *

Classifier Stru ctu ralF eatu re A sso ciatio n En d


1

A sso ciatio n

A sso ciatio n Class D ataT yp e Attrib u te

PrimitiveT yp e Visib ilityKin d


Relaciones entre M2 y
M3 Mo d elElemen t
Instance of
-name: string

M o d elElemen t
-name: string

*
Classifier F eatu re
-generalizations -visibility : Visibility
1 1..*
*
Gen eralizab leElemen t F eatu re T yp ed Elemen t
*

C lass DataT yp e Op eratio n A ttrib u te Asso ciatio n En d *

Classifier Stru ctu ralF eatu re A sso ciatio n En d


1

A sso ciatio n

A sso ciatio n Class D ataT yp e Attrib u te

PrimitiveT yp e Visib ilityKin d


Aplicación de la Ingeniería Dirigida por Modelos

Ejemplos
Telefonía IP

[Kelly and Tolvanen ,


Productos de seguros

[Kelly and Tolvanen ,


Automatización del
hogar

[Kelly and Tolvanen ,


Aplicaciones para
móviles

[Kelly and Tolvanen ,


Relojes digitales

[Kelly and Tolvanen ,


Línea de productos
para crear videojuegos
Introducción

 Los videojuegos son uno de los negocios


más rentables del mundo
 Se quiere industrializar su
 desarrollo [Furtado, 2007]
 Juegos de aventuras
SLGML

 Integrado en Visual Studio



Entorno de desarrollo
(1/2)
Entorno de desarrollo
(2/2)
Generación de
artefactos
Validaciones semánticas

 Todoslos estados del juego tienen


que ser alcanzables
 Un personaje principal
 Una pantalla de inicio
 Una pantalla de fin de juego
 Etc…
Resultados
Sistemas de
trazabilidad
alimentaria
Introducción

 Sistema que sirve para hacer la


trazabilidad en la fabricación de
productos alimentarios
 Caso real de aplicación de MDE Trazabilidad hacia delante

Raw Transport Production Product Storage Distribution Shop Home


Material
Trazabilidad hacia detrás

Sistemas de identificación

Otros sistemas de identificación

Customer
Customer
Barcode RFID Monitor
Producer
Producer
Authority
Authority
...
...
La idea

 Crearun sistema software/hardware


adaptable a cada cliente de forma
sencilla
Printer

RFID
Reader
Authority
Interface

Server
Consumer Terminal
Interface

Producer Labeler
Interface
RFID
Chip
Proceso de fabricación
1.1Productor ?
FABRICADEQUESOS
1.2Tipo?
PROCESOBEYOS
1.3Peso? 6.1Lote? 7.1LoteLeche?
1.4Temperatura? 6.2Cantidad? 7.2Cantidad? Fecha: 04/06/2008
1.5Acidez? 6.2PH? 7.3Mas Leche? Versión: 0.017
1.6LoteProductor? 7.4LoteCuajo?
1.7LoteINT ->? 1.RECEPCION 7.5Mas Cuajo?
LECHE 7.6LoteFermentos?
6. 7.7Mas Fermentos?
2.1Productor ? PASTEURIZA 7.8LoteCalcio?
2.2Cantidad? 7.9Mas Calcio?
2.3LoteProductor?
7.10LoteINT ->
2.4LoteINT ->? 2.RECEPCION
CUAJO 12.1Lote?
12.2Nº Artículos?
3.1Productor ? 12.3Cliente?
3.2Cantidad?
3.3LoteProductor? 7.CUAJADA
3.4LoteINT ->? 3.RECEPCION
FERMENTOS
13.ENVASADO
4.1Productor ? Las etiquetaslasirán REQUESÓN
4.2Cantidad? colocandoenlas
4.3LoteProductor? estanteríasque
4.4LoteINT ->? 4.RECEPCION quieran
CALCIO 14.1Cliente?
8.1LoteCuajada? 14.2Lote?
8.2Nº etiquetasdeseadas? 14.3Unidades?
5.1Productor ?
5.2Cantidad? ETIQUETASRFID
5.3LoteProductor? 5.RECEPCION
5.4LoteINT ->? SAL 14.
8. COMERCIALIZ
EMMOLDADO ACION

11.1RFIDSecado?
11.3Nº Contra -etiquetas?
11.4PrimeraContra -etiqueta 13.1Cliente?
9.1RFIDEnmoldado? 10.1RFIDSalado? 11.5Cliente? 13.2Peso?
9.2LoteSal? 13.3Lote?
13.4Unidades?
ETIQUETAS
COMERCIALES

12.
9. SALADO 10.SECADO 11.ENVASADO COMERCIALIZ
ACION
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
PIM (Productos)
Generador de código

Modelo origen Sistema generado

nUML ExpertCoder
Sistema generado

Database.sq
l
Plataforma para el desarrollo de software dirigido por
modelos

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

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


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
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…
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)
▪ …


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
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
Trabajando con el Eclipse Modeling Project

Práctico
Instalación

 Lo más fácil es descargar un Eclipse


con todo
 http://www.eclipse.org/downloads/packa
(Eclipse Modeling Tools)


Definición de un
metamodelo
 Mediante el editor gráfico
Meta-metamodelo Ecore
ECORE META - METAMODEL

 Ecore

Crear un Proyecto

 Nuevo proyecto 
org.eclipse.emp.examples.web


Crear el modelo Ecore
(1/2)
Metamodelo
 Nuevo elemento en la carpeta model 
web. ecore


Crear el modelo Ecore
(2/2)
Metamodelo


Visualizar el modelo
Ecore


Crear el modelo
Generador
Metamodelo generador
 Nuevo EMF Generator Model 
web. genmodel


Configurar el modelo
Generador


Generar código Java


Generar un plug-in


Crear un modelo con el
plug-in

Pro
yec
Jav to
a
Crear un modelo
programáticamente (1/2)


Crear un modelo
programáticamente (2/2)


Crear JavaDoc


Crear métodos (1/3)


Crear métodos (2/3)


EOperation

Cuerpo del método

EParameter

Documentación JavaDoc
Crear métodos (3/3)
Extender un modelo
Ecore (1/2)


Extender un modelo
Ecore (2/2)


Persistir el modelo a XMI

 Abrir
org.eclipse.emp.examples.web.program
ming
 Crear SaveXMI.java


Cargar el modelo
serializado
 Abrir
org.eclipse.emp.examples.web.programming
 Crear LoadXMI.java


Generar código a partir del
modelo (1/6)
 Java Emitter Template (JET)
 Model-to-Text
 Modelo  J.V.  Texto
 Traducción . generación
 Tipos de elementos
▪ Directivas  <.@ … .>
▪ .xpresiones  <.= .. .>
▪ .criplets  <. … .>



Generar código a partir del
modelo (2/6)
 Convertir el proyecto para trabajar con JET
 org.eclipse.emp.examples.web.programmi
ng


Generar código a partir del
modelo (3/6)


Generar código a partir del
modelo (4/6)
Creación de la plantilla


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


Generar código a partir del
modelo (6/6)

C re a r p ro g ra m á tica m e n te ca te g o ría s y


a rtícu lo s d e n tro d e u n a W e b

C re a r m e d ia n te JE T u n a rch ivo H T M L
p a ra la W e b ( in d ex . h tm l) y d e n tro
e n la ce s a u n archivo HTML para ca d a
ca te g o ría , m o stra n d o e n ca d a ca te g o ría
la in fo rm a ció n d e lo s a rtícu lo s

Patrón de diseño
Observer
 Abrir
org.eclipse.emp.examples.web.program
ming
 Crear Observable.java y Observer.java


Definición de un
metamodelo
 Mediante interfaces Java anotadas
Interfaces Java anotadas
(1/4)
 Se utilizan comentarios JavaDoc para
anotarlas

 Algunas propiedades…
 abstract=“BOOLEAN”
 required=“BOOLEAN
 containment=“BOOLEAN”
 default=VALUE
 changeable=“BOOLEAN"

Interfaces Java anotadas
(2/4)
 Crear archivo web.genmodel
 Proyecto org.eclipse.emp.examples.web.interfaces

Interfaces Java anotadas
(3/4)
Interfaces Java anotadas
(4/4)
Definición de un
metamodelo
 Programáticamente
Programáticamente
(1/5)
 Metamodelo

 Modelo  API reflectiva basada en Eobject


 e.lass(.
 eGet(. . e.et(.
 e.ontents(. . e.ontainer(.



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

Programáticamente (3/5)
Programáticamente (4/5)
Programáticamente (5/5)
Bibliografía
 Bibliografía básica

http://www.omg.org

S-ar putea să vă placă și