SlideShare a Scribd company logo
1 of 27
Download to read offline
Scaffolding
EMF
Version 1.0
What is scaffolding ?
• 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 scripting frameworks bring
blazing fast productivity in their own
specific technological space
• Mainly through Scaffolding !
Ruby on Rails Scaffolding
• Meta-Programming
• Scaffolding works at the code level
• Scaffolding engine operates on code as a model
• Can be either
– Static : on demand
– Dynamic : transparently on your behalf
Entity.rb
DAO.rb
Others
• Ruby On Rails
• Grails
• Spring ROO
• Play!
• CakePHP
• Monorail
• Symfony
• …
What’s the point ?
• Model-Driven brings
quality, durability,
maintainability
• What about productivity ?
– Goal: Enhance modeling
expressiveness, simplicity
and overwhole productivity
What is Scaffolding applied
to Modeling ?
• Creating partial model structures on
behalf of the designer that he would
otherwise have to create by himself
Model Scaffolding
taxonomy
• Blind versus In-Place Scaffolding
• Static versus Dynamic Scaffolding
• The greener the better 
Model Scaffolding
taxonomy
1. Classical code generation
2. Compensated code generation
3. « Blind » scaffolding
4. « In-Place » scaffolding
• Each static or dynamic
Sample problem domain
• 3-Tiers Architecture
• DSL containing concepts
– Entity
– DAO
– Service
• Java code is generated
• Légende
Generation
Reference
Model separation
File
Entity or DAO
Service
ScaffoldedGenerated
Hand-written
Color code
Classical code generation
1/2
• Entities are modeled
• Entity and DAO source
codes are generated
from the modeled Entity
• Problem: What if you
want to define queries in
your model ?
Entity
Entity.java
DAO.java
Model
Text
Classical code generation
2/2
• Entity and DAOs are modeled
• Entity source code is generated
from the modeled Entity
• DAO source code is generated
from modeled DAO
• DAOs which are not modeled
are not generated
• Problem: You need to define all
DAOs…
• Even those that only do CRUD
Entity
Entity.java
DAO.java
Model
Text
DAO
Compensated code
generation
• Source code is still generated
for modeled elements
• For Entities which have no
modeled DAO, we
compensate by generating
source code for the DAO from
the modeled Entity
• Advantage: Only custom DAOs
are modeled
• Problem: DAO code
generation logic is duplicated
– Entity -> DAO.java
– DAO -> DAO.java
Entity
One DAO
OneEntity
Two
One.java
OneDAO.java
Two.java
TwoDAO.java
Model
Text
Generation « Blind » Model
Scaffolding
• Each model is a step in the MDSD
chain
• An intermediate step is introduced
• Each model can only « see » the
model before
• Existing elements are copied as is
• A DAO is generated for each entity
which has no DAO
• Advantage: Only one DAO code
generation logic
• Problem: How do you reference
scaffolded elements
Entity
One
Entity
One
Entity
Two DAO
TwoDao
Entity
Two
DAO
TwoDao
DAO
OneDao
One.java
OneDAO.java
Two.java
TwoDAO.java
Model i
Model i-bis
Model i+1
How to reference scaffolded
elements ?
• The problem is illustrated by
introducing a service
• The ‘Alpha’ service can
reference the modeled DAO
‘TwoDao’ but not the
scaffolded DAO ‘OneDao’
• The scaffolded DAO ‘OneDao’
is located in a model that the
‘Alpha’ service cannot see
• Problem: « Blind » scaffolding
doesn’t allow scaffolded
elements referencing
Entity
One
Entity
One
DAO
OneDao
Service
Alpha
Modèle i
Modèle i-bis
Entity
Two
DAO
TwoDao
« In-place » Model Scaffolding
• ‘OneDao’ DAO is
scaffolded in the same
model as Entity ‘One’
• The DAO is « visible »
without being
materialized in the input
model
• Advantage: Le ‘Alpha’
service can reference the
scaffolded DAO ‘OneDao’
• Problem: How to
customize a scaffolded
element ?
Entity
One
DAO
OneDao
One.java
AlphaService.java
OneDao.java
Service
Alpha
Model i
Model i+1
Takeover 1/3: Overview
• User can take over
scaffolded elements
• The over taken element
is then materialized in
the input model
• Advantage: The DAO
can be customized
Entity
One
DAO
OneDao
Service
Alpha
Iteration n
Iteration n+1
Entity
One
DAO
OneDao
Service
Alpha
Takeover 2/3: Zoom
• After the DAO taking
over, CRUD methods
are still scaffolded
• Advantage: No need to
manually input
previously scaffolded
elements
Entity
One
Service
Alpha
Iteration n
Entity
One
Service
Alpha
DAO
OneDao
create
read
update
delete
DAO
OneDao
create
read
update
delete
Iteration n+1
Takeover 3/3: Customisation
• Let’s add a finder finder
• CRUD methods are still
scaffolded
• Advantage: Only
customizations are
hand written, CRUD
methods are scaffoldedEntity
One
Service
Alpha
DAO
OneDao
create
read
update
delete
myFinder
Entity
One
Service
Alpha
DAO
OneDao
create
read
update
delete
Iteration n+1
Iteration n+2
Deletion 1/2: The problem
• What happens if
the user deletes
an element for
which elements
were scaffolded ?
• Scaffolded
elements must
also be deleted
Entity
One
DAO
OneDao
One.java
AlphaService.java
OneDao.java
Service
Alpha
Model i
Model i+1
Deletion 2/2: solutions
• Need to keep track of scaffolded elements
• Only really a problem with dynamic « in-
place » scaffolding
• For static and/or « blind » scaffolding,
scaffolded elements can just be computed all
over again
Model scaffolding
comparison
What Scaffolding engine ?
• A model to model transformation engine ?
– ATL
– Xtend
– QVT Operational
– QVT Relational
– Obeo Transfo
– …
• A rule engine ?
– Drools
– Any OO Rule Engine …
A rule engine ??
• Scaffolding rules as production rules
• The model as a working memory
• Model elements as facts
• When a given condition is met, new facts are
inserted into working memory
• Those new facts are attached to the model as new
elements
Rule engine sync process
Entity
One
DAO
OneDao
Working MemoryModel
Entity
One
DAO
OneDao
reference
reference
synchronize
synchronize
Scaffolding
Rule
Drools sample rule
• Sample Drools DAO scaffolding rule
MDSD Scaffolding benefits
• Accelerates modeling
• Allows to quickly come up with a working model
• The user starts from the begining with a complete model
(complete in the direction the scaffolding takes him)
• Provides the user with a fast feedback
• Allows to enrich the input model as well as facilitating its
usage for the new user
• Brings flexibility while keeping simplicity
• Scaffolding can be complemented by code generation and
model validation
• The user can whenever he wants take over the scaffolded
elements in order to customize them

