Desarrollo de Software Dirigido por Modelos: Conceptos, Métodos y Herramientas
39,90 €
Impuestos incluidos
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 industri...
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.
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.
Índice
COORDINADORES
AUTORES
PRÓLOGO
PREFACIO
CAPÍTULO 1. DESARROLLO DIRIGIDO POR MODELOS: UN NUEVO PARADIGMA DE CONSTRUCCIÓN DE SOFTWARE
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
CAPÍTULO 2. CONCEPTOS BÁSICOS DE MODELADO
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
CAPÍTULO 3. UNA INTRODUCCIÓN AL METAMODELADO
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
CAPÍTULO 4. EL LENGUAJE OCL
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
CAPÍTULO 5. PERFILES MOF
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
PARTE II. SINTAXIS CONCRETA
CAPÍTULO 6. ECLIPSE GRAPHICAL MODELING FRAMEWORK
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
CAPÍTULO 7. EUGENIA
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
CAPÍTULO 8. CREACIÓN DE EDITORES TEXTUALES DE MODELOS CON XTEXT
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
CAPÍTULO 9. MICROSOFT DSL TOOLS
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
PARTE III. TRANSFORMACIONES
CAPÍTULO 10. TRANSFORMACIONES DE MODELOS
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
CAPÍTULO 11. EL LENGUAJE ATL
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
CAPÍTULO 12. EL LENGUAJE QVT: QUERY/VIEW/TRANSFORMATION
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
CAPÍTULO 13. EL LENGUAJE RUBYTL
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
CAPÍTULO 14. EL LENGUAJE JET
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
CAPÍTULO 15. EL LENGUAJE MOFSCRIPT
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
CAPÍTULO 16. EL LENGUAJE XPAND
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
16.3.3 Ejemplo de transformación de modelo de datos a Java
16.4 REGIONES PROTEGIDAS EN XPAND
16.5 PROGRAMACIÓN ORIENTADA A ASPECTOS EN XPAND
16.5.1 Punto de unión y punto de corte
16.5.2 Definición del nombre
16.5.3 Tipos de parámetros
16.5.4 Procedimiento
16.6 CONCLUSIONES
PARTE IV. APLICACIONES I. CONSTRUCCIÓN DE APLICACIONES SOFTWARE CON MDE
CAPÍTULO 17. GENERACIÓN DE PORTALES WEB
17.1 INTRODUCCIÓN
17.2 DESARROLLO DE UN PORTAL UTILIZANDO PORTLETS
17.3 EL METAMODELO TAREAS
17.4 EL METAMODELO ORQUESTACIÓN
17.5 EL METAMODELO PRESENTACIÓN
17.6 EL METAMODELO EXO
17.7 DE SOP A EXO: TRANSFORMACIONES
17.8 BENEFICIOS DEL DSDM
CAPÍTULO 18. RUX-TOOL: HERRAMIENTA PARA EL MODELADO DE INTERFACES DE USUARIO WEB 2.0
18.1 INTRODUCCIÓN
18.2 RUX-METHOD
18.2.1 IU abstracta, concreta y final
18.3 RUX-TOOL Y WEBRATIO: MODELADO RIA
18.3.1 Modelado de datos con WebRatio
18.3.2 Modelado de hipertexto con WebRatio
18.3.3 Modelado de presentación con RUX-Tool
18.4 RUX-TOOL Y WEBRATIO: CASO DE ESTUDIO
18.4.1 Descripción del caso práctico
18.5 CONCLUSIONES
CAPÍTULO 19. GENERACIÓN DE CÓDIGO ANSI-C DE MODELOS DE COMPONENTES UML PARA SISTEMAS EMBEBIDOS
19.1 ESTRUCTURA GLOBAL DSDM UTILIZADA PARA LA GENERACIÓN DE CÓDIGO
19.2 HERRAMIENTAS
19.3 ESTRUCTURA DEL PROYECTO
19.3.1 Proyecto FromUML2SimpleC
19.3.2 Proyecto MMSimpleC
19.3.3 Proyecto SimpleC2Code
19.4 DESCRIPCIÓN DEL CASO DE ESTUDIO
19.4.1 Controlador de puertas automáticas deslizantes
19.4.2 Metodología de diseño
19.4.3 Diseño del control básico de un control de puertas automáticas
19.5 ANÁLISIS DE LA TRANSFORMACIÓN DE UML2+MARTE A SIMPLEC
19.6 CONCLUSIONES
19.7 AGRADECIMIENTOS
CAPÍTULO 20. DESARROLLO DIRIGIDO POR MODELOS EN LA PRÁCTICA. MOSKITT Y EL DESARROLLO DE APLICACIONES DE GESTIÓN
20.1 INTRODUCCIÓN
20.1.1 Herramientas
20.1.2 Arquitectura
20.1.3 Generación de código y prototipos
20.2 DESARROLLO DIRIGIDO POR MODELOS EN LA PRÁCTICA
20.2.1 Modelos y arquitectura de las aplicaciones web
20.2.2 Proceso de desarrollo
20.3 CASO DE ESTUDIO: FACTURACIÓN
20.3.1 Requisitos del caso de estudio
20.4 CREACIÓN DEL PROYECTO MOSKITT
20.5 ESPECIFICACIÓN DE LA LÓGICA DE NEGOCIO. CONSTRUCCIÓN DE DIAGRAMAS DE CLASES
20.6 ESPECIFICACIÓN DE LA INTERFAZ DE USUARIO: MODELOS SKETCHER Y UIM
20.6.1 Creación de un nuevo modelo Sketcher
20.6.2 Diseño de ventanas
20.7 GENERACIÓN DE CÓDIGO OPENXAVA
20.7.1 La transformación UML2JPA
20.7.2 La transformación UIM2OX
20.8 CONCLUSIONES
CAPÍTULO 21. DISEÑO Y DESARROLLO DE INTERFACES DE USUARIO
21.1 INTRODUCCIÓN
21.2 MODELADO DE INTERFACES DE USUARIO CON MOSKITT
21.2.1 MOSKitt UIM
21.2.2 MOSKitt Sketcher
21.3 TRANSFORMACIONES Y GENERACIÓN DE CÓDIGO
21.3.1 Transformaciones entre modelos de interfaz de usuario
21.3.2 Transformaciones modelo a texto
21.4 CASO DE ESTUDIO: FACTURACIÓN
21.4.1 Estrategia para desarrollar la interfaz
21.4.2 Configurar el proyecto MOSKitt: Facturación
21.4.3 Crear el boceto inicial con MOSKitt Sketcher
21.4.4 Completar la especificación con MOSKitt UIM
21.4.5 Generar/Prototipar la aplicación
21.5 CONCLUSIONES
PARTE V. APLICACIONES II. OTRAS APLICACIONES DE MDE
CAPÍTULO 22. MODELADO DE PROCESOS
22.1 INTRODUCCIÓN
22.2 INGENIERÍA DE PROCESOS O MÉTODOS
22.3 MODELADO DE PROCESOS SOFTWARE CON SPEM
22.4 MODELADO DE PROCESOS DE NEGOCIO CON BPMN
22.5 CONCLUSIONES
CAPÍTULO 23. MODERNIZACIÓN DEL SOFTWARE
23.1 INTRODUCCIÓN
23.2 DEFINICIONES Y CONCEPTOS
23.2.1 Sistemas de información heredados
23.2.2 Reingeniería
23.2.3 Modernización dirigida por la arquitectura (ADM)
23.3 MODERNIZACIÓN DEL SOFTWARE MEDIANTE ADM
23.3.1 El ecosistema KDM
23.4 EJEMPLO DE MODERNIZACIÓN DE SOFTWARE
23.4.1 Contexto del ejemplo de modernización
23.4.2 El proceso de modernización propuesto
23.4.3 Resultados obtenidos
23.5 CONCLUSIONES
CAPÍTULO 24. MODERNIZACIÓN DIRIGIDA POR LA ARQUITECTURA EN LA TRANSFORMACIÓN DE UN CORE BANKING
24.1 INTRODUCCIÓN
24.2 PROBLEMA
24.3 SOLUCIÓN
24.3.1 Metodología
24.4 MODELADO DEL SISTEMA AS-IS
24.5 DEFINICIÓN DE BRECHAS Y SISTEMAS TO-BE
24.6 RESOLUCIÓN DE BRECHAS Y TRANSFORMACIÓN DE CÓDIGO
24.7 CONCLUSIONES
CAPÍTULO 25. MODELOS EN TIEMPO DE EJECUCIÓN
25.1 INTRODUCCIÓN
25.2 CONCEPTOS BÁSICOS
25.2.1 ¿Qué son los modelos en tiempo de ejecución?
25.2.2 ¿Por qué modelos en tiempo de ejecución?
25.2.3 ¿Qué constituye un modelo en tiempo de ejecución?
25.2.4 ¿Cómo se representan los modelos en tiempo de ejecución?
25.2.5 ¿Qué beneficios ofrecen los modelos en tiempo de ejecución en los sistemas autoadaptables?
25.3 APLICACIONES
25.3.1 Hogares inteligentes
25.3.2 Adaptación de interfaces de usuario en dispositivos móviles
25.4 CASO DE ESTUDIO
25.4.1 Definición del caso
25.4.2 Autoadaptación del sistema
25.4.3 El rol de los modelos en tiempo de ejecución en el ciclo de desarrollo de software
25.4.4 Tecnologías para gestionar modelos en tiempo de ejecución
25.5 CONCLUSIONES
BIBLIOGRAFÍA
MATERIAL ADICIONAL
ÍNDICE ALFABÉTICO