1 / 23

Hexacta Booster

Hexacta Booster. [logotipo del cliente]. www.hexacta.com Una Empresa CMM - Nivel 4. Buenos Aires, Julio 2009. Agenda. Organización Información general Objetivos del proyecto Descripción de problemas Trabajo realizado Arquitectura Demostración. Hexacta Booster. Objetivos.

Download Presentation

Hexacta Booster

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Hexacta Booster [logotipo del cliente] www.hexacta.com Una Empresa CMM - Nivel 4 Buenos Aires, Julio 2009

  2. Agenda • Organización • Información general • Objetivos del proyecto • Descripción de problemas • Trabajo realizado • Arquitectura • Demostración

  3. Hexacta Booster Objetivos • Automatizar tareas manuales repetitivas. • Promover estándares de desarrollo en Hexacta. • Proveer una solución para la automatización de nuevas tareas. • Agilizar tareas recurrentes. • Proveer una base de conocimiento. • Mejorar la calidad del desarrollo minimizando la cantidad de potenciales defectos debido a repetición manual de tareas. • Integración de “best-practices” de tecnologías.

  4. Hexacta Booster Características generales “QuickStart Application” = Generación de proyectos a partir de templates • Booster es un “Quickstart Application ++”. • Posibilita un star up de proyecto rápido y sencillo. • Incorpora generación de código a partir del modelo de la aplicación. • Posee un sistema de templates unificado y colaborativo. • Utilización de metamodelos propios y de terceros para la generación de testing de diseño. • Desde el instante cero los servicios, integración de herramientas, tools de chequeo estático de código se encuentran operativas (estas tareas usualmente insumen las primeras 2 semanas de desarrollo).

  5. Hexacta Booster MDA? • La aproximación Model-Driven Architecture define la funcionalidad de un sistema a partir de un modelo independiente de la plataforma (PIM), usando un lenguaje específico de dominio. • El PIM puede traducirse en uno mas modelos específicos de plataforma computable. • El objetivo de MDA es separar diseño de arquitectura. • Las modificaciones se realizan sobre el PIM, para luego regenerar el código. • En el proceso participan modelos intermedios.

  6. Automatización de tareas repetitivas Tareas identificadas Fuente:

  7. Automatización de tareas repetitivas Solución

  8. Creación de proyectos Maven Archetype Plugin • El Archetype Plugin permite al usuario crear un proyecto Maven 2 a partir de un template de proyecto llamado arquetipo. • Automatiza la creación de templates de proyecto a partir de proyectos existentes (archetype:create-from-project).  • Es posible compartir templates mediante repositorios (característica “network-ready” de Maven). • Estandarización de la estructura de directorio:

  9. Creación de proyectos Arquetipos • Clasificación segun tecnología. • Arquetipos HxBooster: • Hibernate-Spring-Tapestry • JpaHibernate-Spring-Tapestry • Modular-Hibernate-Spring-Struts2 • Modular-JpaHibernate-Spring-Struts2 • Modular-NHibernate

  10. Creación de proyectos Arquetipo Hibernate-Spring-Struts2 • Tests de integración mínima. • Dependencias de tecnologías del proyecto y configuración de plugins: • Reportes (checkstyle, cobertura, pmd …). • Deploy (Maven Cargo). • WebTest (Test de navegabilidad). • Estructura modular. 10

  11. Creación de proyectos Arquitectura de servicios • La arquitectura de servicios se compone de una cadena de interceptores o proxies del “servicio entidad”, donde los interceptores son, el servicio de seguridad, manejo de errores y transacciones. • El servicio de aplicación generado a partir de una entidad no tendrá que implementar cuestiones referentes a los servicios de sistema citados.

  12. Booster Code Generator Engine de generación • BoosterCodeGenerator contiene la lógica de generación para código de persistencia, servicios y vista. Es el motor de generación de HxBooster. • La generaciones se realizan a partir de un meta modelo inferido del modelo original de la aplicación. • Configuration: modela la configuracion actual de generación. • ProjectConfiguration: modela configuración de tecnologías del proyecto. <<Engine>> Booster Project Configuration Configuration

  13. Booster Code Generator Meta-Modelos Net Model Java Model • Un modelo es una abstracción de un fenómeno en el mundo real; un metamodelo es otra abstracción que destaca ciertas propiedades del mismo modelo. Meta ModelBuilder • ORM Model es un modelo que mantiene propiedades necesarias para construir mappings de frameworks ORM. Meta Model ORM ModelBuilder DAO Generator ORM Model • Mapping Generator es un generador de archivos de mapeo para una tecnología de ORM específica. ServiceGenerator View Generator MappingGenerator

  14. Booster Code Generator Generaciones soportadas • Proyectos .Net • Persistencia • NhibernateMappings • Nhibernate DAOS • DAOS tests • Proyectos Java • Persistencia: • HibernateMappings • Hibernate DAOS • Spring DAOS • DAOS tests (Junit 3/4) • Spring beans • Servicio: • Servicios • DTO interface (DynaDTO) • Servicios tests (Junit 3/4) • Spring beans • Vista: • CRUD tables (Struts 2) • Struts 2 Actions • Actionsconfiguration • Spring beans

  15. Clientes Booster Evolución • Como primera instancia BoosterCodeGenerator se lo visualiza como aplicación de consola. • Como la creación de proyectos a partir archetypes desencadena en proyectos M2, y dado que el framework de plugins M2 se adapta correctamente para el desarrollo de un cliente booster se implementa maven-booster-plugin. • En busca de mayor usabilidad, se desarrolla un booster-plugin para Eclipse y un prototipo para Visual Studio.

  16. Cliente Maven 2 Maven-booster-plugin • Un plugin Maven provee un conjunto de metasquepueden ser ejecutadasusando la siguientesintáxis: • mvn [plugin-name]:[goal-name] • Generación de proyectos simplificada: • mvnbooster:generate-HSS -DprojectName=NAME • [-DgroupId=GROUPID] • [-Dversion=VERSION] • Generación de DAOS: • mvnbooster:gen-all-dao • mvnbooster:gen-dao • -Dentity=ENTITY • [-Dattributes=className1:attrib1,.. • ,attribN;...;classNameN:attrib1,...,attribN] • [-DmappingHierarchy=entitybranch/allhierarchy]

  17. Cliente Eclipse eclipse-booster-plugin • Motivaciones: • Maven resulta ideal para generar nuevos proyectos a partir de archetypes, pero carece de usabilidad cuando debemos realizar generaciones a partir de una entidad. • Los templates de BoosterCodeGenerator son fijos y no se provee un mecanismo para editar o reemplazar templates. • El entorno de desarrollo de plug-in para eclipse provee un conjunto de apis-plugins que posibilitarían la automatización de nuevas tareas. • Reutilización de wizards y plugins.

  18. eclipse-booster-plugin Templetizador de texto • Integrado en IDE: • A partir de una selección de texto es posible crear un template en el momento. • Aplicación y búsqueda ágil de templates. • Herramienta colaborativa: • Permite exportar/importar templates. • Configurable con repositorio remoto. • Reutiliza componentes de eclipse. • Aplicable sobre cualquier editor de eclipse. • Posibilita modificar templates de hxBooster (Meta-Template System).

  19. eclipse-booster-plugin Meta Template System • Meta-template System es engine de templates de HxBooster. • El sistema de templates puede configurase con distintos tipos de repositorios. • Diferentes instancias de Meta-Template System podrían configurarse para que utilicen un repositorio común. Meta Template System Booster CodeGenerator Repository eclipse-booster-plugin

  20. Testing de diseño Cobertura de RuntimeException • Puede ocurrir la situación donde un desarrollador elimine una sentencia que levanta una RuntimeException. • Esta funcionalidad permite verificar si toda RuntimeException que se levanta en el proyecto posee un test de excepción. • Utiliza eclipse search api. • Una vez detectados los métodos no cubiertos, se inicia un wizard de refactoring el cual permite introducir en los TestCase los esqueletos de test de excepción.

  21. Funcionalidades adicionales • Generación de métodos recurrentes: • Integración de Commons-Eclipse. • Permite generacion automática de los siguientes métodos usando builders de commons-lang: • toString() • hashcode() • equals(Object) • compareTo(Object) • Generación de llamadas a métodos privados: • Cuando queremos testear un método privado, o bien un test involucra una llamada a método privado. • Resuelve la problemática de armado de parámetros formales y actuales para el código de llamada a métodos privados vía reflection.

  22. Hexacta Booster General Desarrolladores: Jesica Marquez Virginia Martz Gisela Rivarola Federico Martín Rodriguez Lucas Tenconi

  23. BRASIL ARGENTINA Cardoso de Melo 1470 - 8 Vila Olimpia | San Pablo CEP (04548004) tel: 55+11+3045 2193 Arguibel 2860 Capital Federal (C1426DKB) tel: 54+11+4779 6400 www.hexacta.com

More Related