47
Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Embed Size (px)

Citation preview

Page 1: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Aplicación de diseño de clases y generación de

código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional

• Juan Timoteo Ponce Ortiz

Page 2: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Contenido

• Definición del proyecto• Fundamentos• Proceso• Conclusiones y

recomendaciones

Page 3: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Antecedentes

• Arquitectura multicapas

Page 4: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Antecedentes

• Persistencia de datos• Bases de datos relacionales

• Fiables• Eficientes• Escalables

• Enfoque orientado a objetos• Incompatibilidades con RDBMS• Data Access Object

Relational database management system

Page 5: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz
Page 6: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Antecedentes

• Incremento en productividad• Mantenibilidad• Rendimiento• Portabilidad

Page 7: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Antecedentes• JSR 220: Enterprise Java Beans 3(2006)• Java Persistence API

• Herramientas CASE, funciones orientadas a la norma JPA• Dificultad de aprendizaje• Enfoque cerrado• Base de datos -> Modelo OO

Page 8: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Problemática actual

La falta de funciones y utilidades en herramientas CASE de modelado de datos basadas en UML, que permitan la exportación de los modelos hacia código fuente de un proyecto basado en la arquitectura multicapas capas, utilizando reglas de mapeo objeto relacional.

Page 9: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Objeto de estudio

• Diseño de clases y generación de código enfocado en normas de desarrollo, utilizando UML como base– Estándar de persistencia EJB 3– Herramientas de

automatización(software libre)– Frameworks de integración visual

Page 10: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Objetivos• Objetivo general

– Desarrollo de una aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional.

– UML 1.4.2 ISO/IEC 19501:2005

Page 11: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Fundamentos

•Mapeo Objeto relacional•Enterprise Java Beans 3•Diseño de clases•Generadores de código•Arquitectura multicapas

Page 12: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Mapeo Objeto/Relacional

Esquema: API de persistencia de Java

Page 13: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Ejemplo: Mapeo de relación(1..*)

ACM: Bridging the Object-Relational divide, 2004

Page 14: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Enterprise Java Beans 3

Enterprise Java Beans(EJB) es una plataforma para construir aplicaciones portables, rehusables y escalables

• API de persistencia Java (JPA)• Definición de Enterprise Beans

•Entity BeanEJB3 Specification JSR 220

Page 15: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

EJB3: Java Persistence API

•Metadatos -> @notaciones•Gestor de entidades•JPQL -> Query language

Page 16: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Diseño de clases: UML

Esquema: Manipulaciónde UML para diseño

Page 17: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Diseño de clases:UML

• ¿Cuales son los objetos persistentes?• “El modelo de dominio representa las

‘cosas’ que existen o tienen un lugar en el entorno de negocio” – Object Oriented Software Engineering(2000)

Page 18: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Características de herramientas de diseño: UML

• Manejo nativo de UML( 1.4.2 ISO 19501:2005)

• Manejo del modelo MOF para la administración de elementos

• Manejo de operaciones transaccionales• Diseño de modelos de forma visual a

través de editores especializados• Intercambio de datos a través de XMI

Page 19: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Que se necesita para manipular UML?

• Meta-Object Facility•Lenguaje abstracto para la especificación,

construcción y manejo de metamodelos, los cuales son a su vez lenguajes abstractos para algún tipo de metadato.

Meta Object Facility Specification ISO/IEC 19502:2005

Page 20: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

MOF

Meta Object Facility Specification ISO/IEC 19502:2005

Page 21: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

MOF y JMI

MOF -> Estándar OMGMOF -> manipulación de metadatos y modelosMOF-> especificado paralelamente a UML

JMI -> Implementación de MOF para JavaJMI -> Compatibilidad con norma UML 1.4.2JMI -> Soporte XMI

Meta-Object Facility 1.4.1Java Metadata Interface JSR 040Object Management GroupUML 1.4.2 ISO IEC 19501:2005

Page 22: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Repositorio de metadatos

Componente de software que contiene elementos MOF, manipula su estado y acceso.• Transaccional.• Provee utilidades de creación, edición y

