Desarrollo de una aplicación de modelado con generación de

Download Report

Transcript Desarrollo de una aplicación de modelado con generación de

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
Antecedentes
• Arquitectura multicapas
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
Antecedentes
• Incremento en
productividad
• Mantenibilidad
• Rendimiento
• Portabilidad
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
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.
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
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
Fundamentos
•Mapeo Objeto relacional
•Enterprise Java Beans 3
•Diseño de clases
•Generadores de código
•Arquitectura multicapas
Mapeo Objeto/Relacional
Esquema: API de persistencia de Java
Ejemplo: Mapeo de relación(1..*)
ACM: Bridging the
Object-Relational divide, 2004
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 Bean
EJB3 Specification JSR 220
EJB3: Java Persistence API
•Metadatos -> @notaciones
•Gestor de entidades
•JPQL -> Query language
Diseño de clases: UML
Esquema: Manipulación
de UML para diseño
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)
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
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
MOF
Meta Object Facility Specification ISO/IEC 19502:2005
MOF y JMI
MOF -> Estándar OMG
MOF -> manipulación de metadatos y modelos
MOF-> especificado paralelamente a UML
JMI -> Implementación de MOF para Java
JMI -> Compatibilidad con norma UML 1.4.2
JMI -> Soporte XMI
Meta-Object Facility 1.4.1
Java Metadata Interface JSR 040
Object Management Group
UML 1.4.2 ISO IEC 19501:2005
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
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)
Proceso de generación de
código
Code generation in action(2005)
Code generation network
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
Arquitectura multicapas
Arquitectura multicapas
•Bajo acoplamiento
•Independencia entre
niveles
•Mantenibilidad
•Separación de
responsabilidades
•Simplificación del
desarrollo
Proceso de desarrollo
•Análisis
•Diseño
•Implementación
•Pruebas y herramientas de
integración
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
Requisitos y funcionalidades
Modelo conceptual aplicación
UML 1.4.2 ISO IEC 19501:2005
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
Estados de un proyecto
Generación de código
Generación a partir de modelos(proceso genérico).
Arquitectura lógica
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.
Diseño
•Diseño
• Arquitectura e Interfaces
• Interfaces de usuario
Arquitectura e interfaces
ArArquitectura de la aplicación
Interfaces
Interfaces de usuario
Diálogo de edición
•Editores
separados por
nivel de
abstracción
•Edición
manipulada en
una transacción
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
Selección de componentes de
software
Lenguaje de programación
Repositorio de
metadatos
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.
Componentes de la aplicación
Demostración de la aplicación
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.
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.