Ingeniería Dirigida por Modelos            Introducción                    Vicente García Díaz – garciavicente@uniovi.es  ...
2Tabla de contenidos                                        Introducción1. Conceptos básicos2. Ejemplos de aplicación3. Te...
4Conceptos básicos                    Fuente: http://blog.drummondhouseplans.com/category/multi-family/
5Conceptos básicos                    Fuente: http://www.flightglobal.com//
6Conceptos básicos    ¿Qué es un modelo?        1. Punto de referencia para imitarlo o reproducirlo        2. Ejemplar que...
7Conceptos básicos    ¿Modelos en el desarrollo software? • Por supuesto…              Modelo   Desarrollo   Producto
8Conceptos básicos    Proceso típico de desarrollo • Las ingenierías clásicas se basan en el empleo de   modelos para obte...
9Conceptos básicos    Proceso de desarrollo de software • Peculiaridad: los productos software se pueden   diseñar y crear...
10Conceptos básicos    ¿Para qué se utiliza principalmente MDE?  • Para crear modelos software  • Dichos modelos definen l...
11Conceptos básicos    Motivación  • Crecimiento de la complejidad del software  • No se reutiliza ni el conocimiento tecn...
12Conceptos básicos    Antecedentes  • El nivel de abstracción de los lenguajes va en    aumento     ▫   Binario     ▫   E...
13Conceptos básicos    Objetivos  • Reducir la complejidad de las plataformas    actuales  • Expresar los conceptos de los...
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                   1.1 Pro ducto r ?                        ...
Ejemplos de aplicación    Videojuegos en entorno .NET            Esto es un poco la idea del GADE4ALL,              ¿Podrí...
23Terminología    El metamodelado  • Relación en cascada entre modelos y metamodelos               Elementos del   describ...
24Terminología     Espacio conceptual                                  Meta-                                metamodelo  Su...
25Terminología    Beneficios del uso de un metamodelo  • Clave de la ingeniería dirigida por modelos  • Es imprescindible ...
Terminología
27Terminología                             Ejemplo de dominio: Redes de Petri    Dominio de las Redes de Petri  • Fueron d...
28Terminología                                      Ejemplo de dominio: Redes de Petri    Un metamodelo para el dominio   ...
29Terminología                                         Ejemplo de dominio: Redes de Petri     Un meta-metamodelo para el d...
30Terminología                                                    Ejemplo de dominio: Redes de Petri    Mapeo entre sintax...
31Terminología    Supermetamodelo (I)               M3      Meta-metamodelo               M2         Metamodelo           ...
32Terminología    Supermetamodelo (II)                     MOF                             EBNF       M3               MOF...
33Terminología    Dualidad de los espacios de modelado                                     M3                    MOF      ...
34Terminología    Ciclo de vida del desarrollo con MDE                        Tradicional                           MDE   ...
35Terminología    Secuencia de pasos                  Modelo                   Modelo        <<instanceof>>    Metamodelo ...
36Terminología    ¿Cómo se generan los artefactos? (I)  • Metamodelo (meta-metamodelo) + Plantillas                Metamod...
37Terminología    ¿Cómo se generan los artefactos? (II)  • Metamodelo (meta-metamodelo) + Plantillas                Fuente...
39El estándar Model-Driven Architecture    Introducción   • http://www.omg.org/mda
40El estándar Model-Driven Architecture       Puntos de vista   •   Computation Independent Model (CIM)   •   Platform Ind...
41El estándar Model-Driven Architecture    Arquitectura en cuatro capas      Meta-metamodelo (M3)                         ...
El estándar Model-Driven Architecture   Estándares relacionados (MOF)    Meta-Object Facility (MOF)  ECORE               ...
43El estándar Model-Driven Architecture              Estándares relacionados (MOF)    Empleo de MOF como origen de todo   ...
44El estándar Model-Driven Architecture   Estándares relacionados (UML)    Unified Modeling Language (UML)   • Estándar pa...
45El estándar Model-Driven Architecture                          Estándares relacionados (UML)    Extensión de UML basada ...
46El estándar Model-Driven Architecture      Estándares relacionados (XMI)    XML Metadata Interchange (XMI) (I)   • Sirve...
47El estándar Model-Driven Architecture   Estándares relacionados (XMI)    XML Metadata Interchange (XMI) (II)
48El estándar Model-Driven Architecture   Estándares relacionados (XMI)    XML Metadata Interchange (XMI) (III)
49El estándar Model-Driven Architecture   Estándares relacionados (OCL)    Object Constraint Language (OCL) (I)   • Se uti...
50El estándar Model-Driven Architecture                       Estándares relacionados (OCL)    Object Constraint Language ...
51El estándar Model-Driven Architecture             Estándares relacionados (OCL)    Object Constraint Language (OCL) (III...
52El estándar Model-Driven Architecture                                 Estándares relacionados (QVT)    Query, Views, Tra...
53El estándar Model-Driven Architecture   Estándares relacionados (QVT)    Query, Views, Transformations (QVT) (II)   • Le...
54El estándar Model-Driven Architecture   Estándares relacionados (QVT)    Query, Views, Transformations (QVT) (III)   • L...
El estándar Model-Driven Architecture                                             La cadena de modelado         Relación e...
El estándar Model-Driven Architecture                                             La cadena de modelado         Relación e...
El estándar Model-Driven Architecture                                             La cadena de modelado         Relación e...
El estándar Model-Driven Architecture                                             La cadena de modelado         Relación e...
El estándar Model-Driven Architecture                                             La cadena de modelado         Relación e...
El estándar Model-Driven Architecture                                             La cadena de modelado         Relación e...
El estándar Model-Driven Architecture                                             La cadena de modelado         Relación e...
El estándar Model-Driven Architecture                                            La cadena de modelado         Relación en...
El estándar Model-Driven Architecture                                                                 La cadena de modelad...
El estándar Model-Driven Architecture                                                                 La cadena de modelad...
El estándar Model-Driven Architecture                                                                 La cadena de modelad...
El estándar Model-Driven Architecture                                                                 La cadena de modelad...
El estándar Model-Driven Architecture                                                                 La cadena de modelad...
El estándar Model-Driven Architecture                                                                 La cadena de modelad...
El estándar Model-Driven Architecture                                                                 La cadena de modelad...
71La Plataforma Eclipse Modeling Project    Eclipse Modeling Project   • Engloba todo lo relacionado con MDE en Eclipse   ...
72La Plataforma Eclipse Modeling Project    Desarrollo de sintaxis abstractas   • Eclipse Modeling Framework (EMF)      ▫ ...
73La Plataforma Eclipse Modeling Project    Desarrollo de sintaxis concretas   • Graphical Modeling Framework (GMF)      ▫...
74La Plataforma Eclipse Modeling Project    Transformación de modelados   • Model to Model Transformation (M2M)      ▫ Par...
75La Plataforma Eclipse Modeling Project    Herramientas de desarrollo   • Model Development Tools (MDT)      ▫ Proyectos ...
76La Plataforma Eclipse Modeling Project    Desarrollo de nuevas tecnologías   • Generative Modeling Technologies (GMT)   ...
77La Plataforma Eclipse Modeling Project    Agrupación de proyectos   • Modeling Amalgamation Project (Amalgam)      ▫ Ama...
La Plataforma Eclipse Modeling Project
79La Plataforma Eclipse Modeling Project   Instalación del entorno de desarrollo    Instalación   • Lo más fácil es descar...
La Plataforma Eclipse Modeling Project                                Mediante editor gráfico
81La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)    Crear un proyecto   • Nuevo Pro...
82La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)    Crear el metamodelo (I)   • Nue...
83La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)    Crear el metamodelo (II)
84La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)    Visualizar el metamodelo
85La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)    Crear el modelo generador   • N...
86La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)    Configurar el modelo generador
87La Plataforma Eclipse Modeling Project            Definición de un metamodelo (editor gráfico)    Crear JavaDoc         ...
88La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)    Especificar métodos (I)
89La Plataforma Eclipse Modeling Project            Definición de un metamodelo (editor gráfico)    Especificar métodos (I...
90La Plataforma Eclipse Modeling Project   Definición de un metamodelo (editor gráfico)    Especificar métodos (III)
91La Plataforma Eclipse Modeling Project   Definición de un modelo (programáticamente)    Generar el código de los modelos
92La Plataforma Eclipse Modeling Project   Definición de un modelo (programáticamente)    Crear un proyecto
93La Plataforma Eclipse Modeling Project   Definición de un modelo (programáticamente)    Crear el código fuente para la d...
94La Plataforma Eclipse Modeling Project   Definición de un modelo (plugin)    Generar todos los artefactos
95La Plataforma Eclipse Modeling Project   Definición de un modelo (plugin)    Crear el modelo mediante el editor
96La Plataforma Eclipse Modeling Project   Persistencia de modelos    Guardar el modelo en formato XMI   • El archivo My.w...
97La Plataforma Eclipse Modeling Project   Persistencia de modelos    Cargar el modelo guardado en XMI
98La Plataforma Eclipse Modeling Project   Generación de artefactos a partir de modelos    Java Emitter Templates   • Los ...
99La Plataforma Eclipse Modeling Project   Generación de artefactos a partir de modelos    Preparar el proyecto para traba...
100La Plataforma Eclipse Modeling Project   Generación de artefactos a partir de modelos    Resumen de acciones a realizar...
101La Plataforma Eclipse Modeling Project   Generación de artefactos a partir de modelos    Crear la plantilla
102La Plataforma Eclipse Modeling Project   Generación de artefactos a partir de modelos    Generar artefactos desde la cl...
La Plataforma Eclipse Modeling Project                         Mediante interfaces Java anotadas
La Plataforma Eclipse Modeling Project    Definición de un metamodelo (interfaces Java)    Idea general de lo que se hará ...
105La Plataforma Eclipse Modeling Project   Definición de un metamodelo (interfaces Java)    Aspecto final del proyecto   ...
106La Plataforma Eclipse Modeling Project   Definición de un metamodelo (interfaces Java)    Elementos fundamentales de la...
107La Plataforma Eclipse Modeling Project   Definición de un metamodelo (interfaces Java)    Código de las interfaces (I)
108La Plataforma Eclipse Modeling Project   Definición de un metamodelo (interfaces Java)    Código de las interfaces (II)
109La Plataforma Eclipse Modeling Project   Definición de un metamodelo (interfaces Java)    Generación del metamodelo   •...
La Plataforma Eclipse Modeling Project                                   Programáticamente
La Plataforma Eclipse Modeling Project         Definición de un metamodelo (programáticamente)    Idea general de lo que s...
La Plataforma Eclipse Modeling Project   Definición de un metamodelo (programáticamente)    Aspecto final del proyecto   •...
La Plataforma Eclipse Modeling Project   Definición de un metamodelo (programáticamente)    Elementos fundamentales de la ...
La Plataforma Eclipse Modeling Project    Generación del metamodelo (I)        Definición de un metamodelo (programáticame...
La Plataforma Eclipse Modeling Project    Generación del metamodelo (II)       Definición de un metamodelo (programáticame...
La Plataforma Eclipse Modeling Project    Generación del metamodelo (III)      Definición de un metamodelo (programáticame...
La Plataforma Eclipse Modeling Project    Generación del metamodelo (IV)       Definición de un metamodelo (programáticame...
La Plataforma Eclipse Modeling Project    Generación del metamodelo (V)        Definición de un metamodelo (programáticame...
La Plataforma Eclipse Modeling Project    Generación de un modelo              Definición de un metamodelo (programáticame...
La Plataforma Eclipse Modeling Project       Definición de un metamodelo (programáticamente)                              ...
La Plataforma Eclipse Modeling Project   Definición de un metamodelo (programáticamente)    Resultado final
122Bibliografía
123¿Siguientes pasos?•   Creación de lenguajes de dominio    específico textuales basados en modelos•   Creación de lengua...
Introducción a la ingeniería dirigida por modelos
Introducción a la ingeniería dirigida por modelos
Introducción a la ingeniería dirigida por modelos
Introducción a la ingeniería dirigida por modelos
Introducción a la ingeniería dirigida por modelos
Upcoming SlideShare
Loading in …5
×

Introducción a la ingeniería dirigida por modelos

1,524 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,524
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
538
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introducción a la ingeniería dirigida por modelos

  1. 1. Ingeniería Dirigida por Modelos Introducción Vicente García Díaz – garciavicente@uniovi.es Universidad de Oviedo, 2012 Model Driven Engineering Research Group
  2. 2. 2Tabla de contenidos Introducción1. Conceptos básicos2. Ejemplos de aplicación3. Terminología4. El estándar Model-Driven Architecture5. La plataforma Eclipse Modeling Project
  3. 3. 4Conceptos básicos Fuente: http://blog.drummondhouseplans.com/category/multi-family/
  4. 4. 5Conceptos básicos Fuente: http://www.flightglobal.com//
  5. 5. 6Conceptos 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
  6. 6. 7Conceptos básicos ¿Modelos en el desarrollo software? • Por supuesto… Modelo Desarrollo Producto
  7. 7. 8Conceptos básicos Proceso típico de 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. 8. 9Conceptos básicos Proceso de desarrollo de software • Peculiaridad: los productos software se pueden diseñar y crear sin “salir” del ordenador Modelo Desarrollo Producto • Informática  Información + Automática ¿Podríamos automatizar la etapa de desarrollo?
  9. 9. 10Conceptos básicos ¿Para qué se utiliza principalmente MDE? • 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. 10. 11Conceptos básicos Motivación • 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 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]
  11. 11. 12Conceptos básicos 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
  12. 12. 13Conceptos básicos Objetivos • Reducir la complejidad de las plataformas actuales • Expresar los conceptos de los diferentes dominios de forma más apropiada Conceptos del dominio Conceptos del dominio Trabajo mental de los desarrolladores Conceptos de la tecnología utilizada Conceptos de la tecnología utilizada
  13. 13. Ejemplos de aplicación Telefonía IP Fuente: [Kelly and Tolvanen, 2008]
  14. 14. Ejemplos de aplicación Productos de seguros Fuente: [Kelly and Tolvanen, 2008]
  15. 15. Ejemplos de aplicación Automatización del hogar Fuente: [Kelly and Tolvanen, 2008]
  16. 16. Ejemplos de aplicación Aplicaciones para móviles Fuente: [Kelly and Tolvanen, 2008]
  17. 17. Ejemplos de aplicación Relojes digitales Fuente: [Kelly and Tolvanen, 2008]
  18. 18. Ejemplos de aplicación Sistemas de trazabilidad alimentaria 1.1 Pro ducto r ? FABRICA DE QUESOS 1.2 Tipo ? PROCESO BEYOS 1.3 Pes o ? 6.1 Lo te ? 7.1 Lo te Leche? 1.4 Temperatura? 6.2 Cantidad? 7.2 Cantidad? Fecha: 04/06/2008 1.5 Acidez? 6.2 PH? 7.3 Mas Leche? Versión: 0.017 1.6 Lo te Pro ductor? 7.4 Lo te Cuajo ? 1.7 Lo te INT->? 1. RECEPCION 7.5 Mas Cuajo ? LECHE 7.6 Lo te Fermento s? 6. 7.7 Mas Fermento s? 2.1 Pro ducto r ? PASTEURIZA 7.8 Lo te Calcio ? 2.2 Cantidad? 7.9 Mas Calcio ? 2.3 Lo te Pro ductor? 7.10 Lo te INT-> 2.4 Lo te INT->? 2. RECEPCION CUAJO 12.1 Lo te? 12.2 Nº Artículo s? 3.1 Pro ducto r ? 12.3 Cliente? 3.2 Cantidad? 3.3 Lo te Pro ductor? 7. CUAJADA 3.4 Lo te INT->? 3. RECEPCION FERMENTOS 13. ENVASADO 4.1 Pro ducto r ? Las etiquetas las irán REQUESÓN 4.2 Cantidad? colocando en las 4.3 Lo te Pro ductor? estanterías que 4.4 Lo te INT->? 4. RECEPCION quieran CALCIO 14.1 Cliente? 8.1 Lo te Cuajada? 14.2 Lo te? 8.2 Nº etiquetas deseadas? 14.3 Unidades? 5.1 Pro ducto r ? 5.2 Cantidad? ETIQUETAS RFID 5.3 Lo te Pro ductor? 5. RECEPCION 5.4 Lo te INT->? SAL 14. 8. COMERCIALIZ EMMOLDADO ACION 11.1 RFID Secado ? 11.3 Nº Co ntra-etiquetas? 11.4 Primera Co ntra-etiqueta 13.1 Cliente? 9.1 RFID Enmo ldado? 10.1 RFID Salado ? 11.5 Cliente? 13.2 Pes o ? 9.2 Lo te Sal? 13.3 Lo te? 13.4 Unidades? ETIQUETAS COMERCIALES 12. 9. SALADO 10. SECADO 11. ENVASADO COMERCIALIZ ACION
  19. 19. Ejemplos de aplicación Videojuegos en entorno .NET 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? [Furtado, 2007]
  20. 20. 23Terminología El metamodelado • Relación en cascada entre modelos y metamodelos Elementos del describe describe mundo real Modelo Metamodelo (dominio)
  21. 21. 24Terminología Espacio conceptual Meta- metamodelo Subdominios <<instanceof>> Sintaxis Basado en Semántica abstracta estática Describe conceptos de Dominio Metamodelo Lenguaje de <<instanceof>> Sintaxis dominio concreta específico Modelo formal Semántica Respeta a
  22. 22. 25Terminología Beneficios del uso de un metamodelo • 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
  23. 23. Terminología
  24. 24. 27Terminología Ejemplo de dominio: Redes de Petri 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 4 6 P3 P1 P5
  25. 25. 28Terminología Ejemplo de dominio: Redes de Petri Un metamodelo para el dominio P1 T1 17 P2 15 T2 4 3 4 6 P3 P1 P5 PetriNet 0..* 1 1 Node Arc +Name : string +weight : int 0..* Place Transition
  26. 26. 29Terminología Ejemplo de dominio: Redes de Petri Un meta-metamodelo para el dominio Model Element PetriNet 0..* 1 1 Node Arc +Name : string +weight : int Typed Element Generalizable Element 0..* Place Transition Attribute Association Class
  27. 27. 30Terminología Ejemplo de dominio: Redes de Petri Mapeo entre sintaxis abstracta y concreta T1 PetriNet P1 15 17 P2 1 0..* 1 Node Arc +Name : string +weight : int 0..* Place Transition
  28. 28. 31Terminología Supermetamodelo (I) M3 Meta-metamodelo M2 Metamodelo M1 Modelo M0 Elementos del mundo real Instancia de Representado por
  29. 29. 32Terminología Supermetamodelo (II) MOF EBNF M3 MOF EBNF M2 UML, ODM, ... JAVA, C#, XML, ... M1 UML classes, objects, ... Programas informáticos M0 Elementos del mundo real Elementos del mundo real Instancia de Representado por
  30. 30. 33Terminología Dualidad de los espacios de modelado M3 MOF MO F M2 UML ODM Modelo UML de M1 la gramática de Modelo UML de un Modelo ODM de Java programa Java animales M0 N F EB Programa Java Gramática de EBNF Java
  31. 31. 34Terminología Ciclo de vida del desarrollo con MDE 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
  32. 32. 35Terminología Secuencia de pasos Modelo Modelo <<instanceof>> Metamodelo Modelo <<instanceof>> Reglas de Transformación transformación Modelo Reglas de Transformación transformación Artefactos textuales generados
  33. 33. 36Terminología ¿Cómo se generan los artefactos? (I) • Metamodelo (meta-metamodelo) + Plantillas Metamodelo Apply to Instancia del Plantillas Instance of metamodelo Based on Yields Especificación Código generado
  34. 34. 37Terminología ¿Cómo se generan los artefactos? (II) • Metamodelo (meta-metamodelo) + Plantillas Fuente: http://www.openarchitectureware.org/pub/documentation/4.3.1/openArchitectureWare-4.3.1-Reference.pdff
  35. 35. 39El estándar Model-Driven Architecture Introducción • http://www.omg.org/mda
  36. 36. 40El estándar Model-Driven Architecture 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 …
  37. 37. 41El estándar Model-Driven Architecture Arquitectura en cuatro capas Meta-metamodelo (M3) MOF Metamodelo (M2) UML ODM … Modelo (M1) Modelos UML Modelos ODM … Realidad (M0) Sistema
  38. 38. El estándar Model-Driven Architecture Estándares relacionados (MOF) Meta-Object Facility (MOF)  ECORE ECORE META-METAMODEL • Ecore
  39. 39. 43El estándar Model-Driven Architecture Estándares relacionados (MOF) Empleo de MOF como origen de todo MOF Metamodelo origen Metamodelo destino Reglas de transformación (QVT) transformación Modelo origen Modelo destino
  40. 40. 44El estándar Model-Driven Architecture Estándares relacionados (UML) Unified Modeling Language (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
  41. 41. 45El estándar Model-Driven Architecture Estándares relacionados (UML) Extensión de UML basada en Perfiles «metaclass» * 1 «metaclass» «metaclass» Attribute Class Operation 1 * «extends» «extends» «extends» stereotype <<stereotype>> PrimaryKey <<stereotype>> Entity <<stereotype>> FinderMethod PersistenceTime: (short, long) constraint context Entity tagged value inv: attribute->exists(isStereoKinded("PrimaryKey") <<Entity>> Empleado * 1 <<Entity>> Empresa -<<PrimaryKey>> nif : string -<<PrimaryKey>> cif : string -edad : int -name : string {PersistenceTime=short} -<<FinderMethod>>findByCif()
  42. 42. 46El estándar Model-Driven Architecture Estándares relacionados (XMI) XML Metadata Interchange (XMI) (I) • Sirve para serializar modelos • Permite que las herramientas se integren XMI 2.1 – MOF 2.0 XMI 1.3 – MOF 1.4 XMI 2.0 – XMI 1.1 – MOF 1.4 MOF 1.3 XMI 1.2 – MOF 1.4
  43. 43. 47El estándar Model-Driven Architecture Estándares relacionados (XMI) XML Metadata Interchange (XMI) (II)
  44. 44. 48El estándar Model-Driven Architecture Estándares relacionados (XMI) XML Metadata Interchange (XMI) (III)
  45. 45. 49El estándar Model-Driven Architecture Estándares relacionados (OCL) Object Constraint Language (OCL) (I) • Se utiliza para definir restricciones • Es parte de UML • Tipos ▫ Clase  invariant ▫ Precondiciones de una operación  precondition ▫ Postcondiciones de una operación  postcondition
  46. 46. 50El estándar Model-Driven Architecture Estándares relacionados (OCL) Object Constraint Language (OCL) (II) context Empresa context Coche inv: conductoresPotenciales = empleados->select(edad >= 18) inv: conductor.edad >= 18 Empresa poseedor Coche vehículos +contratar(entrada p : Persona) +conducir(entrada p : Persona) jefe context Coche::conducir(p: Persona) pre: (conductor==null) && (p.edad >= 18) post: conductor = p conductoresPotenciales empleados Persona conductor -edad : int context Empresa::contratar(p: Persona) pre: --none post: (empleados.size = empleados@pre.size + 1) && (empleados.includes(p)) Fuente: [Stahl and Völter, 2006]
  47. 47. 51El estándar Model-Driven Architecture Estándares relacionados (OCL) Object Constraint Language (OCL) (III) • Restricción en nivel Mn afecta al nivel Mn-1 «metaclass» «metaclass» UML::Class UML::Attribute -name : String -name : String -type : Type «metaclass» «metaclass» MM::PersonaDesconocida MM::ParametrosNumericos context PersonaDesconocida context ParametrosNumericos inv: name == “no identificada” inv: type.name == “Integer” || “desconocida”
  48. 48. 52El estándar Model-Driven Architecture Estándares relacionados (QVT) Query, Views, Transformations (QVT) (I) • Lenguaje de transformación de modelos • Compuesto de tres lenguajes con objetivos distintos • QVT Operation Mappings Language Relations Language ▫ Relacional Black Box Mappings ▫ Core ▫ Operacional Core Language
  49. 49. 53El estándar Model-Driven Architecture Estándares relacionados (QVT) Query, Views, Transformations (QVT) (II) • Lenguaje relacional ▫ Transformaciones  un conjunto de relaciones  Declarativo Fuente: [Mens, 2009]
  50. 50. 54El estándar Model-Driven Architecture Estándares relacionados (QVT) Query, Views, Transformations (QVT) (III) • Lenguaje operacional ▫ Transformaciones  un conjunto de operaciones  Imperativo Fuente: [Mens, 2009]
  51. 51. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature-nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association[http://smv.unige.ch/old/tiki-download_file.php?fileId=661]
  52. 52. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature-nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association
  53. 53. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature-nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association
  54. 54. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature-nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association
  55. 55. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature-nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association
  56. 56. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature-nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association
  57. 57. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature-nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association
  58. 58. El estándar Model-Driven Architecture La cadena de modelado Relación entre M1 y M2 Relaciones entre M1 y M2 Instance of Vehículo ModelElement -name : string +puedeMoverse() : bool * Persona +driver +car Coche Classifier Feature-nombre : string -generalizations 1 1..* -visibility : Visibility 1 * * 1 4 Class DataType Operation Attribute AssociationEnd Rueda -malEstado : bool 1 Association
  59. 59. El estándar Model-Driven Architecture La cadena de modelado Relación entre M2 y M3 ModelElement Instance of -name : string ModelElement -name : string * Classifier Feature-generalizations 1 1..* -visibility : Visibility * GeneralizableElement Feature TypedElement * Class DataType Operation Attribute AssociationEnd * Classifier StructuralFeature AssociationEnd 1 Association Association Class DataType Attribute PrimitiveType VisibilityKind [http://smv.unige.ch/old/tiki-download_file.php?fileId=661]
  60. 60. El estándar Model-Driven Architecture La cadena de modelado Relación entre M2 y M3 ModelElement Instance of -name : string ModelElement -name : string * Classifier Feature-generalizations 1 1..* -visibility : Visibility * GeneralizableElement Feature TypedElement * Class DataType Operation Attribute AssociationEnd * Classifier StructuralFeature AssociationEnd 1 Association Association Class DataType Attribute PrimitiveType VisibilityKind
  61. 61. El estándar Model-Driven Architecture La cadena de modelado Relación entre M2 y M3 ModelElement Instance of -name : string ModelElement -name : string * Classifier Feature-generalizations 1 1..* -visibility : Visibility * GeneralizableElement Feature TypedElement * Class DataType Operation Attribute AssociationEnd * Classifier StructuralFeature AssociationEnd 1 Association Association Class DataType Attribute PrimitiveType VisibilityKind
  62. 62. El estándar Model-Driven Architecture La cadena de modelado Relación entre M2 y M3 ModelElement Instance of -name : string ModelElement -name : string * Classifier Feature-generalizations 1 1..* -visibility : Visibility * GeneralizableElement Feature TypedElement * Class DataType Operation Attribute AssociationEnd * Classifier StructuralFeature AssociationEnd 1 Association Association Class DataType Attribute PrimitiveType VisibilityKind
  63. 63. El estándar Model-Driven Architecture La cadena de modelado Relación entre M2 y M3 ModelElement Instance of -name : string ModelElement -name : string * Classifier Feature-generalizations 1 1..* -visibility : Visibility * GeneralizableElement Feature TypedElement * Class DataType Operation Attribute AssociationEnd * Classifier StructuralFeature AssociationEnd 1 Association Association Class DataType Attribute PrimitiveType VisibilityKind
  64. 64. El estándar Model-Driven Architecture La cadena de modelado Relación entre M2 y M3 ModelElement Instance of -name : string ModelElement -name : string * Classifier Feature-generalizations 1 1..* -visibility : Visibility * GeneralizableElement Feature TypedElement * Class DataType Operation Attribute AssociationEnd * Classifier StructuralFeature AssociationEnd 1 Association Association Class DataType Attribute PrimitiveType VisibilityKind
  65. 65. El estándar Model-Driven Architecture La cadena de modelado Relación entre M2 y M3 ModelElement Instance of -name : string ModelElement -name : string * Classifier Feature-generalizations 1 1..* -visibility : Visibility * GeneralizableElement Feature TypedElement * Class DataType Operation Attribute AssociationEnd * Classifier StructuralFeature AssociationEnd 1 Association Association Class DataType Attribute PrimitiveType VisibilityKind
  66. 66. 71La Plataforma 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 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
  67. 67. 72La Plataforma Eclipse Modeling Project Desarrollo de sintaxis abstractas • 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
  68. 68. 73La Plataforma Eclipse Modeling Project Desarrollo de sintaxis concretas • 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
  69. 69. 74La Plataforma Eclipse Modeling Project Transformación de modelados • 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…
  70. 70. 75La Plataforma Eclipse Modeling Project Herramientas de desarrollo • 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 …
  71. 71. 76La Plataforma Eclipse Modeling Project Desarrollo de nuevas tecnologías • 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
  72. 72. 77La Plataforma Eclipse Modeling Project 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 ▫ Es un Eclipse con un gran número de proyectos del EMP integrado
  73. 73. La Plataforma Eclipse Modeling Project
  74. 74. 79La Plataforma Eclipse Modeling Project Instalación del entorno de desarrollo Instalación • Lo más fácil es descargar un Eclipse con todo • http://www.eclipse.org/downloads/packages/eclipse- modeling-tools/junosr1 (Eclipse Modeling Tools)
  75. 75. La Plataforma Eclipse Modeling Project Mediante editor gráfico
  76. 76. 81La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Crear un proyecto • Nuevo Proyecto  MDEWebMetamodelEditor
  77. 77. 82La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Crear el metamodelo (I) • Nuevo elemento en la carpeta model  Web.ecore
  78. 78. 83La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Crear el metamodelo (II)
  79. 79. 84La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Visualizar el metamodelo
  80. 80. 85La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Crear el modelo generador • Nuevo EMF Generator Model  Web.genmodel
  81. 81. 86La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Configurar el modelo generador
  82. 82. 87La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Crear JavaDoc Botón derecho en Web.genmodel Reload
  83. 83. 88La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Especificar métodos (I)
  84. 84. 89La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Especificar métodos (II) Cuerpo del método EOperation Documentación JavaDoc EParameter
  85. 85. 90La Plataforma Eclipse Modeling Project Definición de un metamodelo (editor gráfico) Especificar métodos (III)
  86. 86. 91La Plataforma Eclipse Modeling Project Definición de un modelo (programáticamente) Generar el código de los modelos
  87. 87. 92La Plataforma Eclipse Modeling Project Definición de un modelo (programáticamente) Crear un proyecto
  88. 88. 93La Plataforma Eclipse Modeling Project Definición de un modelo (programáticamente) Crear el código fuente para la definición
  89. 89. 94La Plataforma Eclipse Modeling Project Definición de un modelo (plugin) Generar todos los artefactos
  90. 90. 95La Plataforma Eclipse Modeling Project Definición de un modelo (plugin) Crear el modelo mediante el editor
  91. 91. 96La Plataforma Eclipse Modeling Project Persistencia de modelos Guardar el modelo en formato XMI • El archivo My.web internamente es código XML (XMI) • También se puede persistir el modelo creado con Java
  92. 92. 97La Plataforma Eclipse Modeling Project Persistencia de modelos Cargar el modelo guardado en XMI
  93. 93. 98La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos Java Emitter Templates • 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  <% … %>
  94. 94. 99La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos Preparar el proyecto para trabajar con JET • Desde el proyecto en el que se quiera generar artefactos…
  95. 95. 100La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos Resumen de acciones a realizar • Estado de cómo quedará el proyecto al finalizar el proceso
  96. 96. 101La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos Crear la plantilla
  97. 97. 102La Plataforma Eclipse Modeling Project Generación de artefactos a partir de modelos Generar artefactos desde la clase Java • Crear ConvertToHTML.java
  98. 98. La Plataforma Eclipse Modeling Project Mediante interfaces Java anotadas
  99. 99. 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 Metamodelo generador
  100. 100. 105La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java) Aspecto final del proyecto • Se crea un proyecto Java y se incluyen librerías para trabajar con Ecore y para trabajar con XMI
  101. 101. 106La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java) Elementos fundamentales de la API • Se utilizan comentarios JavaDoc para indicar • Algunas propiedades… ▫ abstract=“BOOLEAN” ▫ required=“BOOLEAN ▫ containment=“BOOLEAN” ▫ default=VALUE ▫ changeable=“BOOLEAN"
  102. 102. 107La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java) Código de las interfaces (I)
  103. 103. 108La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java) Código de las interfaces (II)
  104. 104. 109La Plataforma Eclipse Modeling Project Definición de un metamodelo (interfaces Java) Generación del metamodelo • Cuando se crea el archivo web.genmodel  elegir como model importer las anotaciones Java • Se generará el archivo Ecore automáticamente
  105. 105. La Plataforma Eclipse Modeling Project Programáticamente
  106. 106. 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 Se crea el metamodelo Serializar de forma Modelo XMI dinámica Deserializar
  107. 107. 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
  108. 108. La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente) Elementos fundamentales de la API • Metamodelo • Modelo  API reflectiva basada en EObject ▫ eClass() ▫ eGet() y eSet() ▫ eContents() / eContainer()
  109. 109. La Plataforma Eclipse Modeling Project Generación del metamodelo (I) Definición de un metamodelo (programáticamente)
  110. 110. La Plataforma Eclipse Modeling Project Generación del metamodelo (II) Definición de un metamodelo (programáticamente)
  111. 111. La Plataforma Eclipse Modeling Project Generación del metamodelo (III) Definición de un metamodelo (programáticamente)
  112. 112. La Plataforma Eclipse Modeling Project Generación del metamodelo (IV) Definición de un metamodelo (programáticamente)
  113. 113. La Plataforma Eclipse Modeling Project Generación del metamodelo (V) Definición de un metamodelo (programáticamente)
  114. 114. La Plataforma Eclipse Modeling Project Generación de un modelo Definición de un metamodelo (programáticamente)
  115. 115. La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente) Serializar y deserializar
  116. 116. La Plataforma Eclipse Modeling Project Definición de un metamodelo (programáticamente) Resultado final
  117. 117. 122Bibliografía
  118. 118. 123¿Siguientes pasos?• 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

×