Presentation on MDSD Scaffolding applied using EMF.Edit, a rule engine and Acceleo.
This talk was given at Eclipse Acceleo Day, on Friday 10th July 2009 during RMLL.
2. Who are we ? ProxiADGroup SSII specialized in objectorienteddevelopment Dedicatedingenieringprocess industrialisation team Using MDA since 2004 on J2EE projects Cédric Vidal J2EE & MDA Architect ProxiAD IDF Technical Leader
3. Agenda WhatisScaffolding ? Scaffolding in software Scaffoldingapplied to MDSD MDSD Scaffoldingapproaches Acceleo MTL Demo Benefits Links
4. Whatisscaffolding ? Scaffolds are temporary structures that physically support workers while they complete jobs that would otherwise be impossible(HH93, p138)
5. Scaffolding in software Ruby on Rails *Rails scriptingframeworksbringblazingfastproductivity in theirownspecifictechnologicalspace MainlythroughScaffolding !
6. Ruby on Rails Scaffolding Meta-Programming Scaffoldingworksat the code level Scaffoldingengineoperates on code as a model Can beeither Static : on demand Dynamic : transparently on yourbehalf Entity.rb DAO.rb
7. Others Ruby On Rails Grails Spring ROO Play! CakePHP Monorail Symfony …
8. What’s the point ? Model-Drivenbringsquality, durability, maintainability What about productivity ? Code generationtemplateswritingalready productive withAcceleo (old and MTL) Goal: Enhancemodelingproductivity
12. Model Scaffoldingtaxonomy Classical code generation Compensated code generation « Blind » scaffolding « In-Place » scaffolding Eachstatic or dynamic
13. Sampleproblemdomain 3-Tiers Architecture DSL containing concepts Entity DAO Service Java code isgenerated Légende Entity or DAO File Service Generation Reference Model separation Color code Hand-written Scaffolded Generated
14. Classical code generation 1/2 Entities are modeled Entity and DAO source codes are generatedfrom the modeledEntity Problem: What if youwant to definequeries in your model ? Model Entity Text DAO.java Entity.java
15. Classical code generation 2/2 Entity and DAOs are modeled Entity source code isgeneratedfrom the modeledEntity DAO source code isgeneratedfrommodeled DAO DAOswhich are not modeled are not generated Problem: You need to define all DAOs… Eventhosethatonly do CRUD Model DAO Entity Text DAO.java Entity.java
16. Compensated code generation Source code isstillgeneratedfor modeledelements For Entitieswhich have no modeled DAO, wecompensate by generatingsource code for the DAO from the modeledEntity Advantage: Only custom DAOs are modeled Problem: DAO code generationlogicisduplicated Entity -> DAO.java DAO -> DAO.java Model Entity One DAO One Entity Two One.java TwoDAO.java Two.java OneDAO.java Text
17. Generation « Blind » Model Scaffolding Model i Entity Two Each model is a step in the MDSD chain An intermediatestepisintroduced Each model canonly « see » the model before Existingelements are copied as is A DAO isgenerated for eachentitywhich has no DAO Advantage: Only one DAO code generationlogic Problem: How do youreferencescaffoldedelements DAO TwoDao Entity One Model i-bis Entity Two DAO TwoDao Entity One DAO OneDao Model i+1 One.java TwoDAO.java Two.java OneDAO.java
18. How to referencescaffoldedelements ? The problemisillustrated by introducing a service The ‘Alpha’ service canreference the modeled DAO ‘TwoDao’ but not the scaffolded DAO ‘OneDao’ The scaffolded DAO ‘OneDao’ islocated in a model that the ‘Alpha’ service cannotsee Problem: « Blind » scaffoldingdoesn’tallowscaffoldedelementsreferencing Modèle i DAO TwoDao Entity Two Entity One Service Alpha Modèle i-bis DAO OneDao Entity One
19. « In-place » Model Scaffolding ‘OneDao’ DAO isscaffolded in the same model as Entity ‘One’ The DAO is « visible » withoutbeingmaterialized in the input model Advantage: Le ‘Alpha’ service canreference the scaffolded DAO ‘OneDao’ Problem: How to customize a scaffoldedelement ? Model i Entity One DAO OneDao Service Alpha Model i+1 One.java AlphaService.java OneDao.java
20. Takeover 1/3: Overview User cantake over scaffoldedelements The over takenelementisthenmaterialized in the input model Advantage: The DAO canbecustomized Iteration n Entity One DAO OneDao Service Alpha Iteration n+1 Entity One DAO OneDao Service Alpha
21. Takeover 2/3: Zoom After the DAO taking over, CRUD methods are stillscaffolded Advantage: No need to manually input previouslyscaffoldedelements DAO OneDao Iteration n Entity One Service Alpha create read update delete Iteration n+1 DAO OneDao Entity One Service Alpha create read update delete
22. Takeover 3/3: Customisation Iteration n+1 Let’sadd a finderfinder CRUD methods are stillscaffolded Advantage: Onlycustomizations are hand written, CRUD methods are scaffolded DAO OneDao Entity One Service Alpha create read update delete Iteration n+2 DAO OneDao Entity One Service Alpha create read update delete myFinder
23. Deletion 1/2: The problem Whathappens if the user deletes an element for whichelementswerescaffolded ? Scaffoldedelements must alsobedeleted Model i Entity One DAO OneDao Service Alpha Model i+1 One.java AlphaService.java OneDao.java
24. Deletion 2/2: solutions Need to keeptrackof scaffoldedelements Onlyreally a problemwithdynamic « in-place » scaffolding For static and/or « blind » scaffolding, scaffoldedelementscanjustbecomputed all over again
26. WhatScaffoldingengine ? A model to model transformation engine ? ATL Xtend QVT Operational QVT Relational Obeo Transfo … A ruleengine ? Drools Any OO RuleEngine …
27. A ruleengine ?? Scaffoldingrules as production rules The model as a workingmemory Model elements as facts When a givenconditionis met, new factsare insertedintoworkingmemory Those new facts are attached to the model as new elements
28. Ruleenginesyncprocess Working Memory Model Entity One synchronize Entity One reference ScaffoldingRule reference DAO OneDao DAO OneDao synchronize
30. Pros and cons M2M Engine Pros Leveragesexistingskills Sametechnologicalspace Suited for staticscaffolding Cons Hard to use for dynamic « in-place » scaffolding RuleEngine Pros Nativelysuited for dynamic « in-place » scaffolding Can do staticscaffolding as well Cons Differenttechnologicalspace as the rest of the MDSD technologies Cannotleverageexistingskills and transformations
31. Scaffoldingdemo Dynamic « In-Place » DSL Scaffoldingdemo Uses A DSL withEntity, DAO and Service concepts An EMF.Edit editor DroolsRuleEngine as the scaffoldingengine
32. MDSD Scaffoldingbenefits Acceleratesmodeling Allows to quickly come up with a working model The user startsfrom the beginingwith a complete model (complete in the direction the scaffoldingtakeshim) Provides the user with a fastfeedback Allows to enrich the input model as well as facilitatingits usage for the new user Bringsflexibilitywhilekeepingsimplicity Scaffoldingcanbecomplemented by code generationand model validation The user canwheneverhewantstake over the scaffoldedelements in order to customizethem
33. Otherintegrations Structured model editors EMF.Edit GraphicalDSLs GMF Obeo Designer TextualDSLs Xtext UML models Papyrus/UML2Tools/Topcased IBM RSM
35. References HH93 - Herber, H., & Herber, J. (1993). Teaching in Content Areas With Reading, Writing, and Reasoning. Allyn & Bacon: Needham Heights, M.A.