More Related Content

What's hot

Rootcon X - Reverse Engineering Swift Applications
Rootcon X - Reverse Engineering Swift ApplicationsRootcon X - Reverse Engineering Swift Applications
Rootcon X - Reverse Engineering Swift Applicationseightbit
 
Hibernate example1
Hibernate example1Hibernate example1
Hibernate example1myrajendra
 
What is Serialization in Java? | Java Tutorial | Edureka
What is Serialization in Java? | Java Tutorial | EdurekaWhat is Serialization in Java? | Java Tutorial | Edureka
What is Serialization in Java? | Java Tutorial | EdurekaEdureka!
 
Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...IncQuery Labs
 
Staging and Deployment
Staging and DeploymentStaging and Deployment
Staging and Deploymentheyrocker
 
Session 01 - Introduction to Java
Session 01 - Introduction to JavaSession 01 - Introduction to Java
Session 01 - Introduction to JavaPawanMM
 
2 jdbc drivers
2 jdbc drivers2 jdbc drivers
2 jdbc driversmyrajendra
 
Perl On The JVM (London.pm Talk 2009-04)
Perl On The JVM (London.pm Talk 2009-04)Perl On The JVM (London.pm Talk 2009-04)
Perl On The JVM (London.pm Talk 2009-04)Ben Evans
 
