La Ingeniería Dirigida por Modelos (MDE) logra en las...

54
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

Transcript of La Ingeniería Dirigida por Modelos (MDE) logra en las...

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

El Problema

pg. 4

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

• Situación inicial:Cada proyecto se programa de forma manual

Esto toma varias mesespg. 9

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

Documentación Maven de la empresa

pg. 18

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

• Ejemplo de proyecto generado en ejecución(con 6 componentes acoplados)

pg. 24

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

Entidades

pg. 31

Páginas

pg. 32

Página:

Controladores

Controlador:

pg. 33

ServiciosControlador:

Servicio: (modela servicios estándares o componentes Lion o también

servicios de negocio por desarrollar)

ISML – principales elementos del Metamodelo

pg. 35

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

Generador de CRUD

• Transformador de modelos

¿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

Proyecto generado a partir de un modelo ISML con uso de componentes

pg. 41

RESULTADOS Y CONCLUSIONES

• 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

¿Preguntas?