Presentación guía sencilla en Microsoft Excel.pptx
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.
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);
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
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.
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
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.
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.
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