Génération JavaEE avec  EEF et Acceleo Frédéric Madiot - Obeo  (twitter: @fmadiot)
De l'intention au code « Gérer des personnes ayant un nom, un prénom et une date de naissance » Person.java IPerson.java P...
Model-Driven Development <ul><li>Automatiser la production de code à partir de modèles </li></ul>Efficacité de la modélisa...
L'approche DSL <ul><li>Gérer la complexité </li><ul><li>Restreindre les concepts manipulés au strict nécessaire
Utiliser le vocabulaire des personnes en charge de la modélisation  </li></ul><li>Cadrer les développements </li><ul><li>P...
Eviter le codage répétitif </li></ul><li>Cadrer la modélisation </li><ul><li>Suivre la démarche définie sur le projet
Outiller l'édition et l'exploration de modèles </li></ul></ul>
Principe Définition du domaine Choix des éditeurs Exploitation des modèles Vocabulaire métier <ul><li>Concepts
Relations
Propriétés </li></ul>Types de représentation <ul><li>Graphique
Textuelle
Tabulaire
Arborescente
Formulaire </li></ul>Outils MDE <ul><li>Générateurs
Validateurs
Comparateurs
Transformateurs
etc </li></ul>
<ul><li>Entités métier </li><ul><li>Block  : conteneur d'entités
Entity  : entité du domaine
Attribute  : propriété d'une entité
Reference  : lien reliant deux entités
Upcoming SlideShare
Loading in...5
×

Eclipse Party Toulouse - EEF and Acceleo

