Eclipse Party Toulouse - EEF and Acceleo

Post on 04-Jul-2015

2.090 views 2 download

Transcript of Eclipse Party Toulouse - EEF and Acceleo

Génération JavaEEavec

EEF et Acceleo

Frédéric Madiot - Obeo

(twitter: @fmadiot)

© C

opyr

ight

201

1 O

beo

De l'intention au code

«Gérer des personnes ayant un nom, un prénom et une date de

naissance»

Person.javaIPerson.javaPersonDAO.javaperson.hbm.xml

hibernate.cfg.xmlstruts-config.xmlPersonSearch.jspPersonList.jspPersonDetail.jspPersonForm.java

PersonSearchAction.java...

Hibernate / Spring / Struts

© C

opyr

ight

201

1 O

beo

Model-Driven Development

Automatiser la production de code à partir de modèles

Edition de modèles

Générationde code

Codage descompléments

Efficacité de la modélisation ? Adaptabilité ?

Traçabilité Code / Modèle ?

© C

opyr

ight

201

1 O

beo

L'approche DSL

Gérer la complexité

Restreindre les concepts manipulés au strict nécessaire

Utiliser le vocabulaire des personnes en charge de la modélisation

Cadrer les développements

Produire du code conforme aux choix techniques

Eviter le codage répétitif

Cadrer la modélisation

Suivre la démarche définie sur le projet

Outiller l'édition et l'exploration de modèles

5

© C

opyr

ight

201

1 O

beo

Principe

Définition du domaine

Choix des éditeurs

Exploitation des modèles

1

23

Vocabulaire métier Concepts Relations Propriétés

Types de représentation Graphique Textuelle Tabulaire Arborescente Formulaire

Outils MDE Générateurs Validateurs Comparateurs Transformateurs etc

© C

opyr

ight

201

1 O

beo

Entités métier

Block : conteneur d'entités

Entity : entité du domaine

Attribute : propriété d'une entité

Reference : lien reliant deux entités

Inheritance : relation d'héritage

Composition : relation de contenance

Exemples de DSL "SI"

Cinématique de navigation

Scenario : enchaînement d'écrans

Screen : écran

Transition : passage d'un écran à un autre

Action : action métier ou action IHM

SOA (Composants et Services)

Component

Service

Operation

DTO

© C

opyr

ight

201

1 O

beo

Eclipse Modeling Project

Projet Top Level Eclipse Modeling Framework

EMF Core, CDO, Compare, Query

Graphical Modeling Project

GMF, Graphiti

Model 2 Text

Jet, Acceleo, XPand2

Model 2 Model

ATL

Textual Modeling Framework

Xtext

Model Development Tools

UML2, OCL, BPMN2, MoDisco, ...

EMF Technology

© C

opyr

ight

201

1 O

beo

DSLs

entity.ecoresoa.ecore

cinematic.ecore

Person

Name

FirstName

BirthDate

String

Date

De l'intention au code

«Gérer des personnes ayant un nom, un prénom et une date de

naissance»

Editeurs de modèles

Templates de génération

Person.javaIPerson.javaPersonDAO.javaperson.hbm.xml

hibernate.cfg.xmlstruts-config.xmlPersonSearch.jspPersonList.jspPersonDetail.jspPersonForm.java

PersonSearchAction.java...

© C

opyr

ight

201

1 O

beo

Modelisation graphique

GMF

© C

opyr

ight

201

1 O

beo

Modélisation textuelle

XText

© C

opyr

ight

201

1 O

beo

Modélisation arborescente

Browser MoDisco

© C

opyr

ight

201

1 O

beo

Modélisation en mode formulaire

EEF

Edition des propriétés avec des widgets évolués

Paramétrage du rendu graphique

Approche Master-Detail

Intégration complète et native EMF

© C

opyr

ight

201

1 O

beo

Principe EEF

Génération de l'éditeur guidée par des modèles

© C

opyr

ight

201

1 O

beo

Indigo -> EEF 1.0

Rich text widget

Convergence vers EMF.edit

Génération du code des éditeurs EMF avec Acceleo

Héritage des customisations natives EMF

Intégration dans le package Modeling

Amélioration de la robustesse

Sortie du statut incubation

© C

opyr

ight

201

1 O

beo

Person

Name

FirstName

BirthDate

String

Date

De l'intention au code

«Gérer des personnes ayant un nom, un prénom et une date de

naissance»

Editeurs de modèles

Templates de génération

Person.javaIPerson.javaPersonDAO.javaperson.hbm.xml

hibernate.cfg.xmlstruts-config.xmlPersonSearch.jspPersonList.jspPersonDetail.jspPersonForm.java

PersonSearchAction.java...

DSLs

entity.ecoresoa.ecore

cinematic.ecore

© C

opyr

ight

201

1 O

beo

Acceleo

Principes

Templates + OCL + Java

Initialisation automatique à partir d'un exemple de code

Zones de code protégé

Surcharge de templates

Environnement d'édition des générateurs

Complétion

Colorisation syntaxique

Profiling

Debugging

Environnement d'exécution

Vue Result

© C

opyr

ight

201

1 O

beo

Entity -> Hibernate

"POJO"

Interface "DAO"

Fichiers de mapping

Génération de 2 type d'impl

Directe (Old School)

Spring

Tests unitaires

Script de création de schéma SQL

Exemples de générateurs JavaEE

SOA -> Spring

Pour chaque service du modèle

Une interface Java

Un squelette d'implémentation

Les classes DTOs

Descripteurs XML réalisant le lien entre les différentes couches

Cinematic -> Struts

Formulaires, Actions

JSPs, CSS, JS

struts-config.xml

Tiles-def + validation

© C

opyr

ight

201

1 O

beo

Offres Obeo complémentaires

Acceleo Traceability

Prévisualisation

Gestion du code hors balises

Traçabilité code -> modèle

Traçabilité modèle -> code

Traçabilité code -> template

Acceleo Premium

Support

Acceleo Traceability

Long Term Support

© C

opyr

ight

201

1 O

beo

Indigo -> Acceleo 3.1

Evolutions du langage de templates

Gestion des commentaires

Documentation affichée dans la complétion et le hover

© C

opyr

ight

201

1 O

beo

Indigo -> Acceleo 3.1

Edition des templates

Meilleure détection d'erreurs

Gestion des tags TODO et FIXME

© C

opyr

ight

201

1 O

beo

Indigo -> Acceleo 3.1

Edition des templates

Outline amélioré

Options de refactoring

extract as query, pull up, generate documentation

Nouveau wizard de création de projet

Intégration dans une chaîne de build

Génération de fichiers Ant et Maven

Amélioration des performances

Optimisations du moteur

Sérialisation des templates en format binaire (option)

© C

opyr

ight

201

1 O

beo

Merci !

Acceleo

www.eclipse.org/acceleo

EEF

www.eclipse.org/modeling/emft/?project=eef

ObeoNetwork

www.obeonetwork.com

Blogs

http://fmadiot.blogspot.com/

http://mariot-thoughts.blogspot.com/

http://eclipsemde.blogspot.com/

http://sbegaudeau.tumblr.com/

http://eef-modeling.blogspot.com/