Estrategia Maven para la automatización del desarrollo de software mediante componentes reutilizables, generadores y acople a nuevos proyectos

Estrategia Maven para la automatización del desarrollo de software mediante componentes reutilizables, generadores y acople a nuevos proyectos María C

1 downloads 99 Views 1MB Size

Story Transcript

Estrategia Maven para la automatización del desarrollo de software mediante componentes reutilizables, generadores y acople a nuevos proyectos María Consuelo Franky

Alvaro Javier Infante

Pontificia Universidad Javeriana

Heinsohn Business Technology

[email protected]

[email protected]

Cámara de Comercio de Bogotá – Centro Empresarial Chapinero

XXXIII Salón de Informática ACIS

Agenda 1.

Contexto: el proyecto Lion (universidad - empresa - Colciencias)

2.

Estrategias generales para lograr reutilización y automatización en los proyectos de software

3.

Otra estrategia para lograr reutilización y automatización basada en Maven

4.

Reutilización de componentes mediante Maven

5.

Generación de nuevos proyectos mediante Maven

6.

Página Web de un proyecto mediante Maven

7.

Automatización del acople de componentes a un nuevo proyecto

8.

Conclusiones

pag. 2

XXXIII Salón de Informática ACIS

1. Contexto: el proyecto Lion (universidad - empresa - Colciencias)

pag. 3

XXXIII Salón de Informática ACIS

Proyecto Lion •

«Soporte al desarrollo de aplicaciones empresariales mediante frameworks de generación»



Realizado por el grupo SIDRe (Pontificia Universidad Javeriana) y Heinsohn Business Technology con cofinanciación de Colciencias



Objetivo: Aumentar la automatización y productividad de la empresa (sector de software) pag. 4

XXXIII Salón de Informática ACIS



Participantes en el proyecto Lion: Persona

U. Javeriana

María Consuelo Franky

Investigador principal

Leonardo Giral Jaime Pavlich

Contraparte en Heinsohn Coinvestigador

Alvaro Infante Luisa Barrera

Heinsohn

Asesor por parte de HBT desarrolladores

Andrea Barraza Cristian Fernández (antes: Rubén Betancur)

desarrolladores

Angee Zambrano pag. 5

XXXIII Salón de Informática ACIS

Motivación •

No basta con la simple reutilización de componentes

estandarización

para lograr beneficios de disminución en tiempos y costos en el desarrollo de nuevos proyectos



También se requiere que esos componentes se puedan acoplar de manera rápida y simple.



En últimas se busca la automatización en el acople de componentes a un nuevo proyecto para evitar que los desarrolladores tengan que seguir procedimientos manuales



Estrategia basada en Maven logra tal reutilización y automatización en el acople

reutilización

automatización

Mayor agilidad en los proyectos

pag. 6

XXXIII Salón de Informática ACIS

Estado inicial Framework Lion: Componentes de funcionalidades comunes para los proyectos Java EE C1 seguridad

C3 proceso Batch

C2 auditoría

acople manual podía tardar 1 a 3 semanas de trabajo

nuevo proyecto Java EE pag. 7

XXXIII Salón de Informática ACIS

Estado final Componentes de funcionalidades comunes para los proyectos Java EE bajo estructura Maven C1 seguridad

C2 auditoría

LionWizard

C3 proceso Batch

acople en solo algunas horas

nuevo proyecto Java EE (bajo estructura Maven) pag. 8

XXXIII Salón de Informática ACIS

2. Estrategias generales para lograr reutilización y automatización en los proyectos de software

pag. 9

XXXIII Salón de Informática ACIS

Reutilización y automatización mediante servicios web •

Contexto: integración de aplicaciones existentes para implantar procesos de negocio

aplicación Java

problema: heterogeneidad de las aplicaciones solución: exponer funcionalidad de cada aplicación como servicios web que atienden pedidos bajo un protocolo estándar



Los servicios web son componentes reutilizables con los siguientes beneficios Disponibles para cualquier aplicación cliente independiente de su tecnología

aplicación .NET

http-SOAP

Aplicación cliente (PHP)

No hay que acoplarlos a las aplicaciones clientes



