SlideShare une entreprise Scribd logo
1  sur  31
MDSD Scaffolding and Cédric Vidal, ProxiAD Friday 10th July 2009 Version 1.0
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
Agenda WhatisScaffolding ? Scaffolding in software Scaffoldingapplied to MDSD MDSD Scaffoldingapproaches Acceleo MTL Demo Benefits Links
Whatisscaffolding ? Scaffolds are temporary structures that physically support workers while they complete jobs that would otherwise be impossible(HH93, p138)
Scaffolding in software Ruby on Rails *Rails scriptingframeworksbringblazingfastproductivity in theirownspecifictechnologicalspace MainlythroughScaffolding !
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
Others Ruby On Rails Grails Spring ROO Play! CakePHP Monorail Symfony …
What’s the point ? Model-Drivenbringsquality, durability, maintainability What about productivity ? Code generationtemplateswritingalready productive withAcceleo (old and MTL) Goal: Enhancemodelingproductivity
Objective Achievebothquality AND productivity BringScaffolding to Modeling
WhatisScaffoldingapplied to Modeling ? Creating partial model structures on behalf of the designer that hewouldotherwise have to create by himself
Model Scaffoldingtaxonomy Blind versus In-PlaceScaffolding Static versus DynamicScaffolding The greener the better
Model Scaffoldingtaxonomy Classical code generation Compensated code generation « Blind » scaffolding « In-Place » scaffolding Eachstatic or dynamic
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
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
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
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
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
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
« 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
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
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
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
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
Deletion 2/2: solutions Need to keeptrackof scaffoldedelements Onlyreally a problemwithdynamic « in-place » scaffolding For static and/or « blind » scaffolding, scaffoldedelementscanjustbecomputed all over again
Model scaffoldingcomparison
WhatScaffoldingengine ? A model to model transformation engine ? ATL Xtend QVT Operational QVT Relational Obeo Transfo … A ruleengine ? Drools Any OO RuleEngine …
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
Ruleenginesyncprocess Working Memory Model Entity One synchronize Entity One reference ScaffoldingRule reference DAO OneDao DAO OneDao synchronize
Droolssamplerule SampleDrools DAO scaffoldingrule
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
Scaffoldingdemo Dynamic « In-Place » DSL Scaffoldingdemo Uses A DSL withEntity, DAO and Service concepts An EMF.Edit editor DroolsRuleEngine as the scaffoldingengine

Contenu connexe

En vedette

Corcovado e Cristo Redentor
Corcovado e Cristo RedentorCorcovado e Cristo Redentor
Corcovado e Cristo Redentor
Luiz Carlos Dias
 
Ibm & Microsoft Announce Emea Merger 2010
Ibm & Microsoft Announce Emea Merger 2010Ibm & Microsoft Announce Emea Merger 2010
Ibm & Microsoft Announce Emea Merger 2010
brzaaap
 
Dramatically increase revenue on verio template
Dramatically increase revenue on verio templateDramatically increase revenue on verio template
Dramatically increase revenue on verio template
Janine Soika
 
Growth hacking 2014 abm presentation
Growth hacking 2014 abm presentationGrowth hacking 2014 abm presentation
Growth hacking 2014 abm presentation
Mike Telem
 
Active insight behavioral targeting in the cloud
Active insight behavioral targeting in the cloudActive insight behavioral targeting in the cloud
Active insight behavioral targeting in the cloud
Mike Telem
 

En vedette (20)

Internet Marketing 101: Search Marketing Basics
Internet Marketing 101: Search Marketing BasicsInternet Marketing 101: Search Marketing Basics
Internet Marketing 101: Search Marketing Basics
 
Corcovado e Cristo Redentor
Corcovado e Cristo RedentorCorcovado e Cristo Redentor
Corcovado e Cristo Redentor
 
Whitney Motor Sports - Sprint Cup 2010
Whitney Motor Sports - Sprint Cup 2010Whitney Motor Sports - Sprint Cup 2010
Whitney Motor Sports - Sprint Cup 2010
 
Active Insight Overview
Active Insight OverviewActive Insight Overview
Active Insight Overview
 
Ibm & Microsoft Announce Emea Merger 2010
Ibm & Microsoft Announce Emea Merger 2010Ibm & Microsoft Announce Emea Merger 2010
Ibm & Microsoft Announce Emea Merger 2010
 
