Eclipse Party Toulouse - EEF and Acceleo

22
Génération JavaEE avec EEF et Acceleo Frédéric Madiot - Obeo (twitter: @fmadiot)

Transcript of Eclipse Party Toulouse - EEF and Acceleo

Page 1: Eclipse Party Toulouse - EEF and Acceleo

Génération JavaEEavec

EEF et Acceleo

Frédéric Madiot - Obeo

(twitter: @fmadiot)

Page 2: Eclipse Party Toulouse - EEF and Acceleo

© 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

Page 3: Eclipse Party Toulouse - EEF and Acceleo

© 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 ?

Page 4: Eclipse Party Toulouse - EEF and Acceleo

© 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

Page 5: Eclipse Party Toulouse - EEF and Acceleo

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

Page 6: Eclipse Party Toulouse - EEF and Acceleo

© 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

Page 7: Eclipse Party Toulouse - EEF and Acceleo

© 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

Page 8: Eclipse Party Toulouse - EEF and Acceleo

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

Page 9: Eclipse Party Toulouse - EEF and Acceleo

© C

opyr

ight

201

1 O

beo

Modelisation graphique

GMF

Page 10: Eclipse Party Toulouse - EEF and Acceleo

© C

opyr

ight

201

1 O

beo

Modélisation textuelle

XText

Page 11: Eclipse Party Toulouse - EEF and Acceleo

© C

opyr

ight

201

1 O

beo

Modélisation arborescente

Browser MoDisco

Page 12: Eclipse Party Toulouse - EEF and Acceleo

© 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

Page 13: Eclipse Party Toulouse - EEF and Acceleo

© C

opyr

ight

201

1 O

beo

Principe EEF

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

Page 14: Eclipse Party Toulouse - EEF and Acceleo

© 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

Page 15: Eclipse Party Toulouse - EEF and Acceleo

© 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

Page 16: Eclipse Party Toulouse - EEF and Acceleo

© 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

Page 17: Eclipse Party Toulouse - EEF and Acceleo

© 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

Page 18: Eclipse Party Toulouse - EEF and Acceleo

© 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

Page 19: Eclipse Party Toulouse - EEF and Acceleo

© 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

Page 20: Eclipse Party Toulouse - EEF and Acceleo

© 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

Page 21: Eclipse Party Toulouse - EEF and Acceleo

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

Page 22: Eclipse Party Toulouse - EEF and Acceleo

© 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/