ingeniería dirigida por modelos

148
Ingeniería Dirigida por Modelos Introducción Vicente García Díaz ([email protected]) Juan Manuel Cueva Lovelle MDE-OOTLAB Research Group Noviembre de 2010

Upload: vicente-garcia-diaz

Post on 14-Dec-2014

114 views

Category:

Documents


4 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Ingeniería dirigida por modelos

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

Conceptos básicos

Page 3: Ingeniería dirigida por modelos
Page 4: Ingeniería dirigida por modelos

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

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

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

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

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

Beneficios

Page 10: Ingeniería dirigida por modelos

Desarrollo de software tradiccional

[Stahl and Völter, 2006]

Page 11: Ingeniería dirigida por modelos

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

Desarrollo completo con MDE

[Stahl and Völter, 2006]

Page 13: Ingeniería dirigida por modelos

Tradicional vs MDE

[Stahl and Völter, 2006]

Page 14: Ingeniería dirigida por modelos

Espacio Conceptural

Page 15: Ingeniería dirigida por modelos

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

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

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

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

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

Proceso de trabajo

Page 21: Ingeniería dirigida por modelos

Supermetamodelo

Elementos del mundo real

Modelo

Metamodelo

Meta-metamodeloM3

M2

M1

M0

Instancia de

Representado por

Page 22: Ingeniería dirigida por modelos

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

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

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

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

Generación de artefactos

Page 27: Ingeniería dirigida por modelos

¿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

Plantillas + Filtros

Especificación

Filtro

Subconjunto de la

especificaciónPlantillas

Código generado

Apply to

Apply to

Page 29: Ingeniería dirigida por modelos

Plantillas + FiltrosEjemplo

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

Page 30: Ingeniería dirigida por modelos

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

Plantillas + MetamodeloEjemplo

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

Page 32: Ingeniería dirigida por modelos

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

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

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

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

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

Tejido de códigoEjemplo

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

Page 38: Ingeniería dirigida por modelos

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

Basado en atributosEjemplo

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

Page 40: Ingeniería dirigida por modelos

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

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

MDAModel-Driven Architecture

Page 43: Ingeniería dirigida por modelos

Conceptos Básicos

Page 44: Ingeniería dirigida por modelos

Introducción

http://www.omg.org/mda

Page 45: Ingeniería dirigida por modelos

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

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

Estándares relacionados con MDA

Page 48: Ingeniería dirigida por modelos

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

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

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

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

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

XMI (2/2)

Page 54: Ingeniería dirigida por modelos

XMI (3/3)

Page 55: Ingeniería dirigida por modelos

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

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

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

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

QVT (2/3)Lenguaje relacional

Transformaciones un conjunto de relaciones Declarativo

[Mens, 2009]

Page 60: Ingeniería dirigida por modelos

QVT (3/3)Lenguaje operacional

Transformaciones un conjunto de operaciones Imperativo

[Mens, 2009]

Page 61: Ingeniería dirigida por modelos

La cadena de modelado

Page 62: Ingeniería dirigida por modelos

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EjemplosAplicación de la Ingeniería Dirigida por Modelos

Page 78: Ingeniería dirigida por modelos

Telefonía IP

[Kelly and Tolvanen, 2008]

Page 79: Ingeniería dirigida por modelos

Productos de seguros

[Kelly and Tolvanen, 2008]

Page 80: Ingeniería dirigida por modelos

Automatización del hogar

[Kelly and Tolvanen, 2008]

Page 81: Ingeniería dirigida por modelos

Aplicaciones para móviles

[Kelly and Tolvanen, 2008]

Page 82: Ingeniería dirigida por modelos

Relojes digitales

[Kelly and Tolvanen, 2008]

Page 83: Ingeniería dirigida por modelos

Línea de productos para crear videojuegos

Page 84: Ingeniería dirigida por modelos

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

SLGML

Integrado en Visual Studio

Page 86: Ingeniería dirigida por modelos

Entorno de desarrollo (1/2)

Page 87: Ingeniería dirigida por modelos

Entorno de desarrollo (2/2)

Page 88: Ingeniería dirigida por modelos

Generación de artefactos

Page 89: Ingeniería dirigida por modelos

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

