Download Estrategia Maven para la automatización del desarrollo de software
Document related concepts
no text concepts found
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 lfranky@javeriana.edu.co ainfante@heinsohn.com.co 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 <dependencies> <dependency> <groupId>com.sun.facelets</groupId> <artifactId>jsf-facelets</artifactId> </dependency> dependencia de librería de terceros <dependency> <groupId>com.heinsohn.lion.components.security</groupId> <artifactId>lion-securityWeb</artifactId> </dependency> . . . </dependencies> 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 <menu name="Project Modules"> <item name= "NotificationMain" href="../lion-notificationMain/index.html" /> <item name="Notification Hot" href="../lion-notificationHot/index.html" /> <item name="Notification Web" href="../lion-notificationWeb/index.html" /> <item name="Notification Web Pages" href="../lion-notificationWeb-pages/index.html" /> </menu> • enlaces a manuales técnicos <menu name="Manuales"> <item name="Instalacion" href="PT-INGE-027-Manual_de_instalacion_notification.doc" /> <item name= "Usuario" href="PT-INGE-028-Manual_de_usuario_notification.doc" /> </menu> 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