SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
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
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.
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.
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.
Modelos y arquitectura
Mapa de generación de código en MOSKitt
Plataformas soportadas por MOSKitt

gvHIDRA (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                                     (POJO's)
●   Generación de objetos y permisos para   ●   Generación de Persistencia
    la base de datos.                           (Anotaciones JPA)
Código generado por UML2JPA

Estrategias para respectar
código del programador:
Zonas protegidas
Son generadas y “vigiladas” por la
transformació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.
Código generado por UML2JPA

Estrategias para respectar
código del programador:
AOP


  Inyección de código con AOP
  (Orientación a Aspectos). Este
  mecanismo es proporcionado
  por gvNIX (Spring Roo).
Generación de una aplicación
              gvHidra
Dos 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
Persistencia de los datos
Transformación UML2DB
A partir del modelo de dominio se genera el modelo
de base de datos con la estructura que da soporte a
la aplicación.




La transformación se puede configurar para
personalizar la información que no se puede
expresar en el primer modelo.
Transformación UML2DB
Transformación DB2DDL
A partir del modelo de base de datos se obtiene
el script ddl que permitirá crear, para el sistema
de base de datos elegido, la estructura de
tablas necesaria para persistir la información.




Generación para MySql, PostgreSql y Oracle.
Transformación DB2DDL




CREATE 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_Pelicula

NO MINVALUE
NO MAXVALUE

NO CYCLE

OWNED 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);
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 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
Transformación Sketcher2gvHidra
   CWSolapa      CWFicha      CWBotonTooltip




                                       CWPestanya




 CWCheckBox   CWCampoTexto   CWBoton
Generación del framework
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.
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.
¡Prototipado en un paso!
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.
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 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
Construyendo un prototipo



        DEMO
Generación de código a gvNIX

Disponible en MOSKitt 1.5.0
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.
Transformación UML2JPA
Configuración de Persistencia en UML2JPA

Soporte 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
Configuración de Persistencia en UML2JPA
Configuración de Validación en UML2JPA

Soporte 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
    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.
Código generado por UML2JPA
Generación de servicios
En fase de análisis
Generación de servicios: Spring
Generación específica para Spring Framework (gvNIX): @Service
Provee transparencia en la localización física de la lógica de negocio.
Generación de servicios
Generación estándard independiente de la plataforma: WSDL
gvNIX dará soporte a generación de servicios en base a WSDL
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

Más contenido relacionado

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

Similar a Generación de código sobre plataformas específicas de desarrollo de aplicaciones con MOSKitt (20)

Creando Aplicaciones Web en el 2015
 Creando Aplicaciones Web en el 2015 Creando Aplicaciones Web en el 2015
Creando Aplicaciones Web en el 2015
 
Metodo watch y lps
Metodo watch y lpsMetodo watch y lps
Metodo watch y lps
 
Metodo watch y lps
Metodo watch y lpsMetodo watch y lps
Metodo watch y lps
 
Fury devops conf (1)
Fury devops conf (1)Fury devops conf (1)
Fury devops conf (1)
 
Fury DevopsConf 2015
Fury DevopsConf 2015Fury DevopsConf 2015
Fury DevopsConf 2015
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
S4-PD1-2.2 EF
S4-PD1-2.2 EFS4-PD1-2.2 EF
S4-PD1-2.2 EF
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 
Procesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITECProcesos de Software EGEL-UNITEC
Procesos de Software EGEL-UNITEC
 
SIMUNROBOT
SIMUNROBOTSIMUNROBOT
SIMUNROBOT
 
S4 - EF
S4 - EFS4 - EF
S4 - EF
 
Metodo watch
Metodo watchMetodo watch
Metodo watch
 
Metodo watch
Metodo watchMetodo watch
Metodo watch
 
Andrid studio
Andrid studioAndrid studio
Andrid studio
 
Rational unified process (rup)
Rational unified process (rup)Rational unified process (rup)
Rational unified process (rup)
 
Mos Kitt Quo Vadis
Mos Kitt Quo VadisMos Kitt Quo Vadis
Mos Kitt Quo Vadis
 
Arquitecturas de Programación Avanzadas en NI LabVIEW.pdf
Arquitecturas de Programación Avanzadas en NI LabVIEW.pdfArquitecturas de Programación Avanzadas en NI LabVIEW.pdf
Arquitecturas de Programación Avanzadas en NI LabVIEW.pdf
 
Visteme con 'Clean Architecture' que tengo prisas
Visteme con 'Clean Architecture' que tengo prisasVisteme con 'Clean Architecture' que tengo prisas
Visteme con 'Clean Architecture' que tengo prisas
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 

Último

ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 

Último (20)

ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 

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

  • 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. 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. 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. 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.
  • 6. Mapa de generación de código en MOSKitt
  • 7. Plataformas soportadas por MOSKitt gvHIDRA (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 (POJO's) ● Generación de objetos y permisos para ● Generación de Persistencia la base de datos. (Anotaciones JPA)
  • 8. Código generado por UML2JPA Estrategias para respectar código del programador: Zonas protegidas Son generadas y “vigiladas” por la transformació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. Código generado por UML2JPA Estrategias para respectar código del programador: AOP Inyección de código con AOP (Orientación a Aspectos). Este mecanismo es proporcionado por gvNIX (Spring Roo).
  • 10. Generación de una aplicación gvHidra Dos 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
  • 12. Transformación UML2DB A partir del modelo de dominio se genera el modelo de base de datos con la estructura que da soporte a la aplicación. La transformación se puede configurar para personalizar la información que no se puede expresar en el primer modelo.
  • 14. Transformación DB2DDL A partir del modelo de base de datos se obtiene el script ddl que permitirá crear, para el sistema de base de datos elegido, la estructura de tablas necesaria para persistir la información. Generación para MySql, PostgreSql y Oracle.
  • 15. Transformación DB2DDL CREATE 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_Pelicula NO MINVALUE NO MAXVALUE NO CYCLE OWNED 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. Generación de la interfaz
  • 17. Generación de la interfaz
  • 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. Transformación Sketcher2gvHidra CWSolapa CWFicha CWBotonTooltip CWPestanya CWCheckBox CWCampoTexto CWBoton
  • 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. 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.
  • 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. Configuración de la transformación
  • 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
  • 28. Generación de código a gvNIX Disponible en MOSKitt 1.5.0
  • 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.
  • 31. Configuración de Persistencia en UML2JPA Soporte 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
  • 33. Configuración de Validación en UML2JPA Soporte de JSR-303, Bean Validation ●NotNull ●MinSize ●MaxSize ●RegExp
  • 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.
  • 36. Generación de servicios En fase de análisis
  • 37. Generación de servicios: Spring Generación específica para Spring Framework (gvNIX): @Service Provee transparencia en la localización física de la lógica de negocio.
  • 38. Generación de servicios Generación estándard independiente de la plataforma: WSDL gvNIX dará soporte a generación de servicios en base a WSDL
  • 40. Generación de Interfaz de Usuario En fase de análisis
  • 42. Gracias por su Atención