Java Closures
Java ClosuresJava Closures
Java ClosuresBen Evans
 
Develop realtime web with Scala and Xitrum
Develop realtime web with Scala and XitrumDevelop realtime web with Scala and Xitrum
Develop realtime web with Scala and XitrumNgoc Dao
 
Sbt, idea and eclipse
Sbt, idea and eclipseSbt, idea and eclipse
Sbt, idea and eclipseMike Slinn
 

What's hot (14)

Rootcon X - Reverse Engineering Swift Applications
Rootcon X - Reverse Engineering Swift ApplicationsRootcon X - Reverse Engineering Swift Applications
Rootcon X - Reverse Engineering Swift Applications
 
Hibernate example1
Hibernate example1Hibernate example1
Hibernate example1
 
What is Serialization in Java? | Java Tutorial | Edureka
What is Serialization in Java? | Java Tutorial | EdurekaWhat is Serialization in Java? | Java Tutorial | Edureka
What is Serialization in Java? | Java Tutorial | Edureka
 
Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...
 
Staging and Deployment
Staging and DeploymentStaging and Deployment
Staging and Deployment
 
Session 01 - Introduction to Java
Session 01 - Introduction to JavaSession 01 - Introduction to Java
Session 01 - Introduction to Java
 
2 jdbc drivers
2 jdbc drivers2 jdbc drivers
2 jdbc drivers
 
Perl On The JVM (London.pm Talk 2009-04)
Perl On The JVM (London.pm Talk 2009-04)Perl On The JVM (London.pm Talk 2009-04)
Perl On The JVM (London.pm Talk 2009-04)
 
Java Closures
Java ClosuresJava Closures
Java Closures
 
3 jdbc api
3 jdbc api3 jdbc api
3 jdbc api
 
Factory method pattern
Factory method patternFactory method pattern
Factory method pattern
 
Develop realtime web with Scala and Xitrum
Develop realtime web with Scala and XitrumDevelop realtime web with Scala and Xitrum
Develop realtime web with Scala and Xitrum
 
Java basics at dallas technologies
Java basics at dallas technologiesJava basics at dallas technologies
Java basics at dallas technologies
 
Sbt, idea and eclipse
Sbt, idea and eclipseSbt, idea and eclipse
Sbt, idea and eclipse
 

Viewers also liked

Basic Scaffolding Awareness
Basic Scaffolding AwarenessBasic Scaffolding Awareness
Basic Scaffolding Awarenessedale07
 
Sponsorship packet PDF
Sponsorship packet PDFSponsorship packet PDF
Sponsorship packet PDFAriel Chavez
 
Gerenciamento de Projetos de TI
Gerenciamento de Projetos de TIGerenciamento de Projetos de TI
Gerenciamento de Projetos de TIBees
 
Galactinet Blogs y Medios Sociales
Galactinet Blogs y Medios SocialesGalactinet Blogs y Medios Sociales
Galactinet Blogs y Medios SocialesCarlos Perez
 
Active Insight Crm & Bi Use Case
Active Insight Crm & Bi Use CaseActive Insight Crm & Bi Use Case
Active Insight Crm & Bi Use CaseMike Telem
 
Website Improvements to Boost ROI
Website Improvements to Boost ROIWebsite Improvements to Boost ROI
Website Improvements to Boost ROIPerficient
 
2011 Sprayberry Overview Generic
2011 Sprayberry Overview   Generic2011 Sprayberry Overview   Generic
2011 Sprayberry Overview Genericcburns30
 
Active insight customer_overview_q3_2011
Active insight customer_overview_q3_2011Active insight customer_overview_q3_2011
Active insight customer_overview_q3_2011Mike Telem
 
Pending Building Energy Standards
Pending Building Energy StandardsPending Building Energy Standards
Pending Building Energy Standardsjimfreiberg
 
RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1
RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1
RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1Cedric Vidal
 
Ibm & Microsoft Announce Emea Merger 2010
Ibm & Microsoft Announce Emea Merger 2010Ibm & Microsoft Announce Emea Merger 2010
Ibm & Microsoft Announce Emea Merger 2010brzaaap
 

Viewers also liked (20)

Basic Scaffolding Awareness
Basic Scaffolding AwarenessBasic Scaffolding Awareness
Basic Scaffolding Awareness
 
enredate
enredateenredate
enredate
 
Eventfarma.Es
Eventfarma.EsEventfarma.Es
Eventfarma.Es
 
Plumsa i? AVOT!
Plumsa i? AVOT! Plumsa i? AVOT!
Plumsa i? AVOT!
 
Sponsorship packet PDF
Sponsorship packet PDFSponsorship packet PDF
Sponsorship packet PDF
 
Gerenciamento de Projetos de TI
Gerenciamento de Projetos de TIGerenciamento de Projetos de TI
Gerenciamento de Projetos de TI
 
Galactinet Blogs y Medios Sociales
Galactinet Blogs y Medios SocialesGalactinet Blogs y Medios Sociales
Galactinet Blogs y Medios Sociales
 
Sung Sam Park Painter
Sung Sam Park  PainterSung Sam Park  Painter
Sung Sam Park Painter
 
Especial para ti
Especial para tiEspecial para ti
Especial para ti
 
Active Insight Crm & Bi Use Case
Active Insight Crm & Bi Use CaseActive Insight Crm & Bi Use Case
Active Insight Crm & Bi Use Case
 
Website Improvements to Boost ROI
Website Improvements to Boost ROIWebsite Improvements to Boost ROI
Website Improvements to Boost ROI
 
Penknife Pres4
Penknife Pres4Penknife Pres4
Penknife Pres4
 
2011 Sprayberry Overview Generic
2011 Sprayberry Overview   Generic2011 Sprayberry Overview   Generic
2011 Sprayberry Overview Generic
 
Welcome to art2trade4 1.10.11
Welcome to art2trade4 1.10.11Welcome to art2trade4 1.10.11
Welcome to art2trade4 1.10.11
 
Active insight customer_overview_q3_2011
Active insight customer_overview_q3_2011Active insight customer_overview_q3_2011
Active insight customer_overview_q3_2011
 
Surfindia Presentation
Surfindia PresentationSurfindia Presentation
Surfindia Presentation
 
Bluetooth
BluetoothBluetooth
Bluetooth
 
Pending Building Energy Standards
Pending Building Energy StandardsPending Building Energy Standards
Pending Building Energy Standards
 
RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1
RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1
RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1
 
Ibm & Microsoft Announce Emea Merger 2010
Ibm & Microsoft Announce Emea Merger 2010Ibm & Microsoft Announce Emea Merger 2010
Ibm & Microsoft Announce Emea Merger 2010
 

Similar to EMF Scaffolding

Wessel Loth - Fire your Frontend Framework with Lit - TEQnation 2022.pdf
Wessel Loth - Fire your Frontend Framework with Lit - TEQnation 2022.pdfWessel Loth - Fire your Frontend Framework with Lit - TEQnation 2022.pdf
Wessel Loth - Fire your Frontend Framework with Lit - TEQnation 2022.pdfWessel Loth
 
Features, Exportables & You
Features, Exportables & YouFeatures, Exportables & You
Features, Exportables & Youjskulski
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overviewJesse Warden
 
Maglev-A different way to develop with Ruby
Maglev-A different way to develop with RubyMaglev-A different way to develop with Ruby
Maglev-A different way to develop with RubyHernan Wilkinson
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid DoesKevin McMahon
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedAlexander Makarov
 
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014datafundamentals
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Hannes Lowette
 
Developing modular Java applications
Developing modular Java applicationsDeveloping modular Java applications
Developing modular Java applicationsJulien Dubois
 
Angular Ivy- An Overview
Angular Ivy- An OverviewAngular Ivy- An Overview
Angular Ivy- An OverviewJalpesh Vadgama
 
