ingeniería dirigida por modelos

Post on 14-Dec-2014

116 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

Introducción a la ingeniería dirigida por modelos para el Máster en Ingeniería Web de la Universidad de Oviedo

TRANSCRIPT

Ingeniería Dirigida por Modelos

Introducción

Vicente García Díaz (garciavicente@uniovi.es)

Juan Manuel Cueva LovelleMDE-OOTLAB Research GroupNoviembre 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 apropiadaConceptos del

dominio Conceptos del dominio

Conceptos de la tecnología utilizada

Trabajo mental de los desarrolladores Conceptos de la

tecnología utilizada

El metamodelado (1/2)

Relación en cascada entre modelos y metamodelos

Elementos del mundo

real (dominio)

Modelo Metamodelodescribe

describe

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

[Stahl and Völter, 2006]

PARTE VARIABLE

PARTE ESPECÍFICA

PARTE COMÚN

Desarrollo completo con MDE

[Stahl and Völter, 2006]

Tradicional vs MDE

[Stahl and Völter, 2006]

Espacio Conceptural

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

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

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

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

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

Proceso de trabajo

Supermetamodelo

Elementos del mundo real

Modelo

Metamodelo

Meta-metamodeloM3

M2

M1

M0

Instancia de

Representado por

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

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

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

Secuencia de pasos

Modelo

Transformación

Modelo

Transformación

Artefactos textuales

generados

Metamodelo

Reglas de transformaci

ón

Reglas de transformaci

ón

ModeloModelo

<<instanceof>>

<<instanceof>>

Generación de artefactos

¿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

Plantillas + Filtros

Especificación

Filtro

Subconjunto de la

especificaciónPlantillas

Código generado

Apply to

Apply to

Plantillas + FiltrosEjemplo

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

Plantillas + Metamodelo

Especificación

Metamodelo

Instancia del metamodelo

Plantillas

Código generado

Based on

Yields

Instance of

Apply to

Plantillas + MetamodeloEjemplo

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

Basados en una API

Código generado

Programa cliente

API

Gramática (AST/CST)

Based on

Uses

Instance of

Creates

Modifies

Basados en una APIEjemplo

Class

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

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

En líneaEjemplo

[http:// irc.essex.ac.uk/www.iota-six.co.uk/c/j1_the_c_preprocessor.asp]

Tejido de código

Artefacto 1

Especificación de los puntos

de enlace

Artefacto 2

Código generado /

Tejido

Artefacto 3

Tejido de códigoEjemplo

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

Basado en atributos

Código no generado

Atributos

Representación interna

Generador

Código generado

Apply to

Apply to

Basado en atributosEjemplo

[http:// java.sun.com/j2se/javadoc/writingdoccomments/]

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

Procesamiento de FramesEjemplo

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

Frame

Instanciación

Generación

short int aShortNumber;

MDAModel-Driven Architecture

Conceptos Básicos

Introducción

http://www.omg.org/mda

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

Arquitectura de cuatro capas

MOF

UML ODM

Modelos UML Modelos ODM

Sistema

Meta-metamodelo (M3)

Metamodelo (M2)

Modelo (M1)

Realidad (M0)

Estándares relacionados con MDA

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

MOF (2/2)

MOF

Metamodelo origen

Metamodelo destino

Modelo origen Modelo destino

Reglas de transformaci

ón(QVT)

transformación

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

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

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)

[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 = empleados@pre.size + 1) && (empleados.includes(p))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EjemplosAplicación de la Ingeniería Dirigida por Modelos

Telefonía IP

[Kelly and Tolvanen, 2008]

Productos de seguros

[Kelly and Tolvanen, 2008]

Automatización del hogar

[Kelly and Tolvanen, 2008]

Aplicaciones para móviles

[Kelly and Tolvanen, 2008]

Relojes digitales

[Kelly and Tolvanen, 2008]

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

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

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

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

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?

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 origenSistema

generado

nUML ExpertCoder

Sistema generado

Database.sql

Eclipse Modeling Project

Plataforma para el desarrollo de software dirigido por modelos

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

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 TMF

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

PrácticoTrabajando con el Eclipse Modeling Project

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)

Definición de un metamodeloMediante el editor gráfico

Meta-metamodelo Ecore

EcoreECORE META-METAMODEL

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

Proyecto Java

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

Cuerpo del método

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

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 JAVA Texto Traducción y generación Tipos de elementos

▪ Directivas <%@ … %>▪ Expresiones <%= .. %>▪ Scriplets <% … %>

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)

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

Patrón de diseño Observer

Abrir org.eclipse.emp.examples.web.programming

Crear Observable.java y Observer.java

Definición de un metamodeloMediante 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 metamodeloProgramáticamente

Programáticamente (1/5)

Metamodelo

Modelo API reflectiva basada en Eobject eClass() eGet() y eSet() eContents() / eContainer()

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íaBibliografía básica

http://www.omg.org

top related