Costo de los servicios web como componentes Overhead de invocarlos

pag. 10

XXXIII Salón de Informática ACIS

Reutilización y automatización mediante generadores de componentes •

Generador de un componente Genera código fuente Lo acopla a un proyecto destinatario Ejemplo: generador de un módulo de seguridad para Java EE



Técnicas para construir generadores de código Técnica de plantillas: • reemplazan propiedades por valores en archivos plantillas para obtener el código fuente que será colocado como un archivo fuente en el proyecto destinatario

Técnica de Expresiones Regulares: • Indican patrones para buscar en el proyecto destinatario y reemplazarlos por código fuente tomado de un proyecto modelo pag. 11

XXXIII Salón de Informática ACIS

proyecto destinatario generador de módulo de seguridad basado en Exp. Reg. proyecto modelo con módulo de seguridad



proyecto destinatario ahora con módulo de seguridad

Ventajas de los generadores de código el conjunto de generadores constituye un framework de generación Materializan buenas prácticas de la empresa con mejora continua Favorece la reutilización de componentes generadores por múltiples proyectos



Desventajas Costo de mantener y de depurar las plantillas o las Expresiones Regulares pag. 12

XXXIII Salón de Informática ACIS

Reutilización y automatización mediante el desarrollo dirigido por Modelos (MDA-MDE) •

Desarrollo de proyectos de software basándose en diseños expresados en un lenguaje de modelado requiere definición del lenguaje mediante un meta-modelo que puede ser textual y/o gráfico el modelo puede incluir componentes reutilizables y se expresa de forma independiente a la tecnología se requiere transformador por cada tecnología contemplada que genere el código fuente a partir del modelo



Ventajas poder expresar una sola vez el diseño de un proyecto a través de un modelo y luego obtener su implementación en múltiples tecnologías el desarrollo de los proyectos se simplifica y es más mantenible



Costo definición de lenguajes de modelado y construcción de transformadores

pag. 13

XXXIII Salón de Informática ACIS

Reutilización y automatización mediante Líneas de Productos de Software •

Ingeniería de dominio busca elementos reutilizables que deben ser expuestos como activos con interfaces bien definidas establece las relaciones de composición y de dependencias que hay entre esos activos



Ingeniería de la aplicación se centra en la elaboración de productos utilizando los activos



Ventajas es fácil lograr nuevos productos mediante composición de los activos



Costo adecuación de los activos previamente existentes para lograr tener las interfaces requeridas por la Línea de Productos

pag. 14

XXXIII Salón de Informática ACIS

3. Otra estrategia para lograr reutilización y automatización basada en Maven (aplicada en el proyecto Lion)

pag. 15

XXXIII Salón de Informática ACIS

Facilidades generales de Maven •

Permite realizar las tareas del ciclo de vida de los proyectos compilación, empaque, pruebas, publicación en un servidor, etc. disponibilidad de plugins para realizar cada tarea



Permite declarar y administrar las dependencias de librerías que tiene un proyecto archivo pom.xml : declara dependencias y características de un proyecto las librerías para Maven son artefactos identificados por nombre, grupo y versión residen en repositorios universales en sitios de Internet o en repositorios propios de la empresa que utiliza tales artefactos. pag. 16

XXXIII Salón de Informática ACIS

El archivo pom.xml (Project Object Model) de un proyecto indica sus dependencias Describe todo lo relacionado al proyecto: nombre, versión, paquetes, dependencias, módulos, y mucho mas

Coordenadas, relaciones multimódulo, dependencias.

Tareas del ciclo de vida: localización de directorios, plugins para manejar las fases del ciclo de vida, etc.

Documentación del proyecto

Perfiles (profiles) para adaptar el proyecto a diferentes ambientes de ejecución

Tomado de: Sonatype Company. 2008. “Maven: The Definitive Guide”. O'Reilly. 2008

pag. 17

XXXIII Salón de Informática ACIS



Ejemplo de un pom.xml: coordenadas del proyecto

dependencias de librerías (para fases específicas del ciclo de vida)



Todo pom.xml hereda de un super pom.xml que indica repositorios de librerías, plugins disponibles para cada fase del ciclo de vida, etc. pag. 18