How to organize the business layer in software
How to organize the business layer in softwareHow to organize the business layer in software
How to organize the business layer in softwareArnaud LEMAIRE
 
Software Architecture
Software ArchitectureSoftware Architecture
Software ArchitectureYoav Avrahami
 
Introduction to Aspect Oriented Programming by Donald Belcham
Introduction to Aspect Oriented Programming by Donald BelchamIntroduction to Aspect Oriented Programming by Donald Belcham
Introduction to Aspect Oriented Programming by Donald Belcham.NET Conf UY
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Marco Breveglieri
 
EoinWoods_WhereDidMyArchitectureGoPreservingSoftwareArchitectureInItsImplemen...
EoinWoods_WhereDidMyArchitectureGoPreservingSoftwareArchitectureInItsImplemen...EoinWoods_WhereDidMyArchitectureGoPreservingSoftwareArchitectureInItsImplemen...
EoinWoods_WhereDidMyArchitectureGoPreservingSoftwareArchitectureInItsImplemen...Kostas Mavridis
 

Similar to EMF Scaffolding (20)

Wessel Loth - Fire your Frontend Framework with Lit - TEQnation 2022.pdf
Wessel Loth - Fire your Frontend Framework with Lit - TEQnation 2022.pdfWessel Loth - Fire your Frontend Framework with Lit - TEQnation 2022.pdf
Wessel Loth - Fire your Frontend Framework with Lit - TEQnation 2022.pdf
 
Features, Exportables & You
Features, Exportables & YouFeatures, Exportables & You
Features, Exportables & You
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overview
 
Maglev-A different way to develop with Ruby
Maglev-A different way to develop with RubyMaglev-A different way to develop with Ruby
Maglev-A different way to develop with Ruby
 
.NET? MonoDroid Does
.NET? MonoDroid Does.NET? MonoDroid Does
.NET? MonoDroid Does
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
Java 9, JShell, and Modularity
Java 9, JShell, and ModularityJava 9, JShell, and Modularity
Java 9, JShell, and Modularity
 
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014Hadoop Demystified + Automation Smackdown!  Austin JUG June 24 2014
Hadoop Demystified + Automation Smackdown! Austin JUG June 24 2014
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
Developing modular Java applications
Developing modular Java applicationsDeveloping modular Java applications
Developing modular Java applications
 
Angular Ivy- An Overview
Angular Ivy- An OverviewAngular Ivy- An Overview
Angular Ivy- An Overview
 
How to organize the business layer in software
How to organize the business layer in softwareHow to organize the business layer in software
How to organize the business layer in software
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Introduction to Aspect Oriented Programming by Donald Belcham
Introduction to Aspect Oriented Programming by Donald BelchamIntroduction to Aspect Oriented Programming by Donald Belcham
Introduction to Aspect Oriented Programming by Donald Belcham
 
Introduction To AOP
Introduction To AOPIntroduction To AOP
Introduction To AOP
 
Intro To AOP
Intro To AOPIntro To AOP
Intro To AOP
 
Module development
Module developmentModule development
Module development
 
Design p atterns
Design p atternsDesign p atterns
Design p atterns
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
 
EoinWoods_WhereDidMyArchitectureGoPreservingSoftwareArchitectureInItsImplemen...
EoinWoods_WhereDidMyArchitectureGoPreservingSoftwareArchitectureInItsImplemen...EoinWoods_WhereDidMyArchitectureGoPreservingSoftwareArchitectureInItsImplemen...
EoinWoods_WhereDidMyArchitectureGoPreservingSoftwareArchitectureInItsImplemen...
 

More from 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
 

More from 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
 

Recently uploaded

Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Babel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxBabel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxYounusS2
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
GenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncGenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncObject Automation
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum ComputingGDSC PJATK
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 

Recently uploaded (20)

Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
Babel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxBabel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptx
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
GenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncGenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation Inc
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum Computing
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 

