230 likes | 373 Views
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.
E N D
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 • 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.
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).
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.
Automatización de tareas repetitivas Tareas identificadas Fuente:
Automatización de tareas repetitivas Solución
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:
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
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
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.
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
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
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
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.
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]
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.
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).
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
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.
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.
Hexacta Booster General Desarrolladores: Jesica Marquez Virginia Martz Gisela Rivarola Federico Martín Rodriguez Lucas Tenconi
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