XXXIII Salón de Informática ACIS

Organización estándar de un proyecto Maven

src/main/java

Fuentes de la aplicación o librería

src/main/resources

Recursos de la aplicación

src/main/filters

Archivos de filtro

src/main/assembly

Descriptores de ensamblaje

src/main/config

Archivos de configuración

src/main/webapp

Fuentes de aplicación Web

src/test/java

Fuentes de pruebas

src/test/resources

Recursos de las pruebas

src/test/filters

Archivos de filtro para pruebas

src/site

Sitio web de la documentación del proyecto

pag. 19

XXXIII Salón de Informática ACIS

Un solo comando Maven ejecuta muchas tareas del ciclo de vida de un proyecto •

Los goals de los plugins se ejecutan en las fases asociadas, invocando el comando: mvn install



Equivalente al comando mvn

plugin

resources compiler resources compiler surefire jar : jar

: : : : :

resources compile testResources testCompile test

goal Tomado de: Sonatype Company. 2008. “Maven: The Definitive Guide”. O'Reilly. 2008

pag. 20

XXXIII Salón de Informática ACIS

Proyecto Maven multi-módulo

Super POM Módulo padre Submódulo 1 (web)

Submódulo 2 (negocio)

Submódulo 3 (persistencia)



Cada módulo o submódulo tiene un pom.xml donde indica sus coordenadas



El módulo padre indica la lista de submódulos y cada submódulo indica las coordenadas de su padre



Las declaraciones de dependencias y de plugins del módulo padre son heredadas por los submódulos pag. 21

XXXIII Salón de Informática ACIS

4. Reutilización de componentes mediante Maven

pag. 22

XXXIII Salón de Informática ACIS

Reutilización de componentes de negocio con Maven •

Si un componente es simplemente una librería se puede registrar como artefacto Maven con coordenadas Se registra en el repositorio Maven de la empresa El pom.xml de un proyecto puede referenciar la librería como dependencia



Si el componente es un proyecto Maven multi-módulo Genera varios artefactos Maven (por ejemplo varios Jar) que se registran en el repositorio Maven Cada submódulo de un proyecto usuario (también Maven) puede referenciar como dependencias uno o varios de esos artefactos

pag. 23

XXXIII Salón de Informática ACIS

Cómo se potenció la reutilización de componentes en el proyecto Lion •

Ejemplo: componente de seguridad Ofrece varios EJBs de negocio y varias páginas web para soportar casos de uso de seguridad multitenant (autenticación, cambio de contraseña, administración de compañías, perfiles, usuarios, etc.) Se transformó en un proyecto Maven multi-módulo: un módulo padre más un submódulo por cada capa que produce un artefacto Maven Super POM Módulo padre Submódulo WebPages

Submódulo Web

Submódulo Hot

produce un .war con todas las páginas

produce un .jar con los ejb de presentación

produce un .jar con los ejb de negocio

Submódulo Main

produce un .jar con todas las entidades persistentes de negocio

...

pag. 24

XXXIII Salón de Informática ACIS



Proyecto que utiliza el componente de seguridad También es proyecto Maven multi-módulo El submódulo correspondiente a una capa declara como dependencia en su pom.xml el artefacto correspondiente del componente de seguridad com.sun.facelets jsf-facelets

dependencia de librería de terceros

com.heinsohn.lion.components.security lion-securityWeb . . . dependencia del submódulo web del componente de seguridad

pag. 25

XXXIII Salón de Informática ACIS

Ventajas para la empresa de utilizar su propio repositorio Maven •

Componentes propios de la empresa En el repositorio Maven de la empresa se registran estos componentes facilitando su reutilización por cualquier proyecto Se organizan las distintas versiones de los componentes y los nuevos proyectos toman siempre la última versión de un componente



Librerías utilitarias También se registran en el repositorio Maven de la empresa evitando tener que traerlas de un repositorio remoto El tráfico de librerías se elimina de los repositorios de versiones

pag. 26

XXXIII Salón de Informática ACIS

Arquitectura de repositorios Maven para una empresa: caso de Heinsohn Business Tecnology (HBT) obtener librería de terceros

repositorios remotos