EMF Scaffolding

  • 2. What is scaffolding ? • Scaffolds are temporary structures that physically support workers while they complete jobs that would otherwise be impossible (HH93, p138)
  • 3. Scaffolding in software • Ruby on Rails • *Rails scripting frameworks bring blazing fast productivity in their own specific technological space • Mainly through Scaffolding !
  • 4. Ruby on Rails Scaffolding • Meta-Programming • Scaffolding works at the code level • Scaffolding engine operates on code as a model • Can be either – Static : on demand – Dynamic : transparently on your behalf Entity.rb DAO.rb
  • 5. Others • Ruby On Rails • Grails • Spring ROO • Play! • CakePHP • Monorail • Symfony • …
  • 6. What’s the point ? • Model-Driven brings quality, durability, maintainability • What about productivity ? – Goal: Enhance modeling expressiveness, simplicity and overwhole productivity
  • 7. What is Scaffolding applied to Modeling ? • Creating partial model structures on behalf of the designer that he would otherwise have to create by himself
  • 8. Model Scaffolding taxonomy • Blind versus In-Place Scaffolding • Static versus Dynamic Scaffolding • The greener the better 
  • 9. Model Scaffolding taxonomy 1. Classical code generation 2. Compensated code generation 3. « Blind » scaffolding 4. « In-Place » scaffolding • Each static or dynamic
  • 10. Sample problem domain • 3-Tiers Architecture • DSL containing concepts – Entity – DAO – Service • Java code is generated • Légende Generation Reference Model separation File Entity or DAO Service ScaffoldedGenerated Hand-written Color code
  • 11. Classical code generation 1/2 • Entities are modeled • Entity and DAO source codes are generated from the modeled Entity • Problem: What if you want to define queries in your model ? Entity Entity.java DAO.java Model Text
  • 12. Classical code generation 2/2 • Entity and DAOs are modeled • Entity source code is generated from the modeled Entity • DAO source code is generated from modeled DAO • DAOs which are not modeled are not generated • Problem: You need to define all DAOs… • Even those that only do CRUD Entity Entity.java DAO.java Model Text DAO
  • 13. Compensated code generation • Source code is still generated for modeled elements • For Entities which have no modeled DAO, we compensate by generating source code for the DAO from the modeled Entity • Advantage: Only custom DAOs are modeled • Problem: DAO code generation logic is duplicated – Entity -> DAO.java – DAO -> DAO.java Entity One DAO OneEntity Two One.java OneDAO.java Two.java TwoDAO.java Model Text
  • 14. Generation « Blind » Model Scaffolding • Each model is a step in the MDSD chain • An intermediate step is introduced • Each model can only « see » the model before • Existing elements are copied as is • A DAO is generated for each entity which has no DAO • Advantage: Only one DAO code generation logic • Problem: How do you reference scaffolded elements Entity One Entity One Entity Two DAO TwoDao Entity Two DAO TwoDao DAO OneDao One.java OneDAO.java Two.java TwoDAO.java Model i Model i-bis Model i+1
  • 15. How to reference scaffolded elements ? • The problem is illustrated by introducing a service • The ‘Alpha’ service can reference the modeled DAO ‘TwoDao’ but not the scaffolded DAO ‘OneDao’ • The scaffolded DAO ‘OneDao’ is located in a model that the ‘Alpha’ service cannot see • Problem: « Blind » scaffolding doesn’t allow scaffolded elements referencing Entity One Entity One DAO OneDao Service Alpha Modèle i Modèle i-bis Entity Two DAO TwoDao
  • 16. « In-place » Model Scaffolding • ‘OneDao’ DAO is scaffolded in the same model as Entity ‘One’ • The DAO is « visible » without being materialized in the input model • Advantage: Le ‘Alpha’ service can reference the scaffolded DAO ‘OneDao’ • Problem: How to customize a scaffolded element ? Entity One DAO OneDao One.java AlphaService.java OneDao.java Service Alpha Model i Model i+1
  • 17. Takeover 1/3: Overview • User can take over scaffolded elements • The over taken element is then materialized in the input model • Advantage: The DAO can be customized Entity One DAO OneDao Service Alpha Iteration n Iteration n+1 Entity One DAO OneDao Service Alpha
  • 18. Takeover 2/3: Zoom • After the DAO taking over, CRUD methods are still scaffolded • Advantage: No need to manually input previously scaffolded elements Entity One Service Alpha Iteration n Entity One Service Alpha DAO OneDao create read update delete DAO OneDao create read update delete Iteration n+1
  • 19. Takeover 3/3: Customisation • Let’s add a finder finder • CRUD methods are still scaffolded • Advantage: Only customizations are hand written, CRUD methods are scaffoldedEntity One Service Alpha DAO OneDao create read update delete myFinder Entity One Service Alpha DAO OneDao create read update delete Iteration n+1 Iteration n+2
  • 20. Deletion 1/2: The problem • What happens if the user deletes an element for which elements were scaffolded ? • Scaffolded elements must also be deleted Entity One DAO OneDao One.java AlphaService.java OneDao.java Service Alpha Model i Model i+1
  • 21. Deletion 2/2: solutions • Need to keep track of scaffolded elements • Only really a problem with dynamic « in- place » scaffolding • For static and/or « blind » scaffolding, scaffolded elements can just be computed all over again
  • 23. What Scaffolding engine ? • A model to model transformation engine ? – ATL – Xtend – QVT Operational – QVT Relational – Obeo Transfo – … • A rule engine ? – Drools – Any OO Rule Engine …
  • 24. A rule engine ?? • Scaffolding rules as production rules • The model as a working memory • Model elements as facts • When a given condition is met, new facts are inserted into working memory • Those new facts are attached to the model as new elements
  • 25. Rule engine sync process Entity One DAO OneDao Working MemoryModel Entity One DAO OneDao reference reference synchronize synchronize Scaffolding Rule
  • 26. Drools sample rule • Sample Drools DAO scaffolding rule
  • 27. MDSD Scaffolding benefits • Accelerates modeling • Allows to quickly come up with a working model • The user starts from the begining with a complete model (complete in the direction the scaffolding takes him) • Provides the user with a fast feedback • Allows to enrich the input model as well as facilitating its usage for the new user • Brings flexibility while keeping simplicity • Scaffolding can be complemented by code generation and model validation • The user can whenever he wants take over the scaffolded elements in order to customize them