eliminación de elementos contenidos.• Simplifica su uso a través del patrón de

diseño Facade.• Ejemplo: Enterprise architect• Local -> Access• Remote -> Sql Server

Page 23: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Generación de código

“”La generación de código es la transformación de algún tipo de diseño en código específico para una plataforma” – Code generation in Action(2005)

Page 24: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Proceso de generación de código

Code generation in action(2005)Code generation network

Page 25: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Características de generadores de código

• Flexibilidad y configuración en el código generado

• Manejo de plantillas y ficheros de definición de estructuras

• Pruebas de código generado(compilación)

• Integración con diferentes lenguajes de programación

Page 26: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Arquitectura multicapas

Page 27: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Arquitectura multicapas

•Bajo acoplamiento•Independencia entre niveles•Mantenibilidad•Separación de responsabilidades•Simplificación del desarrollo

Page 28: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Proceso de desarrollo

•Análisis•Diseño•Implementación•Pruebas y herramientas de integración

Page 29: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Análisis•Análisis

• Requisitos funcionales

• Modelo conceptual

• Marco de trabajo

• Estados de un proyecto

• Proceso genérico de generación

• Arquitectura lógica

• Disposición de paquetes de clases

Page 30: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Requisitos y funcionalidades

Page 31: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Modelo conceptual aplicación

UML 1.4.2 ISO IEC 19501:2005

Page 32: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Marco de trabajo

• Contenedor principal : Proyecto• Una instancia de proyecto a la vez• Contiene referencias al modelo principal de

diseño• Modelo principal de diseño

• Contiene n instancias de elementos UML• Contiene información adicional sobre

elementos• Metadatos de generación

• Diagrama• Elemento UML que contiene elementos

visuales• Cada elemento visual referencia a un

elemento lógico

Page 33: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Estados de un proyecto

Page 34: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Generación de código

Generación a partir de modelos(proceso genérico).

Page 35: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Arquitectura lógica

Page 36: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Disposición de paquetes de clases

• La distribución se basa en el patrón de diseño Modelo-Vista-Controlador

• Los paquetes relaciones y core contienen los elementos UML.

Page 37: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Diseño•Diseño

• Arquitectura e Interfaces

• Interfaces de usuario

Page 38: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Arquitectura e interfaces

ArArquitectura de la aplicación Interfaces

Page 39: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Interfaces de usuario

Page 40: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Diálogo de edición

•Editores separados por nivel de abstracción

•Edición manipulada en una transacción

Page 41: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Implementación•Implementación

• Selección de componentes de software

• Lenguaje de programación

• Metamodelo de UML

• Intercambio de datos( XMI )

• Repositorio de datos

• Editor gráfico

• Motor de plantillas

• Componentes de la aplicación

Page 42: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Selección de componentes de software

Lenguaje de programación

Repositorio de metadatos

Page 43: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Selección de componentes de software

Motor de plantillas

• Editor gráfico• Basado en ArgoUML• Información de graficado almacenada como

metadatos de los elementos.

Page 44: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Componentes de la aplicación

Page 45: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Demostración de la aplicación

Page 46: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Conclusiones

• Los objetivos fueron cumplidos en base a las limitaciones definidas.

• Las interfaces JPA no cambiarán drásticamente en próximas especificaciones.

• La aplicación ofrece(inicialmente) una funcionalidad básica pero eficiente para el desarrollo de aplicaciones JSE integradas con JPA.

• Desarrollo abierto y disponible a posibles usuarios debido al tipo de licencia.

• Las herramientas de integración continua facilitan la localización y fallo de errores, además de incrementar la calidad del código.

Page 47: Aplicación de diseño de clases y generación de código, orientado hacia la arquitectura multicapas y el mapeo objeto/relacional Juan Timoteo Ponce Ortiz

Recomendaciones

• Personalizar el proceso de generación agregando plantillas dirigidas hacia otro tipo de implementaciones.

• Implementar de forma completa la norma JPA dentro de la aplicación.

• Mejorar la interacción usuario-aplicación.• Ampliar el soporte de generación de generación

de código para J2SE y J2EE.