Ingeniería de software - Descripción, características, modelos
Introducción a la ingeniería dirigida por modelos
-
Upload
vicente-garcia-diaz -
Category
Technology
-
view
770 -
download
1
Transcript of Introducción a la ingeniería dirigida por modelos
Ingeniería Dirigida por Modelos
Introducción
Vicente García Díaz – [email protected]
Universidad de Oviedo, 2012
Model Driven Engineering
Research Group
Tabla de contenidos
1. Conceptos básicos
2. Ejemplos de aplicación
3. Terminología
4. El estándar Model-Driven Architecture
5. La plataforma Eclipse Modeling Project
2
Introducción
4
Conceptos básicos
Fuente: http://blog.drummondhouseplans.com/category/multi-family/
5
Conceptos básicos
Fuente: http://www.flightglobal.com//
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
• Por supuesto…
7
Conceptos básicos
¿Modelos en el desarrollo software?
Modelo Producto 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
8
Conceptos básicos
Proceso típico de desarrollo
• Peculiaridad: los productos software se pueden diseñar y crear sin “salir” del ordenador
• Informática Información + Automática
¿Podríamos automatizar la etapa de desarrollo?
9
Conceptos básicos
Proceso de desarrollo de software
Modelo Producto Desarrollo
• Para crear modelos software
• Dichos modelos definen los conceptos de un dominio determinado
• Las tecnologías existentes englobadas en MDE permiten trabajar con los modelos como si fueran lenguajes de programación de alto nivel
▫ Generalmente lenguajes de dominio específico
10
¿Para qué se utiliza principalmente MDE?
Conceptos básicos
• Crecimiento de la complejidad del software
• No se reutiliza ni el conocimiento tecnológico ni del dominio
• Se necesita industrializar el desarrollo del software
• El término crisis del software sigue vigente
11
Motivación
Conceptos básicos
The major cause of the software crisis is that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem [Dijkstra, 1972]
• El nivel de abstracción de los lenguajes va en aumento ▫ Binario
▫ Ensamblador
▫ Procedimental
▫ Orientado a objetos
• Hacia el espacio de la solución del problema
• En los años 80 surgen las herramientas CASE ▫ No tuvieron mucho éxito
12
Antecedentes
Conceptos básicos
• Reducir la complejidad de las plataformas actuales
• Expresar los conceptos de los diferentes dominios de forma más apropiada
13
Objetivos
Conceptos del dominio
Conceptos del dominio
Conceptos de la tecnología utilizada
Trabajo mental de los desarrolladores
Conceptos de la tecnología utilizada
Conceptos básicos
Ejemplos de aplicación
Telefonía IP
Fuente: [Kelly and Tolvanen, 2008]
Ejemplos de aplicación
Productos de seguros
Fuente: [Kelly and Tolvanen, 2008]
Ejemplos de aplicación
Automatización del hogar
Fuente: [Kelly and Tolvanen, 2008]
Ejemplos de aplicación
Aplicaciones para móviles
Fuente: [Kelly and Tolvanen, 2008]
Ejemplos de aplicación
Relojes digitales
Fuente: [Kelly and Tolvanen, 2008]
Ejemplos de aplicación
Sistemas de trazabilidad alimentaria
2. RECEPCION CUAJO
5. RECEPCION SAL
1. RECEPCION LECHE
10. SECADO
7. CUAJADA
FABRICA DE QUESOSPROCESO BEYOS
Fecha: 04/06/2008Versión: 0.017
11. ENVASADO
12. COMERCIALIZ
ACION
6. PASTEURIZA
14.1 Cliente?
14.2 Lote?
14.3 Unidades?
11.1 RFID Secado?
11.3 Nº Contra-etiquetas?
11.4 Primera Contra-etiqueta
11.5 Cliente?
1.1 Productor ?
1.2 Tipo?
1.3 Peso?
1.4 Temperatura?
1.5 Acidez?
1.6 Lote Productor?
1.7 Lote INT->?
2.1 Productor ?2.2 Cantidad?2.3 Lote Productor?2.4 Lote INT->?
3.1 Productor ?3.2 Cantidad?3.3 Lote Productor?3.4 Lote INT->?
7.1 Lote Leche?
7.2 Cantidad?
7.3 Mas Leche?
7.4 Lote Cuajo?
7.5 Mas Cuajo?
7.6 Lote Fermentos?
7.7 Mas Fermentos?
7.8 Lote Calcio? 7.9 Mas Calcio? 7.10 Lote INT->
6.1 Lote ?
6.2 Cantidad?
6.2 PH?
10.1 RFID Salado?
3. RECEPCION FERMENTOS
4. RECEPCION CALCIO
5.1 Productor ?5.2 Cantidad?5.3 Lote Productor?5.4 Lote INT->?
8. EMMOLDADO
4.1 Productor ?4.2 Cantidad?4.3 Lote Productor?4.4 Lote INT->?
ETIQUETAS RFID
9. SALADO
9.1 RFID Enmoldado?
9.2 Lote Sal?
13. ENVASADO REQUESÓN
12.1 Lote?
12.2 Nº Artículos?
12.3 Cliente?
ETIQUETAS COMERCIALES
Las etiquetas las irán colocando en las estanterías que quieran
14. COMERCIALIZ
ACION
13.1 Cliente?
13.2 Peso?
13.3 Lote?
13.4 Unidades?
8.1 Lote Cuajada?
8.2 Nº etiquetas deseadas?
Ejemplos de aplicación
Videojuegos en entorno .NET
[Furtado, 2007]
Esto es un poco la idea del GADE4ALL, ¿Podríais cambiarlo por un par de
imágenes del GADE4ALL y así hablamos un poco del proyecto?
• Relación en cascada entre modelos y metamodelos
23
Terminología
El metamodelado
Elementos del mundo real (dominio)
Modelo Metamodelo describe describe
24
Espacio conceptual
Dominio Metamodelo
Meta-metamodelo
Sintaxis abstracta
Semántica estática
Sintaxis concreta
Lenguaje de dominio
específico
Semántica
Modelo formal
Describe conceptos de
<<instanceof>>
<<instanceof>>
Basado en
Respeta a
Subdominios
Terminología
• Clave de la ingeniería dirigida por modelos
• Es imprescindible para: 1. Construir lenguajes de dominio específico
2. Validar modelos
3. Transformar modelos
4. Generar artefactos (código, documentación, etc.)
5. Integración de herramientas
25
Beneficios del uso de un metamodelo
Terminología
Terminología
• Fueron definidas en los años 60 por Carl Adam Petri
• Son una especialización de la teoría de autómatas que permite expresar eventos concurrentes
• Tiene lugares, transiciones y arcos dirigidos
• Áreas de aplicación: análisis de datos, diseño de software, fiabilidad, flujo de trabajo…
27
Ejemplo de dominio: Redes de Petri
Dominio de las Redes de Petri
P1
P2
P1P3 P5
T1
T2
15
4
17
3 4 6
Terminología
28
Ejemplo de dominio: Redes de Petri
Un metamodelo para el dominio
+Name : string
Node
+weight : int
Arc
Place Transition
PetriNet
10..*
1
0..*
P1
P2
P1P3 P5
T1
T2
15
4
17
3 4 6
Terminología
29
Ejemplo de dominio: Redes de Petri
Un meta-metamodelo para el dominio
Model Element
Generalizable Element
Association ClassAttribute
Typed Element
+Name : string
Node
+weight : int
Arc
Place Transition
PetriNet
10..*
1
0..*
Terminología
30
Ejemplo de dominio: Redes de Petri
Mapeo entre sintaxis abstracta y concreta
+Name : string
Node
+weight : int
Arc
Place Transition
PetriNet
1 0..*
1
0..*
P1 P2
T1
15 17
Terminología
31
Terminología
Supermetamodelo (I)
Elementos del mundo real
Modelo
Metamodelo
Meta-metamodeloM3
M2
M1
M0
Instancia de
Representado por
32
Terminología
Supermetamodelo (II)
Elementos del mundo real
UML classes, objects, ...
UML, ODM, ...
MOFM3
M2
M1
M0
MOF
Instancia de
Representado por
Elementos del mundo real
Programas informáticos
JAVA, C#, XML, ...
EBNF
EBNF
33
Terminología
Dualidad de los espacios de modelado
MOFM3
M2
M1
M0
MO
F
UML ODM
Modelo UML de
la gramática de
Java
Modelo UML
de un
programa Java
Modelo
ODM de
animales
EB
NF
EBNF
Gra
mát
ica
de
Java
Pro
gram
a Ja
va
34
Terminología
Ciclo de vida del desarrollo con MDE
Tradicional
Requisitos
Análisis
Diseño
Codificación
Pruebas
Despliegue
Texto
Modelo
Modelo
Código
Código
MDE
Requisitos
Análisis
Diseño
Codificación
Pruebas
Despliegue
Texto
Modelo
Modelo
Código
Código
Paso manual
Paso automático
35
Terminología
Secuencia de pasos
Modelo
Transformación
Modelo
Transformación
Artefactos textuales
generados
Metamodelo
Reglas de transformación
Reglas de transformación
Modelo Modelo
<<instanceof>>
<<instanceof>>
• Metamodelo (meta-metamodelo) + Plantillas
36
Terminología
¿Cómo se generan los artefactos? (I)
Especificación
Metamodelo
Instancia del
metamodeloPlantillas
Código
generado
Based
on
Yields
Instance of
Apply to
• Metamodelo (meta-metamodelo) + Plantillas
37
Terminología
¿Cómo se generan los artefactos? (II)
Fuente: http://www.openarchitectureware.org/pub/documentation/4.3.1/openArchitectureWare-4.3.1-Reference.pdff
• http://www.omg.org/mda
39
El estándar Model-Driven Architecture
Introducción
• Computation Independent Model (CIM)
• Platform Independent Model (PIM)
• Platform Specific Model (PSM)
• Implementation Specific Model (ISM)
40
El estándar Model-Driven Architecture
Puntos de vista
CIM
PIM
PSM 1 PSM n
ISM 1 ISM n
…
…
41
El estándar Model-Driven Architecture
Arquitectura en cuatro capas
MOF
UML ODM
Modelos UML Modelos ODM
…
…
Sistema
Meta-metamodelo (M3)
Metamodelo (M2)
Modelo (M1)
Realidad (M0)
• Ecore
ECORE META-METAMODEL
Estándares relacionados (MOF)
Meta-Object Facility (MOF) ECORE
El estándar Model-Driven Architecture
43
El estándar Model-Driven Architecture
Empleo de MOF como origen de todo Estándares relacionados (MOF)
MOF
Metamodelo origen Metamodelo destino
Modelo origen Modelo destino
Reglas de transformación
(QVT)
transformación
44
El estándar Model-Driven Architecture
Unified Modeling Language (UML) Estándares relacionados (UML)
• Estándar para ▫ Visualizar
▫ Especificar
▫ Documentar
▫ …
• Independiente del lenguaje
• Una combinación ▫ Fue diseñado por “The three amigos”
▫ James Rumbaugh, Ivar Jacobson, Grady Booch
45
El estándar Model-Driven Architecture
Extensión de UML basada en Perfiles Estándares relacionados (UML)
«metaclass»
Attribute
«metaclass»
Class
«metaclass»
Operation1*
1 *
<<stereotype>> PrimaryKey <<stereotype>> Entity <<stereotype>> FinderMethod
«extends» «extends» «extends»
PersistenceTime: (short, long)
context Entity
inv: attribute->exists(isStereoKinded("PrimaryKey")
-<<FinderMethod>>findByCif()
-<<PrimaryKey>> cif : string
-name : string
<<Entity>> Empresa
-<<PrimaryKey>> nif : string
-edad : int
<<Entity>> Empleado 1*
{PersistenceTime=short}
stereotype
tagged value constraint
46
El estándar Model-Driven Architecture
XML Metadata Interchange (XMI) (I) Estándares relacionados (XMI)
• Sirve para serializar modelos
• Permite que las herramientas se integren
XMI 1.1 – MOF 1.3
XMI 1.2 – MOF 1.4
XMI 1.3 – MOF 1.4
XMI 2.0 – MOF 1.4
XMI 2.1 – MOF 2.0
47
El estándar Model-Driven Architecture
XML Metadata Interchange (XMI) (II) Estándares relacionados (XMI)
48
El estándar Model-Driven Architecture
XML Metadata Interchange (XMI) (III) Estándares relacionados (XMI)
49
El estándar Model-Driven Architecture
Object Constraint Language (OCL) (I) Estándares relacionados (OCL)
• Se utiliza para definir restricciones
• Es parte de UML
• Tipos ▫ Clase invariant
▫ Precondiciones de una operación precondition
▫ Postcondiciones de una operación postcondition
50
El estándar Model-Driven Architecture
Object Constraint Language (OCL) (II) Estándares relacionados (OCL)
context Coche inv: conductor.edad >= 18
+contratar(entrada p : Persona)
Empresa
+conducir(entrada p : Persona)
Coche
-edad : int
Personaconductor
conductoresPotenciales
jefe
empleados
vehículos
poseedor
context Empresa inv: conductoresPotenciales = empleados->select(edad >= 18)
context Coche::conducir(p: Persona) pre: (conductor==null) && (p.edad >= 18) post: conductor = p
context Empresa::contratar(p: Persona) pre: --none post: (empleados.size = [email protected] + 1) && (empleados.includes(p))
Fuente: [Stahl and Völter, 2006]
51
El estándar Model-Driven Architecture
Object Constraint Language (OCL) (III) Estándares relacionados (OCL)
• Restricción en nivel Mn afecta al nivel Mn-1
context PersonaDesconocida inv: name == “no identificada” || “desconocida”
context ParametrosNumericos inv: type.name == “Integer”
-name : String
-type : Type
«metaclass»
UML::Attribute
«metaclass»
MM::ParametrosNumericos
-name : String
«metaclass»
UML::Class
«metaclass»
MM::PersonaDesconocida
52
El estándar Model-Driven Architecture
Query, Views, Transformations (QVT) (I) Estándares relacionados (QVT)
• Lenguaje de transformación de modelos
• Compuesto de tres lenguajes con objetivos distintos
• QVT ▫ Relacional
▫ Core
▫ Operacional Core Language
Relations Language O
per
atio
n M
app
ings
Lan
guag
e
Bla
ck Bo
x Ma
pp
ings
53
El estándar Model-Driven Architecture
Query, Views, Transformations (QVT) (II) Estándares relacionados (QVT)
• Lenguaje relacional ▫ Transformaciones un conjunto de relaciones
Declarativo
Fuente: [Mens, 2009]
54
El estándar Model-Driven Architecture
Query, Views, Transformations (QVT) (III) Estándares relacionados (QVT)
• Lenguaje operacional ▫ Transformaciones un conjunto de operaciones
Imperativo
Fuente: [Mens, 2009]
Relaciones entre M1 y M2
+puedeMoverse() : bool
Vehículo
Coche
-malEstado : bool
Rueda
-nombre : string
Persona
1
4
+driver
1
+car
*
-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
Instance of
[http://smv.unige.ch/old/tiki-download_file.php?fileId=661]
La cadena de modelado
Relación entre M1 y M2 El estándar Model-Driven Architecture
Relaciones entre M1 y M2
+puedeMoverse() : bool
Vehículo
Coche
-malEstado : bool
Rueda
-nombre : string
Persona
1
4
+driver
1
+car
*
-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
Instance of
La cadena de modelado
Relación entre M1 y M2 El estándar Model-Driven Architecture
Relaciones entre M1 y M2
+puedeMoverse() : bool
Vehículo
Coche
-malEstado : bool
Rueda
-nombre : string
Persona
1
4
+driver
1
+car
*
-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
Instance of
La cadena de modelado
Relación entre M1 y M2 El estándar Model-Driven Architecture
Relaciones entre M1 y M2
+puedeMoverse() : bool
Vehículo
Coche
-malEstado : bool
Rueda
-nombre : string
Persona
1
4
+driver
1
+car
*
-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
Instance of
La cadena de modelado
Relación entre M1 y M2 El estándar Model-Driven Architecture
Relaciones entre M1 y M2
+puedeMoverse() : bool
Vehículo
Coche
-malEstado : bool
Rueda
-nombre : string
Persona
1
4
+driver
1
+car
*
-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
Instance of
La cadena de modelado
Relación entre M1 y M2 El estándar Model-Driven Architecture
Relaciones entre M1 y M2
+puedeMoverse() : bool
Vehículo
Coche
-malEstado : bool
Rueda
-nombre : string
Persona
1
4
+driver
1
+car
*
-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
Instance of
La cadena de modelado
Relación entre M1 y M2 El estándar Model-Driven Architecture
Relaciones entre M1 y M2
+puedeMoverse() : bool
Vehículo
Coche
-malEstado : bool
Rueda
-nombre : string
Persona
1
4
+driver
1
+car
*
-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
Instance of
La cadena de modelado
Relación entre M1 y M2 El estándar Model-Driven Architecture
Relaciones entre M1 y M2
+puedeMoverse() : bool
Vehículo
Coche
-malEstado : bool
Rueda
-nombre : string
Persona
1
4
+driver
1
+car
*
-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
Instance of
La cadena de modelado
Relación entre M1 y M2 El estándar Model-Driven Architecture
Instance of-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
-name : string
ModelElement
GeneralizableElement Feature
Classifier
Association
*
*
Class DataType
PrimitiveType VisibilityKind
TypedElement
StructuralFeature AssociationEnd
Attribute
La cadena de modelado
Relación entre M2 y M3
[http://smv.unige.ch/old/tiki-download_file.php?fileId=661]
El estándar Model-Driven Architecture
Instance of-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
-name : string
ModelElement
GeneralizableElement Feature
Classifier
Association
*
*
Class DataType
PrimitiveType VisibilityKind
TypedElement
StructuralFeature AssociationEnd
Attribute
La cadena de modelado
Relación entre M2 y M3 El estándar Model-Driven Architecture
Instance of-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
-name : string
ModelElement
GeneralizableElement Feature
Classifier
Association
*
*
Class DataType
PrimitiveType VisibilityKind
TypedElement
StructuralFeature AssociationEnd
Attribute
La cadena de modelado
Relación entre M2 y M3 El estándar Model-Driven Architecture
Instance of-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
-name : string
ModelElement
GeneralizableElement Feature
Classifier
Association
*
*
Class DataType
PrimitiveType VisibilityKind
TypedElement
StructuralFeature AssociationEnd
Attribute
La cadena de modelado
Relación entre M2 y M3 El estándar Model-Driven Architecture
Instance of-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
-name : string
ModelElement
GeneralizableElement Feature
Classifier
Association
*
*
Class DataType
PrimitiveType VisibilityKind
TypedElement
StructuralFeature AssociationEnd
Attribute
La cadena de modelado
Relación entre M2 y M3 El estándar Model-Driven Architecture
Instance of-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
-name : string
ModelElement
GeneralizableElement Feature
Classifier
Association
*
*
Class DataType
PrimitiveType VisibilityKind
TypedElement
StructuralFeature AssociationEnd
Attribute
La cadena de modelado
Relación entre M2 y M3 El estándar Model-Driven Architecture
Instance of-name : string
ModelElement
Classifier
-visibility : Visibility
Feature
Class DataType Operation Attribute AssociationEnd
Association
1
1 1..*
*
-generalizations
*
-name : string
ModelElement
GeneralizableElement Feature
Classifier
Association
*
*
Class DataType
PrimitiveType VisibilityKind
TypedElement
StructuralFeature AssociationEnd
Attribute
La cadena de modelado
Relación entre M2 y M3 El estándar Model-Driven Architecture
• Engloba todo lo relacionado con MDE en Eclipse The Eclipse Modeling Project (EMP) focuses on the evolution and promotion of
model‐based development technologies within the Eclipse community by providing a unified set of modeling frameworks, tooling, and standards implementations
• Todos tienen Eclipse Public Licence y han de ser Open Source
• No está relacionado con el grupo OMG pero…
• Se divide principalmente en: ▫ Desarrollo de sintaxis abstractas
▫ Desarrollo de sintaxis concretas
▫ Transformación de modelos
▫ Herramientas de desarrollo
▫ Desarrollo de nuevas tecnologías
▫ Agrupación de proyectos
• http://www.eclipse.org/modeling
71
La Plataforma Eclipse Modeling Project
Eclipse Modeling Project
• Eclipse Modeling Framework (EMF)
▫ Ecore
▫ Otros componentes: Soporte para realizar transacciones sobre modelos
Validación de modelos
Consultas sobre modelos
Búsquedas sobre modelos
Comparación de modelos
Mecanismos de persistencia
72
La Plataforma Eclipse Modeling Project
Desarrollo de sintaxis abstractas
• Graphical Modeling Framework (GMF)
▫ Servicio de sintaxis gráficas
▫ Permite crear un editor sobre el metamodelo Ecore
▫ Graphiti es una tecnología englobada dentro de GMF
• Textual Modeling Framework (TMF)
▫ Servicio de sintaxis textuales
▫ Permite crear un editor sobre el metamodelo Ecore
▫ Xtext es una tecnología englobada dentro de TMF
73
La Plataforma Eclipse Modeling Project
Desarrollo de sintaxis concretas
• Model to Model Transformation (M2M)
▫ Para transformar unos modelos en otros
▫ QVT, ATL, …
• Model to Text Transformation (M2T)
▫ Para generar artefactos textuales
▫ Java Emitter Templates (JET), Xpand, etc…
74
La Plataforma Eclipse Modeling Project
Transformación de modelados
• Model Development Tools (MDT)
▫ Proyectos basados en estándares de la industria UML
XML Schema Definition
Object Constraint Language (OCL)
Business Process Modeling Notation (BPMN2)
eTrice
Papyrus
…
75
La Plataforma Eclipse Modeling Project
Herramientas de desarrollo
• Generative Modeling Technologies (GMT)
▫ Agrupa varios proyectos que aún están en fase experimental
▫ Muchos de ellos acaban formando parte de la lista principal de proyectos de EMP ATL -> ahora en M2M
Xpand -> ahora en M2T
Xtext -> ahora en TMF
76
La Plataforma Eclipse Modeling Project
Desarrollo de nuevas tecnologías
• Modeling Amalgamation Project (Amalgam)
▫ Amalgamation -> Es el proceso de combinar o unir entidades en una única forma
▫ Su propósito es agrupar tecnologías de EMP y facilitar su uso, instalación e integración
▫ Es un Eclipse con un gran número de proyectos del EMP integrado
77
La Plataforma Eclipse Modeling Project
Agrupación de proyectos
La Plataforma Eclipse Modeling Project
• Lo más fácil es descargar un Eclipse con todo
• http://www.eclipse.org/downloads/packages/eclipse-modeling-tools/junosr1 (Eclipse Modeling Tools)
79
La Plataforma Eclipse Modeling Project Instalación del entorno de desarrollo
Instalación
Mediante editor gráfico
La Plataforma Eclipse Modeling Project
• Nuevo Proyecto MDEWebMetamodelEditor
81
La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico)
Crear un proyecto
• Nuevo elemento en la carpeta model Web.ecore
82
La Plataforma Eclipse Modeling Project
Crear el metamodelo (I) Definición de un metamodelo (editor gráfico)
83
La Plataforma Eclipse Modeling Project
Crear el metamodelo (II) Definición de un metamodelo (editor gráfico)
84
La Plataforma Eclipse Modeling Project
Visualizar el metamodelo Definición de un metamodelo (editor gráfico)
• Nuevo EMF Generator Model Web.genmodel
85
La Plataforma Eclipse Modeling Project
Crear el modelo generador Definición de un metamodelo (editor gráfico)
86
La Plataforma Eclipse Modeling Project
Configurar el modelo generador Definición de un metamodelo (editor gráfico)
87
La Plataforma Eclipse Modeling Project
Crear JavaDoc
Botón derecho en Web.genmodel Reload
Definición de un metamodelo (editor gráfico)
88
La Plataforma Eclipse Modeling Project
Especificar métodos (I) Definición de un metamodelo (editor gráfico)
89
La Plataforma Eclipse Modeling Project
Especificar métodos (II)
EOperation
EParameter
Documentación JavaDoc
Cuerpo del método
Definición de un metamodelo (editor gráfico)
90
La Plataforma Eclipse Modeling Project
Especificar métodos (III) Definición de un metamodelo (editor gráfico)
91
La Plataforma Eclipse Modeling Project
Generar el código de los modelos Definición de un modelo (programáticamente)
92
La Plataforma Eclipse Modeling Project
Crear un proyecto Definición de un modelo (programáticamente)
93
La Plataforma Eclipse Modeling Project
Crear el código fuente para la definición
Definición de un modelo (programáticamente)
94
La Plataforma Eclipse Modeling Project
Generar todos los artefactos Definición de un modelo (plugin)
95
La Plataforma Eclipse Modeling Project
Crear el modelo mediante el editor Definición de un modelo (plugin)
• El archivo My.web internamente es código XML (XMI)
• También se puede persistir el modelo creado con Java
96
La Plataforma Eclipse Modeling Project
Guardar el modelo en formato XMI Persistencia de modelos
97
La Plataforma Eclipse Modeling Project
Cargar el modelo guardado en XMI Persistencia de modelos
• Los modelos se utilizan para obtener artefactos en base a lo que se haya modelado
• Java Emitter Templates (JET) es una tecnología que permite transformar modelos a texto (M2T)
• En concreto, con JET se hace traducción y generación
▫ Modelo Clase Java Texto
• Tipos de elementos: ▫ Directivas <%@ … %>
▫ Expresiones <%= .. %>
▫ Scriplets <% … %>
98
La Plataforma Eclipse Modeling Project
Java Emitter Templates Generación de artefactos a partir de modelos
• Desde el proyecto en el que se quiera generar artefactos…
99
La Plataforma Eclipse Modeling Project
Preparar el proyecto para trabajar con JET
Generación de artefactos a partir de modelos
• Estado de cómo quedará el proyecto al finalizar el proceso
100
La Plataforma Eclipse Modeling Project
Resumen de acciones a realizar Generación de artefactos a partir de modelos
101
La Plataforma Eclipse Modeling Project
Crear la plantilla Generación de artefactos a partir de modelos
• Crear ConvertToHTML.java
102
La Plataforma Eclipse Modeling Project
Generar artefactos desde la clase Java Generación de artefactos a partir de modelos
Mediante interfaces Java anotadas
La Plataforma Eclipse Modeling Project
La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java)
Idea general de lo que se hará
1. Crear interfaces Java anotadas
2. Crear el modelo generador (web.genmodel) en base a las interfaces
3. Se obtiene el metamodelo
Interfaces Java
Modelo generador
Metamodelo
• Se crea un proyecto Java y se incluyen librerías para trabajar con Ecore y para trabajar con XMI
105
La Plataforma Eclipse Modeling Project
Aspecto final del proyecto Definición de un metamodelo (interfaces Java)
• Se utilizan comentarios JavaDoc para indicar
• Algunas propiedades… ▫ abstract=“BOOLEAN”
▫ required=“BOOLEAN
▫ containment=“BOOLEAN”
▫ default=VALUE
▫ changeable=“BOOLEAN"
106
La Plataforma Eclipse Modeling Project
Elementos fundamentales de la API Definición de un metamodelo (interfaces Java)
107
La Plataforma Eclipse Modeling Project
Código de las interfaces (I) Definición de un metamodelo (interfaces Java)
108
La Plataforma Eclipse Modeling Project
Código de las interfaces (II) Definición de un metamodelo (interfaces Java)
• Cuando se crea el archivo web.genmodel elegir como model importer las anotaciones Java
• Se generará el archivo Ecore automáticamente
109
La Plataforma Eclipse Modeling Project
Generación del metamodelo Definición de un metamodelo (interfaces Java)
Programáticamente
La Plataforma Eclipse Modeling Project
La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)
Idea general de lo que se hará
1. Crear dinámicamente el metamodelo (modelo Ecore)
2. Crear dinámicamente un modelo a partir del metamodelo
3. Serializar el modelo
4. Deserializar el modelo
Metamodelo
Modelo XMI
Serializar
Deserializar
Se crea el metamodelo de forma dinámica
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
• Metamodelo
• Modelo API reflectiva basada en EObject ▫ eClass()
▫ eGet() y eSet()
▫ eContents() / eContainer()
La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)
Elementos fundamentales de la API
La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)
Ge
ner
ació
n d
el m
etam
od
elo
(I)
La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)
Ge
ner
ació
n d
el m
etam
od
elo
(II
)
La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)
Ge
ner
ació
n d
el m
etam
od
elo
(II
I)
La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)
Ge
ner
ació
n d
el m
etam
od
elo
(IV
)
La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)
Ge
ner
ació
n d
el m
etam
od
elo
(V
)
La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)
Gen
erac
ión
de
un
mo
del
o
La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)
Serializar y deserializar
La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente)
Resultado final
Bibliografía
122
¿Siguientes pasos?
123
• Creación de lenguajes de dominio específico textuales basados en modelos
• Creación de lenguajes de dominio
específico gráficos basados en modelos