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

Hexacta Booster

  • Upload
    mina

  • View
    68

  • Download
    0

Embed Size (px)

DESCRIPTION

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 . - PowerPoint PPT Presentation

Citation preview

Page 1: Hexacta Booster

Hexacta Booster

Buenos Aires, Julio 2009

[logotipo del cliente]

www.hexacta.comUna Empresa CMM - Nivel 4

Page 2: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

2

Agenda

8 Organización

8 Información general8 Objetivos del proyecto8 Descripción de problemas8 Trabajo realizado8 Arquitectura8 Demostración

Page 3: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

3

Hexacta Booster

8 Automatizar tareas manuales repetitivas.8 Promover estándares de desarrollo en Hexacta. 8 Proveer una solución para la automatización de nuevas tareas.8 Agilizar tareas recurrentes.8 Proveer una base de conocimiento.8 Mejorar la calidad del desarrollo minimizando la cantidad de

potenciales defectos debido a repetición manual de tareas. 8 Integración de “best-practices” de tecnologías.

Objetivos

Page 4: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

4

Hexacta Booster

8 Booster es un “Quickstart Application ++”.8 Posibilita un star up de proyecto rápido y sencillo.8 Incorpora generación de código a partir del modelo de la aplicación.8 Posee un sistema de templates unificado y colaborativo.8 Utilización de metamodelos propios y de terceros para la generación de

testing de diseño.8 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).

Características generales

“QuickStart Application” = Generación de proyectos a partir de templates

Page 5: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

Hexacta Booster

8 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.

8 El PIM puede traducirse en uno mas modelos específicos de plataforma computable.

8 El objetivo de MDA es separar diseño de arquitectura.8 Las modificaciones se realizan sobre el PIM, para luego

regenerar el código.8 En el proceso participan modelos intermedios.

MDA?

Page 6: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

6

Automatización de tareas repetitivasTareas identificadas

Fuente:

startup de proyecto•Configuración de tecnologías•Integración de tecnologías siguiendo las best-practice de la comunidad•Tests de integración •Integración con IDE•Configuración y herramientas para el uso de métricas

persistencia•DAOS y Orm Mappings

servicio•Servicios, transaccionalidad, seguridad, spring beans.

vista•CRUD Tables, Spring beans, Testing.

Page 7: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

Templates de proyecto•Maven Archetypes

Generación de Código •Modelar objetos de negocio primero.

•Introspección del modelo

•Generar código

Usabilidad•Maven 2 Plug-in•Eclipse Plug-in •Visual Studio Plug-in

7

Automatización de tareas repetitivasSolución

Page 8: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

Creación de proyectos

8

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:

Page 9: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

Creación de proyectos

9

Arquetipos

• Clasificación segun tecnología.

• Arquetipos HxBooster:

Hibernate-Spring-Tapestry

JpaHibernate-Spring-Tapestry

Modular-Hibernate-Spring-Struts2

Modular-JpaHibernate-Spring-Struts2

Modular-NHibernate

Page 10: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

Creación de proyectos

10

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.

Page 11: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

Creación de proyectos

11

Arquitectura de serviciosServicios de aplicacion

Servicios de Sistema

Errores Seguridad Transaccionalidad

1. Servicio de la aplicacion.

(A partir de una entidad)

2. Servicio de la aplicacion.

(A partir de una entidad)

N. Servicio de la aplicacion.

(A partir de una entidad)

• 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.

Page 12: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

Booster Code Generator

12

<<Engine>>Booster

Configuration Project Configuration

Engine de generación

Configuration: modela la configuracion actual de generación.

ProjectConfiguration: modela configuración de tecnologías del proyecto.

• 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.

Page 13: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

Booster Code Generator

13

Meta-Modelos

• 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.

• Mapping Generator es un generador de archivos de mapeo para una tecnología de ORM específica.

Java Model

Net Model

Meta Model Builder

Meta Model ORM

Model Builder

DAO Generator

Service Generator

View Generator

ORM Model

Mapping Generator

• ORM Model es un modelo que mantiene propiedades necesarias para construir mappings de frameworks ORM.

Page 14: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

Booster Code Generator

14

Generaciones soportadas

Proyectos Java Persistencia:

Hibernate MappingsHibernate DAOSSpring DAOSDAOS 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 ActionsActions configurationSpring beans

Proyectos .Net

PersistenciaNhibernate MappingsNhibernate DAOSDAOS tests

Page 15: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

Clientes Booster

15

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>>Maven2

<<Cliente>>Plugin Eclipse

<<Cliente>>Plugin Visual

Studio

<<Cliente>>Command-Line

Custom

<<Engine>>Booster

Page 16: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

Cliente Maven 2

16

Maven-booster-plugin

• Un plugin Maven provee un conjunto de metas que pueden ser ejecutadas usando la siguiente sintáxis:

mvn [plugin-name]:[goal-name]

• Generación de proyectos simplificada:

mvn booster:generate-HSS -DprojectName=NAME [-DgroupId=GROUPID] [-Dversion=VERSION]

• Generación de DAOS:

I. mvn booster:gen-all-dao

II. mvn booster:gen-dao

-Dentity=ENTITY

[-Dattributes=className1:attrib1,..,attribN;...;classNameN:attrib1,...,attribN]

[-DmappingHierarchy=entitybranch/allhierarchy]

Page 17: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

Cliente Eclipse

17

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.

Page 18: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

eclipse-booster-plugin

18

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).

Page 19: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

eclipse-booster-plugin

19

Meta Template System

Meta Template System

Repository

Booster Code Generator

eclipse-booster-plugin

• 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.

Page 20: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

Testing de diseño

20

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.

Page 21: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

Funcionalidades adicionales

21

• 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.

Page 22: Hexacta Booster

Una

empr

esa

CMM

- Ni

vel 4

22

Hexacta Booster

Desarrolladores:

Jesica MarquezVirginia MartzGisela RivarolaFederico Martín RodriguezLucas Tenconi

General

Page 23: Hexacta Booster

www.hexacta.com

Arguibel 2860Capital Federal (C1426DKB) tel: 54+11+4779 6400

ARGENTINA

Cardoso de Melo 1470 - 8Vila Olimpia | San PabloCEP (04548004) tel: 55+11+3045 2193

BRASIL