Generación de código sobre plataformas específicas de     desarrollo de aplicaciones: gvHidra y gvNix           Jose Manue...
Generación de código           ●   Qué es               ●   Proceso por el cual se generan                   modelos o rec...
Generación de código en MOSKitt●   Qué es    ●   Conjunto de transformaciones M2M y M2T a partir de        modelos PIM que...
Plataformas de desarrollo: MVC                ●   Patrón arquitectónico MVC                    ●   Modelo                 ...
Modelos y arquitectura
Mapa de generación de código en MOSKitt
Plataformas soportadas por MOSKittgvHIDRA (PHP5)                                  gvNIX (Java JEE)●   Generación de protot...
Código generado por UML2JPAEstrategias para respectarcódigo del programador:Zonas protegidasSon generadas y “vigiladas” po...
Código generado por UML2JPAEstrategias para respectarcódigo del programador:AOP  Inyección de código con AOP  (Orientación...
Generación de una aplicación              gvHidraDos posibles productos:●   Prototipo    –   Vista previa de la aplicación...
Persistencia de los datos
Transformación UML2DBA partir del modelo de dominio se genera el modelode base de datos con la estructura que da soporte a...
Transformación UML2DB
Transformación DB2DDLA partir del modelo de base de datos se obtieneel script ddl que permitirá crear, para el sistemade b...
Transformación DB2DDLCREATE TABLE Model_Schema.Pelicula(PK_Pelicula integer,titulo char(50),fecha_estreno date,en_cine boo...
Generación de la interfaz
Generación de la interfaz
Transformación Sketcher2gvHidra●   Diseño de la interfaz de la aplicación a partir del    Sketcher.    ●   Se construyen l...
Transformación Sketcher2gvHidra   CWSolapa      CWFicha      CWBotonTooltip                                       CWPestan...
Generación del framework
Transformación Uim2gvHidra●   En este caso particular, se utilizan modelos    UIM para especificar, a partir de los patron...
Entonces, ¿qué debo hacer? (I)●   A partir del Sketcher es posible obtener un prototipo    completo, ya que MOSKitt permit...
¡Prototipado en un paso!
Entonces, ¿qué debo hacer? (II)●   Para resultados más complejos se puede modificar el modelo    UIM creado para añadir nu...
Configuración de la transformación
Preservación de código●   El código generado es susceptible a ser modificado    tras su generación.●   Los cambios efectua...
Construyendo un prototipo        DEMO
Generación de código a gvNIXDisponible en MOSKitt 1.5.0
Generación de entidades Java●   Cada uml::Class representa a una posible entidad    del sistema.●    Cada uml::Property re...
Transformación UML2JPA
Configuración de Persistencia en UML2JPASoporte de subconjunto de JSR-220, Java Persistence API ●Table                   L...
Configuración de Persistencia en UML2JPA
Configuración de Validación en UML2JPASoporte de JSR-303, Bean Validation  ●NotNull  ●MinSize  ●MaxSize  ●RegExp
Código generado por UML2JPA●   Se genera un fichero .java con una clase    java por cada clase UML2. Si se ha    configura...
Código generado por UML2JPA
Generación de serviciosEn fase de análisis
Generación de servicios: SpringGeneración específica para Spring Framework (gvNIX): @ServiceProvee transparencia en la loc...
Generación de serviciosGeneración estándard independiente de la plataforma: WSDLgvNIX dará soporte a generación de servici...
Generación de servicios: WSDL
Generación de Interfaz de Usuario  En fase de análisis
Generación de Interfaz de Usuario
Gracias por su Atención
Upcoming SlideShare
Loading in …5
×

Generación de código sobre plataformas específicas de desarrollo de aplicaciones con MOSKitt

1,320 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,320
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Generación de código sobre plataformas específicas de desarrollo de aplicaciones con MOSKitt

  1. 1. Generación de código sobre plataformas específicas de desarrollo de aplicaciones: gvHidra y gvNix Jose Manuel García Valladolid garcia_josval@gva.es Héctor Iturria Sánchez hiturria@prodevelop.es
  2. 2. Generación de código ● Qué es ● Proceso por el cual se generan modelos o recursos específicos de la plataforma (PSM) a partir de modelos independientes de ella (PIM). ● Beneficios ● Desarrollo más rápido. ● Estandarización del proceso de desarrollo. ● Determinación precisa del impacto frente a cambios. ● Mejora en la calidad del producto final.
  3. 3. Generación de código en MOSKitt● Qué es ● Conjunto de transformaciones M2M y M2T a partir de modelos PIM que generan artefactos específicos de la plataforma de desarrollo.● Qué nos permite ● Generar prototipos que sirven de apoyo a las fases de análisis y/o diseño. ● Generar artefactos que servirán de base para la fase de implementación de la aplicación.
  4. 4. Plataformas de desarrollo: MVC ● Patrón arquitectónico MVC ● Modelo – Encapsula datos y funcionalidad de la aplicación. – Proveen interfaces para acceso a consultas y procesos de negocio. ● Vista – Visualización de datos de la aplicación. – Procesa las peticiones del modelo. ● Controlador – Define el comportamiento de la aplicación frente a estímulos del usuario. – Selecciona la vista adecuada en cada momento.
  5. 5. Modelos y arquitectura
  6. 6. Mapa de generación de código en MOSKitt
  7. 7. Plataformas soportadas por MOSKittgvHIDRA (PHP5) gvNIX (Java JEE)● Generación de prototipo de UI● Generación de código de aplicación ● Generación de entidades Java para UI (POJOs)● Generación de objetos y permisos para ● Generación de Persistencia la base de datos. (Anotaciones JPA)
  8. 8. Código generado por UML2JPAEstrategias para respectarcódigo del programador:Zonas protegidasSon generadas y “vigiladas” por latransformación de MOSKitt.Se generarán en: (a) Al final de cada clase Java: permiten al programador añadir nuevas propiedades y métodos a la clase. (b) En el cuerpo de cada método java que corresponda con una operación de negocio: permiten al programador especificar el código del método.
  9. 9. Código generado por UML2JPAEstrategias para respectarcódigo del programador:AOP Inyección de código con AOP (Orientación a Aspectos). Este mecanismo es proporcionado por gvNIX (Spring Roo).
  10. 10. Generación de una aplicación gvHidraDos posibles productos:● Prototipo – Vista previa de la aplicación – No necesita una fuente de datos asociada● Aplicación – Preparado para modificaciones manuales en caso de ser necesarias – Soporte para persistencia de datos
  11. 11. Persistencia de los datos
  12. 12. Transformación UML2DBA partir del modelo de dominio se genera el modelode base de datos con la estructura que da soporte ala aplicación.La transformación se puede configurar parapersonalizar la información que no se puedeexpresar en el primer modelo.
  13. 13. Transformación UML2DB
  14. 14. Transformación DB2DDLA partir del modelo de base de datos se obtieneel script ddl que permitirá crear, para el sistemade base de datos elegido, la estructura detablas necesaria para persistir la información.Generación para MySql, PostgreSql y Oracle.
  15. 15. Transformación DB2DDLCREATE TABLE Model_Schema.Pelicula(PK_Pelicula integer,titulo char(50),fecha_estreno date,en_cine boolean,dni_director integer,pais integer,genero integer,productora integer) ;CREATE SEQUENCE PK_PeliculaNO MINVALUENO MAXVALUENO CYCLEOWNED BY Pelicula.PK_Pelicula;ALTER TABLE Pelicula ALTER COLUMN PK_Pelicula SET DEFAULT nextval(SEQ_Pelicula_PK_Pelicula);ALTER TABLE Model_Schema.Pelicula ADD CONSTRAINT PK_Pelicula PRIMARY KEY (PK_Pelicula);
  16. 16. Generación de la interfaz
  17. 17. Generación de la interfaz
  18. 18. Transformación Sketcher2gvHidra● Diseño de la interfaz de la aplicación a partir del Sketcher. ● Se construyen las pantallas a partir de los patrones proporcionados. ● Generación de las plantillas: –Creación de la estructura y elementos de agrupación – Generación de los controles ● Tipos de datos de los campos: – Se aplican las máscaras para tipos numéricos y fechas – Definición de listas y valores booleanos
  19. 19. Transformación Sketcher2gvHidra CWSolapa CWFicha CWBotonTooltip CWPestanya CWCheckBox CWCampoTexto CWBoton
  20. 20. Generación del framework
  21. 21. Transformación Uim2gvHidra● En este caso particular, se utilizan modelos UIM para especificar, a partir de los patrones, los diferentes módulos de la aplicación y sus componentes.● Se obtiene el conjunto de controladores, mappings, vistas, así como la configuración y la conexión a la base de datos.● Suficiente para obtener tanto un prototipo como una aplicación.
  22. 22. Entonces, ¿qué debo hacer? (I)● A partir del Sketcher es posible obtener un prototipo completo, ya que MOSKitt permite encapsular todo el proceso de generación en una única transformación.● Dicho mecanismo proporciona también un asistente de generación selectiva: Sólo lo que interesa.
  23. 23. ¡Prototipado en un paso!
  24. 24. Entonces, ¿qué debo hacer? (II)● Para resultados más complejos se puede modificar el modelo UIM creado para añadir nuevas funcionalidades: ● Infraestructura de generación de informes ● Saltos de pantalla ● Acciones de interfaz● La configuración de la transformación Uim2gvHidra permite especificar información que no está disponible en el Sketcher.● A través del UIM se añaden los requisitos mínimos que necesita la generación de una aplicación con persistencia de datos.
  25. 25. Configuración de la transformación
  26. 26. Preservación de código● El código generado es susceptible a ser modificado tras su generación.● Los cambios efectuados no deben perderse si los modelos se regeneran.● Solución en dos fases: ● Herencia de clases en los controladores: – Constructor y matchings – Definición de tipos de datos – Métodos de lógica de negocio ● Uso de zonas protegidas para la lógica de negocio
  27. 27. Construyendo un prototipo DEMO
  28. 28. Generación de código a gvNIXDisponible en MOSKitt 1.5.0
  29. 29. Generación de entidades Java● Cada uml::Class representa a una posible entidad del sistema.● Cada uml::Property representa un posible atributo de una entidad.● Cada uml::Operation representa una posible operación de negocio de una entidad.● También soporte para uml::Interface y uml::Enumeration.● Entre en juego la figura del EntityManager, que es capaz de persistir una entidad por sí mismo. No hay que modelar operaciones básicas de persistencia.● Herencia simple (la soportada por Java).● Podríamos simular herencia múltiple usando Interfaces, pero cuidado que JSR-220 no permite anotar en interfaces Java.
  30. 30. Transformación UML2JPA
  31. 31. Configuración de Persistencia en UML2JPASoporte de subconjunto de JSR-220, Java Persistence API ●Table Lob ●SecondaryTable ●Temporal ●SecondaryTables ●Enumerated ●UniqueConstraint ●ManyToOne ●Column ●OneToOne ●JoinColumn ●OneToMany ●JoinColumns ●JoinTable ●Id ●ManyToMany ●GeneratedValue ●MapKey ●AttributeOverride ●OrderBy ●AttributeOverrides ●Inheritance ●AssociationOverride ●DiscriminatorColumn ●AssociationOverrides ●DiscriminatorValue ●EmbeddedId ●PrimaryKeyJoinColumn ●IdClass ●PrimaryKeyJoinColumns ●Transient ●Embeddable ●Version ●Embedded ●Basic ●MappedSuperclass ●SequenceGenerator ●TableGenerator
  32. 32. Configuración de Persistencia en UML2JPA
  33. 33. Configuración de Validación en UML2JPASoporte de JSR-303, Bean Validation ●NotNull ●MinSize ●MaxSize ●RegExp
  34. 34. Código generado por UML2JPA● Se genera un fichero .java con una clase java por cada clase UML2. Si se ha configurado como Entidad, entonces será anotada como tal.● Se genera un fichero .java con una interface java por cada Interface de UML2.● Se genera un fichero .java con un tipo enumerado por cada Enumeration de UML2.● Aquellos elementos que no han cambiado en las sucesivas generaciones de código no sobreescriben el fichero correspondiente. De este modo evitamos que gvNIX procese ficheros que no han cambiado.
  35. 35. Código generado por UML2JPA
  36. 36. Generación de serviciosEn fase de análisis
  37. 37. Generación de servicios: SpringGeneración específica para Spring Framework (gvNIX): @ServiceProvee transparencia en la localización física de la lógica de negocio.
  38. 38. Generación de serviciosGeneración estándard independiente de la plataforma: WSDLgvNIX dará soporte a generación de servicios en base a WSDL
  39. 39. Generación de servicios: WSDL
  40. 40. Generación de Interfaz de Usuario En fase de análisis
  41. 41. Generación de Interfaz de Usuario
  42. 42. Gracias por su Atención

×