Resultados

Page 91: Ingeniería dirigida por modelos

Sistemas de trazabilidad alimentaria

Page 92: Ingeniería dirigida por modelos

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

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

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

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

PIM (Productos)

Page 97: Ingeniería dirigida por modelos

Generador de código

Modelo origenSistema

generado

nUML ExpertCoder

Page 98: Ingeniería dirigida por modelos

Sistema generado

Database.sql

Page 99: Ingeniería dirigida por modelos

Eclipse Modeling Project

Plataforma para el desarrollo de software dirigido por modelos

Page 100: Ingeniería dirigida 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

Page 101: Ingeniería dirigida por modelos

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

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

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

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

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

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

PrácticoTrabajando con el Eclipse Modeling Project

Page 108: Ingeniería dirigida por modelos

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

Definición de un metamodeloMediante el editor gráfico

Page 110: Ingeniería dirigida por modelos

Meta-metamodelo Ecore

EcoreECORE META-METAMODEL

Page 111: Ingeniería dirigida por modelos

Crear un Proyecto

Nuevo proyecto org.eclipse.emp.examples.web

Page 112: Ingeniería dirigida por modelos

Crear el modelo Ecore (1/2)Metamodelo

Nuevo elemento en la carpeta model web.ecore

Page 113: Ingeniería dirigida por modelos

Crear el modelo Ecore (2/2)Metamodelo

Page 114: Ingeniería dirigida por modelos

Visualizar el modelo Ecore

Page 115: Ingeniería dirigida por modelos

Crear el modelo Generador Metamodelo generador

Nuevo EMF Generator Model web.genmodel

Page 116: Ingeniería dirigida por modelos

Configurar el modelo Generador

Page 117: Ingeniería dirigida por modelos

Generar código Java

Page 118: Ingeniería dirigida por modelos

Generar un plug-in

Page 119: Ingeniería dirigida por modelos

Crear un modelo con el plug-in

Proyecto Java

Page 120: Ingeniería dirigida por modelos

Crear un modelo programáticamente (1/2)

Page 121: Ingeniería dirigida por modelos

Crear un modelo programáticamente (2/2)

Page 122: Ingeniería dirigida por modelos

Crear JavaDoc

Page 123: Ingeniería dirigida por modelos

Crear métodos (1/3)

Page 124: Ingeniería dirigida por modelos

Crear métodos (2/3)

EOperation

EParameter

Cuerpo del método

Documentación JavaDoc

Page 125: Ingeniería dirigida por modelos

Crear métodos (3/3)

Page 126: Ingeniería dirigida por modelos

Extender un modelo Ecore (1/2)

Page 127: Ingeniería dirigida por modelos

Extender un modelo Ecore (2/2)

Page 128: Ingeniería dirigida por modelos

Persistir el modelo a XMI

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

Crear SaveXMI.java

Page 129: Ingeniería dirigida por modelos

Cargar el modelo serializado Abrir

org.eclipse.emp.examples.web.programming Crear LoadXMI.java

Page 130: Ingeniería dirigida por modelos

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

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

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

Page 133: Ingeniería dirigida por modelos

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

Page 134: Ingeniería dirigida por modelos

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

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

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

Definición de un metamodeloMediante interfaces Java anotadas

Page 138: Ingeniería dirigida por modelos

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

Interfaces Java anotadas (2/4)

Crear archivo web.genmodel Proyecto org.eclipse.emp.examples.web.interfaces

Page 140: Ingeniería dirigida por modelos

Interfaces Java anotadas (3/4)

Page 141: Ingeniería dirigida por modelos

Interfaces Java anotadas (4/4)

Page 142: Ingeniería dirigida por modelos

Definición de un metamodeloProgramáticamente

Page 143: Ingeniería dirigida por modelos

Programáticamente (1/5)

Metamodelo

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

Page 144: Ingeniería dirigida por modelos

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

Programáticamente (3/5)

Page 146: Ingeniería dirigida por modelos

Programáticamente (4/5)

Page 147: Ingeniería dirigida por modelos

Programáticamente (5/5)

Page 148: Ingeniería dirigida por modelos

BibliografíaBibliografía básica

http://www.omg.org