servidor Maven de HBT repositorio Archiva de HBT cache de HBT

proyecto 2

proyecto 1 SNAPSHOT

RELEASE

SNAPSHOT

RELEASE

proyecto 1

versiones RELEASE de otros proyectos

pag. 27

XXXIII Salón de Informática ACIS

5. Generación de nuevos proyectos mediante Maven

pag. 28

XXXIII Salón de Informática ACIS

Generadores de la estructura inicial de un proyecto •

A partir de una aplicación modelo de la empresa, Maven permite construir un arquetipo que es un generador de proyectos



Pasos para construir un arquetipo Maven e invocarlo como generador:

Tomado de: http://maven.apache.org/archetype/maven-archetype-plugin/

pag. 29

XXXIII Salón de Informática ACIS

Proyecto Lion: construcción de arquetipos Maven que son generadores de proyectos Java EE •

Proyecto Lion: se partió de un proyecto modelo Java EE con estructura Maven multi-módulo para llegar a un generador que crea proyectos con esa misma estructura.



Estructura Maven multi-módulo del proyecto generado

pag. 30

XXXIII Salón de Informática ACIS

6. Página Web de un proyecto mediante Maven

pag. 31

XXXIII Salón de Informática ACIS

Facilidades para generar la documentación completa de un proyecto •

Plugin site de Maven mvn site: genera una página web con la descripción del proyecto utliza un descriptor site.xml que indica • identidad del proyecto • menú de información de submódulos, dependencias, plugins

• enlaces a manuales técnicos pag. 32

XXXIII Salón de Informática ACIS

Ejemplo de página web generada por Maven (proyecto Lion)

pag. 33

XXXIII Salón de Informática ACIS

pag. 34

XXXIII Salón de Informática ACIS

7. Automatización del acople de componentes a un nuevo proyecto

pag. 35

XXXIII Salón de Informática ACIS

Automatización mediante una herramienta •

Herramienta LionWizard

o Permite establecer propiedades de un nuevo proyecto y generarlo (estructura Maven) o En minutos puede acoplar uno o varios componentes al nuevo proyecto (con estructura Maven) o Acople total en máximo algunas horas, contando algunas labores manuales como la publicación en consola pag. 36

XXXIII Salón de Informática ACIS

Pasos en el uso de la herramienta LionWizard a) Establecer propiedades para generar un nuevo proyecto Tipos de Propiedades o Selección del arquetipo de Generación (ej: con o sin módulo de seguridad) o Propiedades del Proyecto Usuario (ej: nombre de la Aplicación) o Propiedades para Seleccionar un perfil de Servidor de aplicaciones y un perfil de BD (ej: JBoss y Postgresql ) o Propiedades del Perfil Seleccionado (ej: versión del Driver de la Base de Datos) pag. 37

XXXIII Salón de Informática ACIS

b) Generación de un nuevo proyecto Java EE para el tipo de servidor y base de datos seleccionados

LionWizard

nuevo proyecto Java EE (bajo estructura Maven) pag. 38

XXXIII Salón de Informática ACIS



Estructura Maven multi-módulo del proyecto generado

Propiedades utilizadas para generar el proyecto Histórico de acople de componentes

pag. 39

XXXIII Salón de Informática ACIS

c) Acoplamiento de uno o varios componentes Maven al nuevo proyecto C1 seguridad

C2 auditoría

C3 proceso Batch

LionWizard acople en minutos

proyecto Java EE con componentes acoplados

d) Acople total en máximo algunas horas, contando algunas labores manuales (ej: publicar en la consola) pag. 40

XXXIII Salón de Informática ACIS



proyecto generado en funcionamiento (con 2 componentes acoplados)

pag. 41

XXXIII Salón de Informática ACIS

Extensibilidad de la herramienta LionWizard •

Cada nuevo componente que se quiera acoplar al proyecto generado debe aportar un archivo xml con las operaciones de acoplamiento operaciones de agregar en los pom.xml del proyecto referencias a los submódulos del componente como dependencias ej: componente de seguridad

proyecto generado

Módulo padre

Submódulo Hot Submódulo Web Submódulo WebPages

operaciones de modificar descriptores del proyecto

Submódulo Main

pag. 42