Editor's Notes

  1. You might be wondering what scaffolding is Those structures that you find on building sites Here is a brief definition It’s not important if you’ve not quite figured out what it is a the end of this slide We’ll see pragmatic uses later on and should have figured it out by the time we get there
  2. Scaffolding engine operates on the code as a model Surprising that dynamic scaffolding has been dropped in ROR2 Maybe it’s because you lose control Keeping control is really important We’ll see later on how it’s achieved in modeling context Static: The scaffolding occurs on demand. You ask for it explicitely Dynamic: Scaffolding is going to occur transparently on your behalf
  3. Broadly accepted that Model-Driven brings quality You have to design each and every piece of the model that you’re working on What if some pieces of the model could be defined on behalf of you ?
  4. Temporary structures that facilitates user modeling while they complete jobs that they would otherwise have to do by themselves Part of the model that is created on behalf of the user that he would otherwise have to create by himself. Scaffolds are temporary structures that conceptually support designers while they complete jobs that would otherwise be cumbersome Scaffolds are partial model structures created on behalf of the designer that conceptually support designers while they complete jobs that would otherwise be cumbersome
  5. On modélise l’Entity et le DAO Le code source de l’Entity est généré à partir de L’Entity modélisée Le code source du DAO est généré à partir du DAO modélisé Les DAO qui ne sont pas modélisés n’ont pas de code source généré Problème: Nécessite de modéliser tous les DAO … Même ceux qui ne font que du CRUD
  6. Rule engine Alternate computational model Instead of the usual imperative model Provides a list of production rules Each rule has a condition and an action When the condition is met, new facts are asserted