2,117

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,117
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
71
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Eclipse Party Toulouse - EEF and Acceleo

  1. 1. Génération JavaEE avec EEF et Acceleo Frédéric Madiot - Obeo (twitter: @fmadiot)
  2. 2. De l'intention au code « Gérer des personnes ayant un nom, un prénom et une date de naissance » Person.java IPerson.java PersonDAO.java person.hbm.xml hibernate.cfg.xml struts-config.xml PersonSearch.jsp PersonList.jsp PersonDetail.jsp PersonForm.java PersonSearchAction.java ... <ul>Hibernate / Spring / Struts </ul>
  3. 3. Model-Driven Development <ul><li>Automatiser la production de code à partir de modèles </li></ul>Efficacité de la modélisation ? Adaptabilité ? Traçabilité Code / Modèle ?
  4. 4. L'approche DSL <ul><li>Gérer la complexité </li><ul><li>Restreindre les concepts manipulés au strict nécessaire
  5. 5. Utiliser le vocabulaire des personnes en charge de la modélisation </li></ul><li>Cadrer les développements </li><ul><li>Produire du code conforme aux choix techniques
  6. 6. Eviter le codage répétitif </li></ul><li>Cadrer la modélisation </li><ul><li>Suivre la démarche définie sur le projet
  7. 7. Outiller l'édition et l'exploration de modèles </li></ul></ul>
  8. 8. Principe Définition du domaine Choix des éditeurs Exploitation des modèles Vocabulaire métier <ul><li>Concepts
  9. 9. Relations
  10. 10. Propriétés </li></ul>Types de représentation <ul><li>Graphique
  11. 11. Textuelle
  12. 12. Tabulaire
  13. 13. Arborescente
  14. 14. Formulaire </li></ul>Outils MDE <ul><li>Générateurs
  15. 15. Validateurs
  16. 16. Comparateurs
  17. 17. Transformateurs
  18. 18. etc </li></ul>
  19. 19. <ul><li>Entités métier </li><ul><li>Block : conteneur d'entités
  20. 20. Entity : entité du domaine
  21. 21. Attribute : propriété d'une entité
  22. 22. Reference : lien reliant deux entités
  23. 23. Inheritance : relation d'héritage
  24. 24. Composition : relation de contenance </li></ul></ul>Exemples de DSL &quot;SI&quot; <ul><li>C inématique de navigation </li><ul><li>Scenario : enchaînement d'écrans
  25. 25. Screen : écran
  26. 26. Transition : passage d'un écran à un autre
  27. 27. Action : action métier ou action IHM </li></ul><li>SOA (Composants et Services) </li><ul><li>Component
  28. 28. Service
  29. 29. Operation
  30. 30. DTO </li></ul></ul>
  31. 31. Eclipse Modeling Project <ul><li>Projet Top Level </li></ul><ul><li>Eclipse Modeling Framework </li><ul><li>EMF Core, CDO, Compare, Query </li></ul><li>Graphical Modeling Project </li><ul><li>GMF, Graphiti </li></ul><li>Model 2 Text </li><ul><li>Jet, Acceleo, XPand2 </li></ul><li>Model 2 Model </li><ul><li>ATL </li></ul><li>Textual Modeling Framework </li><ul><li>Xtext </li></ul><li>Model Development Tools </li><ul><li>UML2, OCL, BPMN2, MoDisco, ... </li></ul><li>EMF Technology </li></ul>
  32. 32. DSLs entity.ecore soa.ecore cinematic.ecore 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.java IPerson.java PersonDAO.java person.hbm.xml hibernate.cfg.xml struts-config.xml PersonSearch.jsp PersonList.jsp PersonDetail.jsp PersonForm.java PersonSearchAction.java ...
  33. 33. Modelisation graphique <ul><li>GMF </li></ul>
  34. 34. Modélisation textuelle <ul><li>XText </li></ul>
  35. 35. Modélisation arborescente <ul><li>Browser MoDisco </li></ul>
  36. 36. Modélisation en mode formulaire <ul><li>EEF </li><ul><li>Edition des propriétés avec des widgets évolués
  37. 37. Paramétrage du rendu graphique
  38. 38. Approche Master-Detail
  39. 39. Intégration complète et native EMF </li></ul></ul>
  40. 40. Principe EEF <ul><li>Génération de l'éditeur guidée par des modèles </li></ul>
  41. 41. Indigo -> EEF 1.0 <ul><li>Rich text widget
  42. 42. Convergence vers EMF.edit </li><ul><li>Génération du code des éditeurs EMF avec Acceleo
  43. 43. Héritage des customisations natives EMF </li></ul><li>Intégration dans le package Modeling </li><ul><li>Amélioration de la robustesse
  44. 44. Sortie du statut incubation </li></ul></ul>
  45. 45. 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.java IPerson.java PersonDAO.java person.hbm.xml hibernate.cfg.xml struts-config.xml PersonSearch.jsp PersonList.jsp PersonDetail.jsp PersonForm.java PersonSearchAction.java ... DSLs entity.ecore soa.ecore cinematic.ecore
  46. 46. Acceleo <ul><li>Principes </li><ul><li>Templates + OCL + Java
  47. 47. Initialisation automatique à partir d'un exemple de code
  48. 48. Zones de code protégé
  49. 49. Surcharge de templates </li></ul><li>Environnement d'édition des générateurs </li><ul><li>Complétion
  50. 50. Colorisation syntaxique
  51. 51. Profiling
  52. 52. Debugging </li></ul><li>Environnement d'exécution </li><ul><li>Vue Result </li></ul></ul>
  53. 53. <ul><li>Entity -> Hibernate </li><ul><li>&quot;POJO&quot;
  54. 54. Interface &quot;DAO&quot;
  55. 55. Fichiers de mapping
  56. 56. Génération de 2 type d'impl </li><ul><li>Directe (Old School)
  57. 57. Spring </li></ul><li>Tests unitaires
  58. 58. Script de création de schéma SQL </li></ul></ul>Exemples de générateurs JavaEE <ul><li>SOA -> Spring </li><ul><li>Pour chaque service du modèle </li><ul><li>Une interface Java
  59. 59. Un squelette d'implémentation
  60. 60. Les classes DTOs </li></ul><li>Descripteurs XML réalisant le lien entre les différentes couches </li></ul><li>Cinematic -> Struts </li><ul><li>Formulaires, Actions
  61. 61. JSPs, CSS, JS
  62. 62. struts-config.xml
  63. 63. Tiles-def + validation </li></ul></ul>
  64. 64. Offres Obeo complémentaires <ul><li>Acceleo Traceability </li><ul><li>Prévisualisation
  65. 65. Gestion du code hors balises
  66. 66. Traçabilité code -> modèle
  67. 67. Traçabilité modèle -> code
  68. 68. Traçabilité code -> template </li></ul></ul><ul><li>Acceleo Premium </li><ul><li>Support
  69. 69. Acceleo Traceability </li></ul><li>Long Term Support </li></ul>
  70. 70. Indigo -> Acceleo 3.1 <ul><li>Evolutions du langage de templates </li><ul><li>Gestion des commentaires
  71. 71. Documentation affichée dans la complétion et le hover </li></ul></ul>
  72. 72. Indigo -> Acceleo 3.1 <ul><li>Edition des templates </li><ul><li>Meilleure détection d'erreurs
  73. 73. Gestion des tags TODO et FIXME </li></ul></ul>
  74. 74. Indigo -> Acceleo 3.1 <ul><li>Edition des templates </li><ul><li>Outline amélioré
  75. 75. Options de refactoring </li><ul><li>extract as query, pull up, generate documentation </li></ul><li>Nouveau wizard de création de projet </li></ul></ul><ul><li>Intégration dans une chaîne de build </li><ul><li>Génération de fichiers Ant et Maven </li></ul><li>Amélioration des performances </li><ul><li>Optimisations du moteur
  76. 76. Sérialisation des templates en format binaire (option) </li></ul></ul>
  77. 77. Merci ! <ul><li>Acceleo </li><ul><li>www.eclipse.org/acceleo </li></ul><li>EEF </li><ul><li>www.eclipse.org/modeling/emft/?project=eef </li></ul><li>ObeoNetwork </li><ul><li>www.obeonetwork.com </li></ul><li>Blogs </li><ul><li>http://fmadiot.blogspot.com/
  78. 78. http://mariot-thoughts.blogspot.com/
  79. 79. http://eclipsemde.blogspot.com/
  80. 80. http://sbegaudeau.tumblr.com/
  81. 81. http://eef-modeling.blogspot.com/ </li></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×