Hexacta Booster
[logotipo del cliente]
www.hexacta.com
Una Empresa CMM - Nivel 4
Buenos Aires, Julio 2009
Agenda
 Organización
Una empresa CMM - Nivel 4
 Información general
 Objetivos del proyecto
 Descripción de problemas
 Trabajo realizado
 Arquitectura
 Demostración
2
Hexacta Booster
Objetivos
Una empresa CMM - Nivel 4
 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.
3
Hexacta Booster
Características generales
“QuickStart Application” = Generación de proyectos a partir de templates
Una empresa CMM - Nivel 4
 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).
4
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.
Una empresa CMM - Nivel 4
En
el proceso participan modelos intermedios.
Automatización de tareas repetitivas
Una empresa CMM - Nivel 4
Tareas identificadas
Fuente:
6
Automatización de tareas repetitivas
Solución
Templates de
proyecto
•Maven Archetypes
Usabilidad
Una empresa CMM - Nivel 4
•Maven 2 Plug-in
•Eclipse Plug-in
•Visual Studio Plugin
Generación de
Código
•Modelar objetos de
negocio primero.
•Introspección del
modelo
•Generar código
7
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).
Una empresa CMM - Nivel 4
 Estandarización de la estructura de directorio:
8
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
Una empresa CMM - Nivel 4
Modular-NHibernate
9
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).
Una empresa CMM - Nivel 4
Estructura modular.
10
Creación de proyectos
Arquitectura de servicios
Servicios de aplicacion
1. Servicio de la
aplicacion.
(A partir de una
entidad)
Servicios de Sistema
Errores
Seguridad
Transaccionalidad
Una empresa CMM - Nivel 4
• 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.
2. Servicio de la
aplicacion.
(A partir de una
entidad)
N. Servicio de la
aplicacion.
(A partir de una
entidad)
•El servicio de aplicación generado a partir
de una entidad no tendrá que
implementar cuestiones referentes a los
servicios de sistema citados.
11
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.
<<Engine>>
Booster
Una empresa CMM - Nivel 4
Configuration
Project
Configuration
Configuration: modela la
configuracion actual de
generación.
ProjectConfiguration: modela
configuración de tecnologías del
proyecto.
12
Booster Code Generator
Meta-Modelos
Java
Model
Net
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
Model
Builder
Meta
Model
DAO
Generator
Una empresa CMM - Nivel 4
Service
Generator
View
Generator
ORM
Model
Builder
ORM
Model
•ORM Model es un modelo que
mantiene propiedades necesarias
para construir mappings de
frameworks ORM.
•Mapping Generator es un generador
de archivos de mapeo para una
tecnología de ORM específica.
Mapping
Generator
13
Booster Code Generator
Generaciones soportadas
Proyectos Java
Persistencia:
Hibernate Mappings
Hibernate DAOS
Spring DAOS
DAOS tests (Junit 3/4)
Spring beans
Proyectos .Net
Persistencia
Nhibernate Mappings
Nhibernate DAOS
DAOS tests
Una empresa CMM - Nivel 4
Servicio:
Servicios
DTO interface (DynaDTO)
Servicios tests (Junit 3/4)
Spring beans
Vista:
CRUD tables (Struts 2)
Struts 2 Actions
Actions configuration
Spring beans
14
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.
<<Engine>>
Booster
Una empresa CMM - Nivel 4
<<Cliente>>
Maven2
<<Cliente>>
Plugin Eclipse
<<Cliente>>
Plugin Visual
Studio
<<Cliente>>
Command-Line
Custom
15
Cliente Maven 2
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
Una empresa CMM - Nivel 4
[-Dattributes=className1:attrib1,..
,attribN;...;classNameN:attrib1,...,attribN]
[-DmappingHierarchy=entitybranch/allhierarchy]
16
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.
Una empresa CMM - Nivel 4
•Reutilización de wizards y plugins.
17
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.
Una empresa CMM - Nivel 4
•Posibilita modificar templates de hxBooster (Meta-Template
System).
18
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.
Booster Code
Generator
Meta
Template
System
Una empresa CMM - Nivel 4
Repository
eclipse-booster-plugin
19
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 empresa CMM - Nivel 4
•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.
20
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.
Una empresa CMM - Nivel 4
•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.
21
Hexacta Booster
General
Desarrolladores:
Jesica Marquez
Virginia Martz
Gisela Rivarola
Federico Martín Rodriguez
Una empresa CMM - Nivel 4
Lucas Tenconi
22
ARGENTINA
Arguibel 2860
Capital Federal
(C1426DKB)
tel: 54+11+4779 6400
BRASIL
Cardoso de Melo 1470 - 8
Vila Olimpia | San Pablo
CEP (04548004)
tel: 55+11+3045 2193
www.hexacta.com
Descargar

Slide 1 - hexacta