XXXIII Salón de Informática ACIS

8. Conclusiones

pag. 43

XXXIII Salón de Informática ACIS

Beneficios de Maven •

Un repositorio Maven permite guardar las versiones de los componentes para lograr su máxima reutilización por parte de los proyectos.



Los arquetipos Maven se contruyen a partir de proyectos modelo y permiten generar nuevos proyectos con diferentes estructuras.



Maven ofrece facilidades avanzadas como la generación de una página web de un proyecto con toda la documentación.



El acople de componentes a un proyecto se puede automatizar cuando todos los elementos tienen estructura Maven. pag. 44

XXXIII Salón de Informática ACIS

Medición de la mejora obtenida con el proyecto Lion •

Cuánto tiempo se demora un proyecto Java EE en acoplar componentes de funcionalidades comunes ? antes del proyecto Lion: proyecto

Core Cartera

# de tiempo total componentes (horas) acoplados

tiempo promedio por componente (horas)

13

278

21

Software Prima media

2

36

18

Core Previsional

4

560

140

después del proyecto Lion: • Acople inicial de 9 componentes en 5 minutos

34 segundos por

componente) • Acople total incluyendo algunas labores manuales: en menos de 1 día (24 horas) menos de 3 horas por componente pag. 45

XXXIII Salón de Informática ACIS

Resultados e impactos del proyecto Lion •

Aumento en la productividad de la empresa, ahorro en costos y tiempos, y mayor competitividad en el mercado.



Sinergia universidad-empresa con transferencia de conocimiento de la universidad hacia la empresa y con transferencia tecnológica de la empresa hacia la universidad.

pag. 46

XXXIII Salón de Informática ACIS

Próximo proyecto U. Javeriana - Heinsohn



“Desarrollo de nuevos métodos y tecnologías para acelerar la construcción de software: un enfoque basado en modelos (MDE) y frameworks de generación avanzados” diseño de los proyectos de software mediante modelos que incluyen componentes reutilizables transformación a código fuente de tecnologías específicas

pag. 47

XXXIII Salón de Informática ACIS

Bibliografía •

Sobre Maven: Sonatype Company. 2008. Maven: The Definitive Guide. O'Reilly. 2008



Sobre el proyecto Lion: Franky, M. C., and Pavlich-Mariscal, J. A. Improving Implementation of Code Generators: A Regular-Expression Approach. In CLEI 2012: XXXVIII Conferencia Latinoamericana en Informática (Medellín, Colombia, Oct. 2012) . IEEE Catalog Number: CFP1225S-ART. 2012 Maria Consuelo Franky, Jaime A. Pavlich-Mariscal, Leonardo Giral, Alvaro Javier Infante, Andrea Barraza-Urbina, Luisa Barrera, Angee Zambrano, Cristián Fernández, and Rubén Darío Betancur, " Achieving Software Reuse and Integration in a Large-scale Software Development Company: Practical Experience of the Lion Project", submitted to IET Software in July 9, 2013.

pag. 48

XXXIII Salón de Informática ACIS



Sobre estrategias para lograr reutilización y automatización en los proyectos de software: Rosen, M., et al. Applied SOA: Service-Oriented Architecture and Design Strategies.Wiley Publishing, Inc. 2008. Friedl, J. Mastering Regular Expressions. O'Reilly. 2002. Mellor, S., Scott, K., Uhl, A. , and Weise, D. MDA Distilled, Principles of Model Driven Architecture, Addison-Wesley Professional. 2004. Kelly S., and Tolvanen, J.-P. Domain-specific modeling. Wiley-IEEE. 2008. Pohl, K. , Böckle, G. , and Linden., F. J. v. d. Software Product Line Engineering: Foundations, Principles and Techniques. Springer-Verlag. 2005. Clements, P., and Northrop, L. Software Product Lines : Practices and Patterns. Addison-Wesley Professional. 2001. C. Parra, L. Giral, A. Infante, and C. Cortés. Extractive SPL adoption using multi-level variability modeling. In Proceedings of the 16th International Software Product Line Conference - Volume 2, SPLC 2012, ACM, pages 99-106, New York, NY, USA, 2012. pag. 49

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.