La Ingeniería Dirigida por Modelos (MDE) logra en las empresas
sistemas de software con mayor productividad y calidad
Un caso exitoso universidad-empresa con el proyecto Lion2
María Consuelo Franky
Jaime Pavlich-Mariscal
Pontificia Universidad Javeriana
María Catalina Acero
Heinsohn Business Technology
Proyectos Lion y Lion2
• Objetivo: Incrementar la productividad de Heinsohn (HBT) mediante la automatización en el desarrollo de software:
Aplicando técnicas recientes de construcción de software y de Ingeniería Dirigida por Modelos (MDE)
Integrando componentes existentes desarrollados por la empresa (componentes Lion)
Foco: aplicaciones Web (Java EE)
pg. 2
• Participantes en los proyectos:
Investigadores de la PUJ Ingenieros líderes de HBT
Asistentes de investigación de la PUJ Ingenieros desarrolladores de HBT
María Consuelo FrankyJaime Pavlich-Mariscal
Alvaro InfanteMaría Catalina AceroLeonardo GiralAngee Zambrano
Luisa BarreraAndrea BarrazaJohn Carlos OlarteFrancisco Mora
Cristián FernándezRubén BetancurJorge CamargoNicolás Pinzón
Cofinanciado por Colcienciaspg. 3
Componentes en HBT
Componentes Lion: resuelven requerimientos comunes de las aplicaciones empresariales
pg. 5
Seguridad AuditoríaProcesamiento
Archivos
Procesos Automáticos
Notificaciones Encuestas
Firmas digitales
Entitymatic
Problema 1¿Cómo organizar estos componentes de software como piezas de rompecabezas para que se puedan ensamblar fácilmente a cualquier proyecto ?
pg. 6
• Situación inicial:
Para cada nuevo proyecto se ensamblan manualmente los componentes
Esto toma varias semanaspg. 7
Problema 2
• Un proyecto de software empresarial es tan complejo como construir un edificio.
• Los componentes Lion representan solo los “cimientos”
Cómo acelerar la construcción del resto del proyecto de software?
pg. 8
cimientos
El proceso propuesto como solución
1
Estandarizar
arquitectura
2
Concretar
arquitectura
3
Migrar y
adaptar
componentes
4
Automatizar
integración
5
Desarrollar un
lenguaje de
modelado
6
Crear
generadores
de código
Aplicación de frameworks de generación y transformación de código
Aplicación de MDE pg. 10
1. Estandarizar la arquitectura
1
Estandarizar
arquitectura
2
Concretar
arquitectura
3
Migrar y
adaptar
componentes
4
Automatizar
integración
5
Desarrollar un
lenguaje de
modelado
6
Crear
generadores
de código
pg. 11
Arquitectura estándar adoptada
• Multicapa con bajo acoplamiento
• Unifica decisiones de diseño para futuros proyectosAsume que los proyectos en la
organización son similares
• Facilita la integración de nuevos componentes
Capa de
PresentaciónPáginas web
JSF
Capa de AplicaciónInterme-
diarios
Capa de
Servicios
Componentes
de negocio
(de sesión)
Capa de DominioEntidades
persis-
tentes
Delegado de negocio genérico
Localizador de Datos
Bases de
datos
pg. 12
2. Concretar arquitectura
1
Estandarizar
arquitectura
2
Concretar
arquitectura
3
Migrar y
adaptar
componentes
4
Automatizar
integración
5
Desarrollar un
lenguaje de
modelado
6
Crear
generadores
de código
pg. 13
Maven
• Automatización del ciclo de vidaCompilar, empacar, pruebas, despliegue, etc.
• Manejo de dependenciasMaven automáticamente descarga y configura
dependencias (artefactos)
Los artefactos residen en repositorios Maven, en Internet o en la Intranet de la organización
• ArquetiposDefinen el esqueleto de nuevos proyectos
Basados en la arquitectura estándar
pg. 14
Arquetipo Maven genera nuevo proyecto con la arquitectura estándar
artefacto jarcon beans de negocio que
realizan funcionalidad de los casos
de uso
artefacto war con páginas web JSF
artefacto jar con
beans para soportar
las páginas web
artefacto jar con
entidades persistentes
Super POM
módulo
padre
submódulo
Aplicación
submódulo
Servicios
submódulo
Dominiosubmódulo
Presentación
scripts SQL para poblar las tablas con
datos iniciales
submódulo
Persistencia
3. Migrar y adaptar componentes
1
Estandarizar
arquitectura
2
Concretar
arquitectura
3
Migrar y
adaptar
componentes
4
Automatizar
integración
5
Desarrollar un
lenguaje de
modelado
6
Crear
generadores
de código
Migración a Maven
• Cada componente Lion fue migrado a un proyecto Maven multi-módulo
Alineación con capas de la arquitectura estándar
Especificación de dependencias entre componentes
Repositorio de componentes en la Intranet de HBT
pg. 17
4. Automatizar Integración
1
Estandarizar
arquitectura
2
Concretar
arquitectura
3
Migrar y
adaptar
componentes
4
Automatizar
integración
5
Desarrollar un
lenguaje de
modelado
6
Crear
generadores
de código
pg. 19
Recordar Problema 1 ¿Cómo organizar estos componentes de software como piezas de rompecabezas para que se puedan ensamblar fácilmente a cualquier proyecto ?
pg. 20
Esto ahora toma pocos minutos
• Solución Propuesta
Ensamblar automáticamente los componentes Lion a cada nuevo proyecto.
pg. 21
Lion Wizard
• Automatiza tareas complejas de integración de componentes
Lion Wizard
Arquetipos
acopla
componentes
Componentes
Lion
genera nuevos
proyectos
nuevo proyecto con
componentes acoplados
pg. 22
pg. 23
• Define propiedades del nuevo proyecto
• Genera automáticamente un nuevo proyecto con la estructura estándar
• Integra al nuevo proyecto uno o más componentes en cuestión de minutos
5. Desarrollar un lenguaje de modelado
1
Estandarizar
arquitectura
2
Concretar
arquitectura
3
Migrar y
adaptar
componentes
4
Automatizar
integración
5
Desarrollar un
lenguaje de
modelado
6
Crear
generadores
de código
Recordar Problema 2
• Un proyecto de software empresarial es tan complejo como construir un edificio.
• Los componentes representan sólo los “cimientos”
Cómo acelerar la construcción del resto del proyecto de software?
pg. 26
cimientos
Solución Propuesta:Ingeniería Dirigida por Modelos (MDE)
Construir el resto del “edificio” (proyecto de software) de manera semiautomática
pg. 27
Desarrollar un lenguaje de modelado
• Information Systems Modeling Language (ISML)
• Principios de diseño:
AbstracciónAutomatizaciónFlexibilidadControl de versionesFacilitar AdopciónIntegración con Frameworks Existentes
pg. 28
ISML
Metamodelo
GrámaticaChequeo
de tipos
Manejador
de contexto
ISML - Características
• Lenguaje Textual definido mediante gramática (facilidades Xtext)Flexibilidad, Control de Versiones
• Modelo-Vista-Controlador (MVC)Abstracción, facilita Adopción
• Servicios y Reutilización de componentes LionIntegración con FWs existentes
• Facilidades de modelado parcialFacilita Adopción
• Plugins de EclipseFacilita Adopción
• Generadores de códigoAutomatización
pg. 29
ISML – Principales Conceptos
Entidades de Negocio(Model)
Páginas(View)
Controladores(Controller)
Servicios(Services)
Muestran Utilizan
Invocan
Definen Flujo
Administran
pg. 30
ServiciosControlador:
Servicio: (modela servicios estándares o componentes Lion o también
servicios de negocio por desarrollar)
6. Crear generadores de código
1
Estandarizar
arquitectura
2
Concretar
arquitectura
3
Migrar y
adaptar
componentes
4
Automatizar
integración
5
Desarrollar un
lenguaje de
modelado
6
Crear
generadores
de código
ISML-GEN
• Un conjunto de generadores de código modulares (mediante facilidades Xtend)
pg. 37
ISML-GEN Entity Generator
JEE + JSF Generator
JEE + JavaFX + REST Gen.
CRUD Transformer
Generator Suites
Generators
Templates
Generadores de código
• Generador de entidadesCrea entidades basadas en JPA
• Generador JEE + JSFPáginas y backing beans, basados en JSF and JEE 6
• Generador JEE + JavaFX + RESTPáginas JavaFX, backing beans, servicios REST
pg. 38
¿Cómo opera el ambiente ISML-MDE?1. Lion Wizard 2. Ambiente de modelado y
lenguaje ISML (Eclipse + Plugins)
3. Generadores de Código
Compilación y empaquetamiento
automático(Maven)
Aplicación JEE6 + JSF
Aplicación JEE6 + JavaFX + REST
Esqueletoaplicación con componentes acoplados
ModeloISML
agregan librerías de servicios
• 14 productos, cada uno con manuales, tutoriales y videos:
Productos de los proyectos Lion y Lion2
pg. 43
• Modalidad universidad-empresa con cofinanciación de Colciencias
• Duración total : 3 años
• Número de Participantes por proyecto: 8 (4 de la universidad y 4 de la empresa)
Cifras económicas de los proyectos
pg. 44
proyecto costo total financiación Colciencias (para la Univ.)
contrapartida Univ.
contrapartida en especie de la empresa
contrapar-tida en dinero de la empresa
Lion 365’220.000 131’000.000 4’100.000 215’060.000 15’060.000
Lion2 382’046.000 149’400.000 1’400.000 208’246.000 23’000.000
• Promedio relación modelo-códigoSin usar generador CRUD 1 : 4.6Usando generador CRUD 1 : 115
Validación - Resultados Preliminares
pg. 45
6 24 144182696
2078
908
3187
8794
0
2000
4000
6000
8000
10000
Aplicación 1 Aplicación 2 Aplicación 3
Tam
año
(LO
C)
Modelo sinCRUD
Modelo conCRUD
Código
NECESIDAD EN HEINSOHN
pg. 46
Disminuir tiempos de desarrollo
• Reducir desviaciones
• Facilitar desarrollo en la capa de presentación
Disminuir el nivel de errores
• Menores costos
• Mayor satisfacción del cliente
Facilitar la integración de los componentes de Lion
Estandarización de buenas prácticas
PRODUCTIVIDAD
IMPACTO DEL CAMBIO HEINSOHN
pg. 47
Arquitecturas de Referencia
Gobierno Técnico
Estandarización Técnica
Evaluación Arquitectura
USO COMPONENTES FRAMEWORK LION
EVOLUCIÓN Y USO GENERADORES ISML-MDE
pg. 48
IMPACTO DEL CAMBIO HEINSOHN
INGENIEROS DE DESARROLLO - HOY
Detalle técnico, evolución tecnológica
Solución de Errores
Modelo y lógica de negocio
pg. 49
IMPACTO DEL CAMBIO HEINSOHN
Desarrollo en tecnologías específicas Más centrados en el modelo
de negocio
Modeladores
Mantener generadores de código
Evolucionar lenguaje ISML
NUEVOS ROLES
INGENIEROS DE DESARROLLO - FUTURO
CONCLUSIONES
• ISML-MDE tiene el potencial de:Incrementar productividad
Ahorro de costos y tiempo
Mayor competitividad
Disminución de errores
• Sinergia universidad empresaTransferencia PUJ HBT
de conocimiento y dominio tecnológico
pg. 50
TRABAJO FUTURO
pg. 51
Extender ISML para otros propósitos SOA Requerimientos de negocio:
MiDAS: a Model-Driven Approach for Adaptive Software (tesis de doctorado de José Bocanegra)
TRABAJO FUTURO
pg. 52
Extender ISML para generar código en otras tecnologías
.NET
Plataformas móviles
AngularJS
HTML5, CSS3 Alinear con arquitectura de referencia Java
Integrar ISML a la línea de productos
Ejecución proyecto piloto basado en ISML - MDE
Referencias de los proyectos Lion y Lion2
M. C. Franky, J. A. Pavlich-Mariscal, "A Method to Achieve Automation in the Development of Web-Based Software Projects" ICIW 2014: The Ninth International Conference on Internet and Web Applications and Services. July 2014 - Paris, France.
M. C. Franky, J. A. Pavlich-Mariscal, L. Giral, A. Barraza-Urbina, L. Barrera, A. Zambrano, "Achieving Software Reuse and Integration in a Large-scale Software Development Company: Practical Experience of the Lion Project”, ACM SIGSOFT Software Engineering Notes, Volume 40 Issue 4, July 2015.
M. C. Franky, J. A. Pavlich-Mariscal, M. C. Acero, A. Zambrano, J. C. Olarte, J. L. Camargo, J. N. Pinzón: “ISML: Un Lenguaje y un Ambiente MDE para modelar y generar aplicaciones web con integración de componentes de legado”, 10CCC: Décimo Congreso Colombiano de Computación. Bogotá, Colombia. Septiembre de 2015.
pg. 53