Documente Academic
Documente Profesional
Documente Cultură
Trabajo mental
de los
desarrolladores
Conceptos de la tecnología utilizada
PARTE ESPECÍFICA
PARTE VARIABLE
PARTE COMÚN
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
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
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
Instancia de
Representado por
Espacios de modelado
MOF EBNF
M3 MOF EBN F
M1 UML classes
, objects, ... Programas informáticos
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
>>
Modelo
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
Metamodelo
Apply to
Instancia del
Plantillas
Instance of metamodelo
Based
on
Yields
Especificación
Código
generado
Plantillas + Metamodelo
Ejemplo
Gramática
(AST/CST)
Based on Instance of
Class
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
Código
generado /
Tejido
Tejido de código
Ejemplo
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
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 )
Realidad ( M0 ) Sistema
Estándares
relacionados con MDA
The Meta Object Facility
(MOF)
Model
Element
imports
Generalizable Behavioral
generalizes Element Feature
Association Class
MOF (2/2)
MOF
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 *
stereotype
<<stereotype>> PrimaryKey <<stereotype>> Entity <<stereotype>> FinderMethod
PersistenceTime : (short, long)
context Entity
inv: attribute->exists(isStereoKinded("PrimaryKey")
vehículos
+contratar(entrada p : Persona) +conducir (entrada p : Persona)
jefe
«metaclass» «metaclass»
MM::PersonaDesconocida MM::ParametrosNumericos
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
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
*
A sso ciatio n
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
*
A sso ciatio n
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
*
A sso ciatio n
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
*
A sso ciatio n
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
*
A sso ciatio n
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
*
A sso ciatio n
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
*
A sso ciatio n
Ejemplos
Telefonía IP
Sistemas de identificación
Customer
Customer
Barcode RFID Monitor
Producer
Producer
Authority
Authority
...
...
La idea
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
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
Sintaxis concreta
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
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
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)
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
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