Dramatically increase revenue on verio template
Dramatically increase revenue on verio templateDramatically increase revenue on verio template
Dramatically increase revenue on verio template
 
28 belles photos
28 belles photos28 belles photos
28 belles photos
 
Welcome to art2trade4 1.10.11
Welcome to art2trade4 1.10.11Welcome to art2trade4 1.10.11
Welcome to art2trade4 1.10.11
 
Conhecendo a China
Conhecendo a ChinaConhecendo a China
Conhecendo a China
 
Árvores
ÁrvoresÁrvores
Árvores
 
Surfindia Automobile
Surfindia AutomobileSurfindia Automobile
Surfindia Automobile
 
Surfindia Automobile
Surfindia AutomobileSurfindia Automobile
Surfindia Automobile
 
power point
power pointpower point
power point
 
Achotels Marriott | Lancamento Imobiliário Patrimóvel
Achotels Marriott | Lancamento Imobiliário PatrimóvelAchotels Marriott | Lancamento Imobiliário Patrimóvel
Achotels Marriott | Lancamento Imobiliário Patrimóvel
 
Especial para ti
Especial para tiEspecial para ti
Especial para ti
 
Sg247692 Websphere Accounting Chargeback For Tuam Guide
Sg247692 Websphere Accounting Chargeback For Tuam GuideSg247692 Websphere Accounting Chargeback For Tuam Guide
Sg247692 Websphere Accounting Chargeback For Tuam Guide
 
Las Vegas Aficionados
Las Vegas AficionadosLas Vegas Aficionados
Las Vegas Aficionados
 
Growth hacking 2014 abm presentation
Growth hacking 2014 abm presentationGrowth hacking 2014 abm presentation
Growth hacking 2014 abm presentation
 
Active insight behavioral targeting in the cloud
Active insight behavioral targeting in the cloudActive insight behavioral targeting in the cloud
Active insight behavioral targeting in the cloud
 
2011 07 Novartis Q2 Presentation Finanzamt Rgz
2011 07 Novartis Q2 Presentation Finanzamt Rgz2011 07 Novartis Q2 Presentation Finanzamt Rgz
2011 07 Novartis Q2 Presentation Finanzamt Rgz
 

Similaire à RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1

Modular JavaScript in an OSGi World - S Mak
Modular JavaScript in an OSGi World - S MakModular JavaScript in an OSGi World - S Mak
Modular JavaScript in an OSGi World - S Mak
mfrancis
 
Model Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & FutureModel Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & Future
elliando dias
 
Gradle(the innovation continues)
Gradle(the innovation continues)Gradle(the innovation continues)
Gradle(the innovation continues)
Sejong Park
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware
 
MoDisco EclipseCon2010
MoDisco EclipseCon2010MoDisco EclipseCon2010
MoDisco EclipseCon2010
fmadiot
 

Similaire à RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1 (20)

EMF Scaffolding
EMF ScaffoldingEMF Scaffolding
EMF Scaffolding
 
Modular JavaScript in an OSGi World - S Mak
Modular JavaScript in an OSGi World - S MakModular JavaScript in an OSGi World - S Mak
Modular JavaScript in an OSGi World - S Mak
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on Rails
 
Dao example
Dao exampleDao example
Dao example
 
Modules and EmbedJS
Modules and EmbedJSModules and EmbedJS
Modules and EmbedJS
 
Model Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & FutureModel Driven Architecture (MDA): Motivations, Status & Future
Model Driven Architecture (MDA): Motivations, Status & Future
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
Gradle(the innovation continues)
Gradle(the innovation continues)Gradle(the innovation continues)
Gradle(the innovation continues)
 
AhmedReda
AhmedRedaAhmedReda
AhmedReda
 
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allEclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
 
Pragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWarePragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWare
 
Agile Development in .NET
Agile Development in .NETAgile Development in .NET
Agile Development in .NET
 
Facade pattern in rails
Facade pattern in railsFacade pattern in rails
Facade pattern in rails
 
Demystifying The Solid Works Api
Demystifying The Solid Works ApiDemystifying The Solid Works Api
Demystifying The Solid Works Api
 
