A lo largo de la pasada década, la ingeniería del software basada en modelos (Model-Driven Engineering, MDE) ha surgido como un nuevo paso en el camino hacia una verdadera industrialización de la producción de software. Tras el éxito de la tecnología orientada a objetos, el uso sistemático de modelos se presenta ahora como la forma apropiada para conseguir programar con un nivel más alto de abstracción y de aumentar el nivel de automatización. En nuestro trabajo de investigación y en proyectos con empresas hemos comprobado el potencial de los modelos para elevar los niveles de abstracción y automatización. Por ello, estamos plenamente convencidos de que los conceptos, métodos y técnicas de MDE facilitan la creación y evolución del software. CAPÍTULO 1. DESARROLLO DIRIGIDO POR MODELOS: UN NUEVO PARADIGMA DE CONSTRUCCIÓN DE SOFTWARE CAPÍTULO 2. CONCEPTOS BÁSICOS DE MODELADO CAPÍTULO 3. UNA INTRODUCCIÓN AL METAMODELADO CAPÍTULO 4. EL LENGUAJE OCL CAPÍTULO 5. PERFILES MOF PARTE II. SINTAXIS CONCRETA CAPÍTULO 6. ECLIPSE GRAPHICAL MODELING FRAMEWORK CAPÍTULO 7. EUGENIA CAPÍTULO 8. CREACIÓN DE EDITORES TEXTUALES DE MODELOS CON XTEXT CAPÍTULO 9. MICROSOFT DSL TOOLS PARTE III. TRANSFORMACIONES CAPÍTULO 10. TRANSFORMACIONES DE MODELOS CAPÍTULO 11. EL LENGUAJE ATL CAPÍTULO 12. EL LENGUAJE QVT: QUERY/VIEW/TRANSFORMATION CAPÍTULO 13. EL LENGUAJE RUBYTL CAPÍTULO 14. EL LENGUAJE JET CAPÍTULO 15. EL LENGUAJE MOFSCRIPT CAPÍTULO 16. EL LENGUAJE XPAND
Este libro proporciona una explicación detallada de los conceptos básicos del MDE, así como ejemplos de cada tipo de aplicación y presentación de las herramientas más utilizadas, de modo que se puedan adquirir los conocimientos necesarios para iniciar la práctica de MDE. A lo largo de esta obra se ha combinado el rigor científico con la experiencia práctica, proporcionando una panorámica actual y completa sobre el desarrollo de software dirigido por modelos.
El libro está organizado en cinco partes junto con un capítulo de introducción, cuyo objetivo es ofrecer una visión global de MDE y presentar los conceptos en los que se profundizarán en el resto de capítulos. Las tres primeras partes corresponden a los tres elementos básicos de MDE: modelos y metamodelos, construcción de DSL y transformaciones de modelos. La cuarta parte incluye un ejemplo de cada tipo de aplicación de las técnicas MDE: desarrollo dirigido por modelos, reingeniería de modelos y models@runtime. Por último, los capítulos finales presentan algunas soluciones basadas en MDE, así como algunas herramientas existentes para entornos MDE.
AUTORES
PRÓLOGO
PREFACIO
1.1 INTRODUCCIÓN
1.2 DE LOS OBJETOS A LOS MODELOS
1.3 PRINCIPIOS BÁSICOS DEL MDE
1.4 LOS PRINCIPALES PARADIGMAS MDE
PARTE I. METAMODELADO
2.1 INTRODUCCIÓN: QUÉ ES UN MODELO
2.2 SEMÁNTICA: EL SIGNIFICADO DE UN MODELO
2.3 SINTAXIS: LA ESTRUCTURA DE UN MODELO
2.4 RELACIÓN ENTRE SEMÁNTICA Y SINTAXIS
2.5 CONCLUSIÓN: TOMEMOS EN SERIO LOS DIAGRAMAS
2.6 PARA SABER MÁS
3.1 EL CONCEPTO DE METAMODELO
3.2 LENGUAJES DE METAMODELADO
3.3 ARQUITECTURA DE CUATRO NIVELES
3.4 ARQUITECTURA DE METAMODELO
3.5 CONCLUSIONES
4.1 INTRODUCCIÓN
4.2 DEFINICIÓN DE RESTRICCIONES DE INTEGRIDAD
4.2.1 Identificación de la instancia contextual
4.2.2 Navegación entre clases de objetos
4.2.3 Selección de un subconjunto de objetos
4.2.4 Condición aplicable a todos los objetos de una colección
4.2.5 Navegación por jerarquías de especialización
4.2.6 Restricción de clave primaria de una clase de objetos
4.2.7 Obtención de todos los objetos de una clase
4.2.8 Resumen de operaciones aplicables a una colección
4.3 DEFINICIÓN DE INFORMACIÓN DERIVADA
4.4 DEFINICIÓN DE OPERACIONES
4.5 HERRAMIENTAS DE SOPORTE
4.6 CONCLUSIONES
5.1 INTRODUCCIÓN
5.2 PERFILES EN LA ARQUITECTURA MOF
5.3 MECANISMO DE PERFILES EN UML 2.0
5.3.1 Perfil
5.3.2 Estereotipos y propiedades
5.3.3 Restricciones
5.4 MÉTODO PARA LA DEFINICIÓN DE PERFILES
5.5 EJEMPLO
5.6 ¿METAMODELOS O PERFILES?
5.7 CONCLUSIONES
6.1 INTRODUCCIÓN
6.1.1 ¿Qué es y para qué sirve GMF?
6.1.2 Relación de GMF con otros plug-ins de Eclipse
6.2 INSTALACIÓN Y CREACIÓN DE PROYECTOS GMF
6.2.1 Instalación de GMF
6.2.2 Creación y estructura de los proyectos GMF
6.3 CREACIÓN DE UN EDITOR GRÁFICO SENCILLO
6.3.1 Construcción del editor gráfico por defecto
6.3.2 Generación y ejecución del editor gráfico
6.3.3 Algunos trucos sencillos para mejorar nuestros editores
6.4 ASPECTOS AVANZADOS: CONTENCIÓN GRÁFICA
6.5 CONCLUSIONES
7.1 INTRODUCCIÓN
7.1.1 Epsilon
7.1.2 Instalación de Epsilon
7.2 ¿QUÉ ES Y PARA QUÉ SIRVE EUGENIA?
7.3 RELACIÓN DE EUGENIA CON OTROS PLUG-INS DE ECLIPSE
7.4 DESARROLLO DE UN EDITOR GRÁFICO CON EUGENIA
7.4.1 Introduciendo anotaciones GMF en los metamodelos
7.4.2 Desarrollo de un editor básico
7.4.3 Mejorando los editores desarrollados con EuGENia
7.5 ALGUNOS ASPECTOS AVANZADOS
7.5.1 Generación del editor en un solo paso
7.5.2 Invocación automática mediante tareas ANT
7.6 CONCLUSIONES
8.1 INTRODUCCIÓN
8.2 CREACIÓN DE UN EDITOR TEXTUAL SENCILLO
8.2.1 Definición del metamodelo
8.2.2 Creación del editor por defecto con Xtext
8.2.3 Ejecución del editor textual de modelos generado
8.3 IMPLEMENTACIÓN DE UN EDITOR AVANZADO
8.3.1 Extensión del lenguaje de modelado
8.3.2 Creación del editor por defecto con Xtext
8.3.3 Importación de ficheros
8.3.4 Mejora del proceso de validación de los modelos
8.3.5 Modificación del estilo del texto
8.3.6 Mejora del asistente de contenido
8.3.7 Serialización de los modelos
8.4 CONCLUSIONES
9.1 INTRODUCCIÓN
9.1.1 Relación con Visual Studio
9.2 CREACIÓN DE UN EDITOR GRÁFICO SENCILLO CON DSL TOOLS
9.2.1 El dominio específico: personas y deudas
9.2.2 Detalles gráficos
9.3 UN EJEMPLO MÁS COMPLEJO
9.3.1 Algunos aspectos avanzados: personalización
9.4 ESTRUCTURA DE UN PROYECTO DE DSL TOOLS
9.4.1 Arquitectura de los lenguajes generados con DSL Tools
9.5 CONCLUSIONES
10.1 INTRODUCCIÓN
10.2 APROXIMACIONES PARA EL DESARROLLO DE TRANSFORMACIONES
10.3 TRANSFORMACIONES DE MODELOS
10.3.1 Lenguajes de transformación de modelo a modelo
10.4 GENERACIÓN DE CÓDIGO
10.4.1 Lenguajes de transformación modelo a texto
10.5 PARA SABER MÁS
11.1 INTRODUCCIÓN
11.2 UNIDADES PRINCIPALES DE ATL
11.2.1 Módulo ATL
11.2.2 Query ATL
11.2.3 Librerías ATL
11.3 EL LENGUAJE ATL
11.3.1 Encabezado
11.3.2 Importación de librerías
11.3.3 Helper Rules
11.3.4 Matched Rules
11.3.5 [Unique] Lazy Rules
11.3.6 Called Rules
11.3.7 Fases de ejecución de una transformación
11.3.8 Referenciando elementos creados en otras reglas
11.3.9 Código imperativo en ATL
11.3.10 Tipos de datos
11.3.11 Recomendaciones
12.1 INTRODUCCIÓN
12.2 COMPONENTES BÁSICOS
12.2.1 El lenguaje QVT Relations
12.2.2 El lenguaje QVT Core
12.2.3 El lenguaje QVT Operational Mappings
12.3 EL LENGUAJE QVT OPERATIONAL MAPPINGS
12.3.1 Declaración de una transformación
12.3.2 Operación main
12.3.3 Operación de mapping
12.3.4 Operaciones helper y query
12.3.5 Constructores
12.3.6 Bibliotecas
12.3.7 Reutilización de transformaciones
12.3.8 Operaciones y operadores usados en el cuerpo de las operaciones de mapping y de query
12.4 ENTORNO DE DESARROLLO
12.5 CONCLUSIONES
13.1 INTRODUCCIÓN
13.2 EL LENGUAJE DE TRANSFORMACIÓN RUBYTL
13.2.1 Estructura del lenguaje
13.2.2 Semántica de ejecución
13.2.3 Reglas de nombrado
13.2.4 Manipulación de modelos
13.2.5 Modularización de transformaciones
13.3 ENTORNO DE DESARROLLO
13.3.1 Configuración de transformaciones
13.3.2 Mensajes de error
13.4 CONCLUSIONES
14.1 CONCEPTOS BÁSICOS DE JET
14.1.1 Sintaxis JET
14.1.2 Uso de XPath en JET
14.2 TRANSFORMACIONES JET
14.2.1 Proyectos JET
14.2.2 Plantillas JET
14.2.3 Etiquetas JET
14.3 EJEMPLO M2T CON JET
15.1 REQUISITOS, INSTALACIÓN Y VISTA GENERAL
15.2 EJEMPLO: GENERACIÓN DE CÓDIGO SQL
15.3 EL LENGUAJE MOFSCRIPT
15.3.1 Importación de transformaciones previas: import
15.3.2 Definición de la transformación: texttransformation
15.3.3 Tipos de datos, variables y propiedades
15.3.4 Definición de reglas
15.3.5 Sentencias de selección: If y Select
15.3.6 Sentencias de repetición: While y ForEach
15.3.7 Operaciones OCL destacadas de MOFScript
15.3.8 Bloque de texto protegido contra escritura
15.4 EJEMPLO DE TRANSFORMACIÓN: MÁQUINAS DE ESTADOS
15.4.1 Metamodelo de máquinas de estados
15.4.2 Transformación MOFScript
15.5 CONCLUSIONES Y CONSEJOS
16.1 INTRODUCCIÓN
16.2 CONCEPTOS BÁSICOS DE XPAND
16.3 TRANSFORMACIONES XPAND
16.3.1 Proyecto generador para Xpand
16.3.2 Definición de reglas de transformación