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

  • 1,346 views
Uploaded on

Presentation on MDSD Scaffolding applied using EMF.Edit, a rule engine and Acceleo. …

Presentation on MDSD Scaffolding applied using EMF.Edit, a rule engine and Acceleo.

This talk was given at Eclipse Acceleo Day, on Friday 10th July 2009 during RMLL.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,346
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
1
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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
  • 25. Model scaffoldingcomparison
  • 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
  • 29. Droolssamplerule
    SampleDrools DAO scaffoldingrule
  • 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.