SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Destaque

Internet Marketing 101: Search Marketing Basics
Internet Marketing 101: Search Marketing BasicsInternet Marketing 101: Search Marketing Basics
Internet Marketing 101: Search Marketing BasicsWhole Brain Group, LLC
 
Corcovado e Cristo Redentor
Corcovado e Cristo RedentorCorcovado e Cristo Redentor
Corcovado e Cristo RedentorLuiz Carlos Dias
 
Whitney Motor Sports - Sprint Cup 2010
Whitney Motor Sports - Sprint Cup 2010Whitney Motor Sports - Sprint Cup 2010
Whitney Motor Sports - Sprint Cup 2010cburns30
 
Active Insight Overview
Active Insight OverviewActive Insight Overview
Active Insight OverviewMike Telem
 
Ibm & Microsoft Announce Emea Merger 2010
Ibm & Microsoft Announce Emea Merger 2010Ibm & Microsoft Announce Emea Merger 2010
Ibm & Microsoft Announce Emea Merger 2010brzaaap
 
Dramatically increase revenue on verio template
Dramatically increase revenue on verio templateDramatically increase revenue on verio template
Dramatically increase revenue on verio templateJanine Soika
 
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óvelImóveis Lançamentos
 
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 Guidebrzaaap
 
Las Vegas Aficionados
Las Vegas AficionadosLas Vegas Aficionados
Las Vegas Aficionadosbrzaaap
 
Growth hacking 2014 abm presentation
Growth hacking 2014 abm presentationGrowth hacking 2014 abm presentation
Growth hacking 2014 abm presentationMike 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 cloudMike Telem
 
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 Rgzbrzaaap
 

Destaque (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
 

Semelhante a 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 Makmfrancis
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on RailsViridians
 
Modules and EmbedJS
Modules and EmbedJSModules and EmbedJS
Modules and EmbedJSJens Arps
 
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 & Futureelliando dias
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applicationshchen1
 
Gradle(the innovation continues)
Gradle(the innovation continues)Gradle(the innovation continues)
Gradle(the innovation continues)Sejong Park
 
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 allMarc Dutoo
 
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 WideOCCIware
 
Pragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWarePragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWareMichael Vorburger
 
Agile Development in .NET
Agile Development in .NETAgile Development in .NET
Agile Development in .NETdanhermes
 
Handlebars and Require.js
Handlebars and Require.jsHandlebars and Require.js
Handlebars and Require.jsIvano Malavolta
 
MoDisco EclipseCon2010
MoDisco EclipseCon2010MoDisco EclipseCon2010
MoDisco EclipseCon2010fmadiot
 
jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture jQquerysummit - Large-scale JavaScript Application Architecture
jQquerysummit - Large-scale JavaScript Application Architecture Jiby John
 
Gnizr Architecture (for developers)
Gnizr Architecture (for developers)Gnizr Architecture (for developers)
Gnizr Architecture (for developers)hchen1
 
Zend Framework And Doctrine
Zend Framework And DoctrineZend Framework And Doctrine
Zend Framework And Doctrineisaaczfoster
 

Semelhante a 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
 

Mais de Cedric Vidal

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...Cedric Vidal
 
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 2018Cedric Vidal
 
AgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveAgileTour Strasbourg 2011 BDD with jBehave
AgileTour Strasbourg 2011 BDD with jBehaveCedric Vidal
 
BBL KAPPA Lesfurets.com
BBL KAPPA Lesfurets.comBBL KAPPA Lesfurets.com
BBL KAPPA Lesfurets.comCedric Vidal
 
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 ParisCedric Vidal
 
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...Cedric Vidal
 
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.0Cedric Vidal
 
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.0Cedric 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.0Cedric Vidal
 

Mais 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
 

Último

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
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 educationjfdjdjcjdnsjd
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 

Último (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 

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.