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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Destaque

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
 

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

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

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

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

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Último (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

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

Notas do Editor

  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