Capítulo 1
Introducción
1.1 Motivación
1.2 Objetivos
Capítulo 2
Organización de la tesis
Capítulo 3
Conceptos básicos
3.1 Arquitectura Orientada a Servicios
3.1.1 Terminología
3.1.2 Diseño y desarrollo de SOA
3.1.2.1 Diferencias con otras Arquitecturas
3.1.2.2 Beneficios
3.1.3 SOA: La Terminología de Información Enfocada al Negocio
3.1.4 Servicios Web
3.1.4.1 Diseñar un marco de Mensajería
3.1.4.2 Descripción de los Servicios
3.1.4.3 WSDL: El contrato de un Servicio
3.2 Introducción a Spring
3.2.1 Porqué surgió Spring Framework?
3.2.2 Beneficios del uso de Inyección de Dependencia (DI)
3.2.3 Módulos
3.2.4 Spring - Contenedores de IoC e Inyección de Dependencias
3.2.5 Configuración de Beans con Spring
3.2.5.1 Configuración con archivos XML
3.2.6 Inyección de Dependencias
3.2.6.1 Inyección de Dependencia basada en Constructor
3.2.6.1.1 Inyección de Dependencia basada en Constructor con Archivos XML
3.3 Implementando la arquitectura orientada a servicios con Spring
3.4 Desarrollo de software dirigido por modelos
3.4.1 Introduciendo a Model Driven Architecture (MDA)
3.4.2 Modelos en MDA
3.4.2.1 Unified Modeling Language: UML
3.4.2.1.2 Diagramas en UML
3.4.2.2 Mecanismos de extensibilidad en UML
3.4.2.2.1 Técnicas de definir lenguajes de modelado
3.4.2.2.2 Estereotipos y Valores Etiquetados
3.4.2.2.3 El uso de Marcas
3.4.2.2.4 Perfile
3.4.3 OBJECT CONSTRAINT LANGUAGE: OCL 2.0
3.4.3.1 Fundamentos De OCL
3.4.3.1.1 Expresiones, tipos y valores en OCL
3.4.3.1.2 Tipos definidos por el Usuario
3.4.3.2 SINTAXIS DE UN SUBCONJUNTO DE EXPRESIONES OCL
3.4.4 Metadata Interchange (XMI)
3.4.4.1 Tipos de modelos en función del nivel de abstracción
3.4.4.1.1 CIM
3.4.4.1.2 PIM
3.4.4.1.3 PSM
3.4.5 Code Model
3.4.6 Beneficios de la separación entre modelos PIM y PSM
3.4.7 Desarrollo tradicional vs. Desarrollo con MDA
3.4.8 Beneficios del MDA
3.4.9 El nuevo proceso de desarrollo
3.4.10 Visión de MDA
3.4.11 Construyendo Metamodelos
3.4.11.1 Qué es un metamodelo y para qué sirve
3.4.11.2 Ejemplo de un Metamodelo
3.4.12 Fundamentos de MDA
3.4.13 Metamodelos y MOF
3.4.13.1 Essential MOF (eMOF) y Complete MOF (cMOF)
3.4.13.2 Importancia del Metamodelo en MDA
3.4.14 Transformaciones en MDA
3.4.14.1 Revisión de lenguajes de transformación de modelos
3.4.14.2 ATL (Atlas Transformation Language)
3.4.14.2.1 Justificación de la elección de ATL
3.4.14.2.2 Estructura general de la definición de Transformación
3.4.14.3 MOFScript
3.4.15 Eclipse Modeling Framework (EMF)
3.4.15.1 Eclipse
3.4.15.2 Eclipse EMF
3.4.15.3 Meta Models - Ecore and Genmodel
Capítulo 4
4 Implementación de la Solución
4.1 Objetivo
4.2 Caso de Estudio
4.2.1 Modelo Estructural...
4.2.2 Arquitectura de la aplicación
4.2.2.1 La capa de negocio
4.2.2.2 La capa de datos
4.2.2.2.1 Una simple descripción del archivo de mapeo
4.2.2.2.2 El lenguaje de consultas Hibernate
4.2.3 Esqueleto estructural, árbol de archivos del sistema de venta de libros
4.3 Manos a la Obra
4.3.1 Desarrollo del Plugin Profile UService
4.3.1.1 Definiendo el modelo de objetos enriquecido por el perfil UService
4.3.1.2 Creamos el Plugin Profile UService
4.3.1.3 Definición grafica del modelo de objetos enriquecido por el perfil UService
4.3.2 Desarrollo de reglas OCL para la validación de los modelos
4.3.2.1 Definiendo las reglas
4.3.2.2 Validando el modelo de objetos
4.3.3 Desarrollo de transformación del PIM al PSM con ATL
4.3.3.1 Definiendo metamodelos de dominio Source y Target
4.3.3.1.1 Creamos el metamodelo JAVA.ecore
4.3.3.2 Implementando la transformación del PIM al PSM con ATL
4.3.3.2.1 Definimos objetivo y comportamiento de la transformación
4.3.3.2.2 Detalles de implementación de la transformación ATL
4.3.3.2.3 Probamos la transformación y mostramos el resultado obtenido
4.3.4 Desarrollo de transformación de modelo a texto, derivando a código JAVA
4.3.4.1 Probamos la transformación a código verificando el esqueleto del sistema obtenido
4.3.5 Desarrollo del plugin de ejecución completa de las dos transformaciones
4.3.5.1 Probamos el plugin de ejecución
Capítulo 5
Conclusiones
Capítulo 6
Trabajos futuros
Capítulo 7
Bibliografía