Handlebars and Require.js
Handlebars and Require.jsHandlebars and Require.js
Handlebars and Require.js
 
MoDisco EclipseCon2010
MoDisco EclipseCon2010MoDisco EclipseCon2010
MoDisco EclipseCon2010
 
jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture
 
Gnizr Architecture (for developers)
Gnizr Architecture (for developers)Gnizr Architecture (for developers)
Gnizr Architecture (for developers)
 
Zend Framework And Doctrine
Zend Framework And DoctrineZend Framework And Doctrine
Zend Framework And Doctrine
 

Plus de Cedric Vidal

Scaffolding MDSD par l’exemple - 1.0
Scaffolding MDSD par l’exemple - 1.0Scaffolding MDSD par l’exemple - 1.0
Scaffolding MDSD par l’exemple - 1.0
Cedric Vidal
 

Plus de Cedric Vidal (10)

Camunda Days 2018 Building a digital on-boarding microservices platform using...
Camunda Days 2018 Building a digital on-boarding microservices platform using...Camunda Days 2018 Building a digital on-boarding microservices platform using...
Camunda Days 2018 Building a digital on-boarding microservices platform using...
 
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018
Kubernetes and Gitops at Quicksign - Koncrete Kube Oct 2018
 
AgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveAgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehave
 
BBL KAPPA Lesfurets.com
BBL KAPPA Lesfurets.comBBL KAPPA Lesfurets.com
BBL KAPPA Lesfurets.com
 
EMF Customizer
EMF CustomizerEMF Customizer
EMF Customizer
 
Rethinking Quicksign's Digital Onboarding - Confluent Streaming Days Paris
Rethinking Quicksign's Digital Onboarding - Confluent Streaming Days ParisRethinking Quicksign's Digital Onboarding - Confluent Streaming Days Paris
Rethinking Quicksign's Digital Onboarding - Confluent Streaming Days Paris
 
Do microservices dream about CQRS-ES, Kafka Stream and BPMN ? - Voxxed micros...
Do microservices dream about CQRS-ES, Kafka Stream and BPMN ? - Voxxed micros...Do microservices dream about CQRS-ES, Kafka Stream and BPMN ? - Voxxed micros...
Do microservices dream about CQRS-ES, Kafka Stream and BPMN ? - Voxxed micros...
 
Eclipse Day Paris 2010 - ProxiAD - Cedric Vidal - 1.0
Eclipse Day Paris 2010 - ProxiAD - Cedric Vidal - 1.0Eclipse Day Paris 2010 - ProxiAD - Cedric Vidal - 1.0
Eclipse Day Paris 2010 - ProxiAD - Cedric Vidal - 1.0
 
MD Day 2009 - Cédric Vidal - 1.0
MD Day 2009 - Cédric Vidal - 1.0MD Day 2009 - Cédric Vidal - 1.0
MD Day 2009 - Cédric Vidal - 1.0
 
Scaffolding MDSD par l’exemple - 1.0
Scaffolding MDSD par l’exemple - 1.0Scaffolding MDSD par l’exemple - 1.0
Scaffolding MDSD par l’exemple - 1.0
 

Dernier

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Dernier (20)

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 

RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1

  • 1. MDSD Scaffolding and Cédric Vidal, ProxiAD Friday 10th July 2009 Version 1.0
  • 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
  • 9. Objective Achievebothquality AND productivity BringScaffolding to Modeling
  • 10. WhatisScaffoldingapplied to Modeling ? Creating partial model structures on behalf of the designer that hewouldotherwise have to create by himself
  • 11. Model Scaffoldingtaxonomy Blind versus In-PlaceScaffolding Static versus DynamicScaffolding The greener the better
  • 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
  • 34. Links JBossDroolshttp://jboss.org/drools/ Eclipse Acceleo MTLhttp://bit.ly/yS3gp ProxiAD’s Bloghttp://blog.proxiad.com Cédric Vidal’s Bloghttp://blog.proxiad.com/author/cvidal/ Cédric Vidal’sTwitterhttp://twitter.com/cedricvidal
  • 35. References HH93 - Herber, H., & Herber, J. (1993). Teaching in Content Areas With Reading, Writing, and Reasoning. Allyn & Bacon: Needham Heights, M.A.