Your SlideShare is downloading. ×
0
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
DSL Best Practices
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

DSL Best Practices

1,734

Published on

In this deck I describe twenty best practices for using external DSLs to develop software (also know as Model-Driven Development). The best practices are based on my personal experience, but they are …

In this deck I describe twenty best practices for using external DSLs to develop software (also know as Model-Driven Development). The best practices are based on my personal experience, but they are also rated based on feedback I received from a number of colleagues to express the level of confidence experts have in the particular best practice.
The slides cover three main aspects: language definition, model processing as well as process and organizational issues. Examples include the importance of notations, viewpoints and partitioning, the role of constraints, model transformations and testing as well as some thoughts on documentation, reviews and project roles.
Putting twenty best practices into 5.000 words of course results in each best practice being quite brief. However, it also means each is highly condensed and to the point. I believe the slides remind developers of most of the critical aspects of using DSLs, and it can serve as a checklist when starting an MD* project.

Published in: Technology
2 Comments
13 Likes
Statistics
Notes
  • e e e e
    the ppt far too large
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Very nice overview of the entire chain of building and working with DSLs!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
1,734
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
2
Likes
13
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.
  • 2. MD*
    MD*
    Best Practices
    MarkusVoelter
    MD*
    Independent/itemis AG
    www.voelter.devoelter@acm.org
  • 3.
  • 4. About
    Markus Voelter
    Independent Consultant
  • 5. About
    Markus Voelter
    Independent Consultant
    Software Architecture
    DSLs & MDSD
    ProductLines
  • 6. About
    Markus Voelter
    Independent Consultant
    http://www.voelter.de
    voelter@acm.org
    skype: schogglad
  • 7.
  • 8. Read the
    Paper!
    http://www.voelter.de/data/articles/DSLBestPractices-Website.pdf
  • 9.
  • 10.
    DesigningLanguage

    the
  • 11.
  • 12. Sourcesforthe Language
  • 13. Technical DSLs
    extractedfrom
    … framework
    … library
    … pattern (language)
    … architecture
    Language Sources
  • 14. Business DSLs
    extractedfrom
    Language Sources
  • 15. Domain Analysis
    Language Sources
  • 16. Domain Analysis
    Language Sources
    Not just software!
  • 17. Limit Expressiveness
  • 18. Limit Expressiveness
  • 19. Configuration
    select
    …fromconfigspace
    Limit Expressiveness
    … Properties
    … Feature Models
  • 20. Customization
    compose
    … creatively
    Limit Expressiveness
    … Vocabulary
    … Sentences
    … Box and Line
  • 21. Precision
    preciselywhat
    Limit Expressiveness
    … facts
    … declarative
    … domainexpertscan!
  • 22. AlgorithmicCompleteness
    formallyhow
    Limit Expressiveness
    … automation
    … execution
    … in model processors
    … developers can!
  • 23. Limit Expressiveness
    Use a 3GLifnecessary
    Generate APIs, Hooks
  • 24. Do you want
    users
    to build their own
    Limit Expressiveness
    abstractions
    with the language?
  • 25. DSL is a compromise:
    … Domain Abstractions
    … Reuse, Modularization, …
    Limit Expressiveness
    … All Data for Generation
    … DSL Tool influences
    Viewpoints?
  • 26. Notation, Notation, Notation
  • 27. Domain Users
    caredeeply
    Notation, …
    aboutnotation!
    „UI“ forthelanguage
  • 28. Textual
    Graphical
    Form-Based
    Spreadsheet
    Notation, …
  • 29. Parts
    Notation, …
  • 30. Convertible
    Notation, …
  • 31. Embedded
    Notation, …
  • 32. Notation, …
    Tool
    Specific!
  • 33. Graphical vs. Textual
  • 34. Graphical
    Sequence/Flow
    Grapical vs. Textual
  • 35. Graphical
    Grapical vs. Textual
    Relationships
  • 36. Graphical
    Grapical vs. Textual
    Timing
  • 37. Textual
    In all othercases!
    Grapical vs. Textual
  • 38. Textual
    Real simple…
    …CVS/SVN Integration
    … Diff/Merge
    … Buildautomation
    … Model Migration
    Grapical vs. Textual
  • 39. Text + Visualization
    Grapical vs. Textual
  • 40. Text + Visualization
    … problem-specific
    … anwers specific questions
    … highlight specific aspects
    … several different
    Grapical vs. Textual
    visualizations
  • 41. DSL Semantics
  • 42. ?
    Whatdoesit all
    mean?
    DSL Semantics
  • 43. DSL Semantics
  • 44. DSL Semantics
  • 45. DSL Semantics
  • 46. DSL Semantics
    Documentation
  • 47. Viewpoints
  • 48. Viewpoints
  • 49. Viewpoints
  • 50. Well-defined
    DependenciesandConnectionPoints
    Viewpoints
  • 51. Try toavoid
    overlapandtheneedforsynchronization.
    Viewpoints
  • 52. Viewpoints
    Tool
    Specific!
  • 53. Partitioning
  • 54. scale
    MD* tools do not
    Partitioning
    arbitrarily!
  • 55. Partitions
    Partitioning
    … separate resources
    … != logicalstructure
    … unitsof check in/out … processable separately
    … unit of IP
  • 56. X
    cross
    Partition
    references
    Partitioning
    … lazy
    … byproxy
    … byname w/ linker
  • 57. Partition
    Partitioning
    … not transparent
    … partoflanguage design
    … referencableelements
    … „includepath“
  • 58. Partitioning
    Tool
    Specific!
  • 59. Evolution
  • 60. Whatto do withexisting
    models
    Evolution
    ifthe
    language
    changes?
  • 61. MightRequire…
    Evolution
    … configmanagement
    … version tag in models
    … changetracking
    … migration M2M
  • 62. Think about…
    Evolution
    … backwardcompatibility
    … deprecation
    … instrumentation
    … viewpoints + partitions
  • 63. Evolution
    Tool
    Specific!
  • 64. The Fallacyof
    GenericLanguages
  • 65. FallacyofGeneric Lang.
  • 66. Youcan model
    everything
    with
    FallacyofGeneric Lang.
  • 67. Youcan model
    everything
    with
    FallacyofGeneric Lang.
    somehow!
  • 68. Problem
    Shoehorningdomainabstractionsintothe
    genericlanguage
    FallacyofGeneric Lang.
  • 69. Problem
    Sidetrackedbyexistingabstractionsandnotations
    FallacyofGeneric Lang.
  • 70. FallacyofGeneric Lang.
    Very LimitedTool Support!
    Notations/ Abstractionsextensiblevia Profiles
  • 71. Meta Model
    Complexity!
    FallacyofGeneric Lang.
  • 72. Wherearestandardsuseful?
    FallacyofGeneric Lang.
  • 73. Peoplehavetolearnunderlying
    concepts anyway.
    FallacyofGeneric Lang.
  • 74. Is UML witha profilestill a standardlanguage?
    FallacyofGeneric Lang.
  • 75. On whichmetaleveldo I wanttostandardize?
    M2 (UML), M3 (MOF)?
    FallacyofGeneric Lang.
  • 76. Isn‘t a DSLbased on MOFas „standard“ as a profilebased on UML?
    FallacyofGeneric Lang.
  • 77. Introduce an
    intermediate
    language
    FallacyofGeneric Lang.
  • 78. separate
    DSL
    viewpoints
    UML + DSL
    DS Model
    FallacyofGeneric Lang.
  • 79. FallacyofGeneric Lang.
    BPM
    is to analysts
    what
    UML
    is to developers.
  • 80. Butdon‘treinventthewheeleither.
    FallacyofGeneric Lang.
  • 81. Build your own languageinspiredbyexisting language
    FallacyofGeneric Lang.
  • 82. Learnfrom 3GLs
  • 83. DSL != 3GL
    Learnfrom 3GLs
    But:
  • 84. Namespaces
    VisibilityEncapsulation
    Scoping
    Specialization
    Cohesion
    Coupling
    abstract

    Wecan learn:
    Learnfrom 3GLs
  • 85. Read thisBook:
    Learnfrom 3GLs
    Concepts, TechniquesandModels of Computer Programming
    by Peter Van Roy and SeifHaridi
  • 86. Type Systems
  • 87. Knownfrom3GLs
    Type Systems
    Classes & Objects
  • 88. Examples:
    Components
    & Instances
    Type Systems
    Data Types
    & Instances
    Config Table Defs
    & ConfigTables
  • 89. Viewpoint B
    (Types)
    Type Systems
    instanceof
    Viewpoint A
    (Instances)
  • 90. Viewpoint B
    (Types)
    Type Systems
    instanceof
    Viewpoint A
    (Instances)
  • 91. MetaMeta Model (M3)
    instanceof
    Viewpoint B
    (Types)
    MetaModel (M2)
    Type Systems
    instanceof
    Viewpoint A
    (Instances)
    instanceof
    Model (M1)
  • 92. Support for ReuseandVariations
  • 93. There‘smoreto
    reuse
    Reuse andVariations
    than
    partitions
  • 94. The language
    must provide
    explicit
    Reuse andVariations
    support!
    (wecanlearnthatfrom OO)
  • 95. Specialization
    overriding, overwriting
    Leaving Holes
    Reuse andVariations
    for variant tofill in
    InjectStuff
    severalplacesat a time?
  • 96. Specialization
    Inheritance
    Leaving Holes
    Reuse andVariations
    Template Method Pattern
    InjectStuff
    Aspect Orientation
  • 97. Reuse andVariations
    Makesureyou
    delineate
    the API!
  • 98. Reuse andVariations
    Domain Users
    might not
    understand this!
  • 99. Who are 1st Class Citizens?
  • 100. Big Language
    Who are 1st Class Citizens
    withmanyconcepts!
  • 101. Small Language
    Who are 1st Class Citizens
    withfew, but powefulconcepts!
  • 102. Big Language
    Easierfor Business Users
    Concepts easy to find
    COBOL style
    Who are 1st Class Citizens
  • 103. Small Language
    Technical DSLs
    Conceptsharderto find
    More expressive
    Lisp Style
    Who are 1st Class Citizens
  • 104. Do not
    mix
    Reuse andVariations
    thetwostyles!
  • 105. Teamwork Support
  • 106. Versioning
    Lock
    Check in/out
    Diff/compare
    Merge
    Branch
    Tag
    Teamwork Support
  • 107. Versioning
    Lock
    Check in/out
    Diff/compare
    Merge
    Branch
    Tag
    Teamwork Support
    On the
    Level ofthe
    Concrete Syntax!
  • 108. Versioning
    Lock
    Check in/out
    Diff/compare
    Merge
    Branch
    Tag
    Teamwork Support
    Together
    withmanually
    written Source!
  • 109. Repository
    vs.
    Teamwork Support
    File-Based
  • 110. Repository
    … Element-Specific
    … Real-Time
    … Oftengoodfor Business DSLs
    Teamwork Support
  • 111. File-Based
    … like SCMs
    … integrates wellwithmanuallywrittencode
    … Technical DSLs
    Teamwork Support
  • 112. File-Based
    … integratesvery well with (real) textual DSLs
    Teamwork Support
  • 113. Teamwork Support
    Tool
    Specific!
  • 114. ToolingMatters!
  • 115. The Language
    is not
    ToolingMatters!
    enough!
  • 116. Teamwork
    Navigation
    Overviews
    Searching
    Quick-find
    Find-references
    Show usage
    Refactoring
    Debugging
    Code Completion
    Syntax Highlighting
    The Language
    is not
    ToolingMatters!
    enough!
  • 117. The Language
    is not
    ToolingMatters!
    enough!
    Thisis also
    trueforthe
    Meta
    Developers!
  • 118. Users shouldbeable
    toworkwithandstore
    wrong
    or
    ToolingMatters!
    incomplete
    models!
  • 119. Users shouldbeable
    toworkwithandstore
    wrong
    or
    ToolingMatters!
    incomplete
    models!
    Temporarily.
    Noprocessing!
  • 120. ToolingMatters!
    Nightly
    Build!
  • 121.
  • 122.
    ProcessingModels

    the
  • 123.
  • 124. Interpretation
    Generation
    vs.
  • 125. Interpretation
    Interpretation vs. Generation
  • 126. Generation
    Interpretation vs. Generation
  • 127. Generation
    resultingcode
    Interpretation vs. Generation
    canbeeasily
    inspected
  • 128. Generation
    resultingcode
    Interpretation vs. Generation
    canbeeasily
    debugged
  • 129. Generation
    resultingcode
    canbe
    Interpretation vs. Generation
    optimized
    andmore
    efficient
  • 130. Generation
    Templates canbe
    Interpretation vs. Generation
    derived
    fromexistingcode
  • 131. Generation
    workaround
    Interpretation vs. Generation
    limitations
    oftargetlanguage
  • 132. Generation
    nochanges
    Interpretation vs. Generation
    totargetenvironment
    (leavesnotrace)
  • 133. Generation
    reuse
    Interpretation vs. Generation
    runtime infrastructure
    (garbage collection, monitoring…)
  • 134. Interpretation
    faster
    turnaround
    Interpretation vs. Generation
    noregeneration
    test
    build
    deploy
  • 135. Interpretation
    for platform indepenence
    an interpreter might be
    Interpretation vs. Generation
    less porting
    effort
  • 136. Combinations
    Interpretation vs. Generation
  • 137. Rich Domain SpecificPlatform
  • 138. Rich Platform
  • 139. Rich Platform
    Grownwiththe DSL!
  • 140. Extreme Case
    Rich Platform
    populates
  • 141. Checks Firstand Separate
  • 142. Language Structure
    is not enough.
    Checks firstand separate
    Youneedconstraints.
    Boolean expressionsthatvalidate
    the model beyondstructure.
  • 143. Model
    G
    Checks firstand separate
    … complex
    Constraints
    Code
  • 144. Model
    Checks firstand separate
    G
    G‘
    … complex
    … duplication
    Constraints
    Constraints
    Code
    Code‘
  • 145. separate phase
    Model
    firstclasscitizens
    muchbetter.
    Constraints
    Checks firstand separate
    G
    G‘
    check asmany
    aspossible.
    makeittight.
    Code
    Code‘
  • 146. different constraints
    atdifferenttimes
    orfor
    Checks firstand separate
    different partitions
    ofthe model
    partition-local: editor, on-save
    global: batch, on-request
  • 147. check early.
    Model
    moresemantics.
    Constraints
    bettermessages.
    T
    Model‘
    Checks firstand separate
    T
    Model‘
    G
    Code
  • 148. Model
    Constraints 1
    constraints 1 ok
    T
    implies
    Model‘
    constraints 2 ok
    Checks firstand separate
    Constraints 2
    implies
    T
    constraints 3 ok
    Model‘
    Constraints 3
    G
    Code
  • 149. ERROR
    WARNING
    Checks firstand separate
    INFO
  • 150. IntegratingGeneratedandManuallyWritten Code
  • 151. Ifat all possible,
    Do not modify
    Integrated Gen/Man Code
    Generated Code!
  • 152. ProtectedRegions
    are a badideabecause
    generatedcode
    Integrated Gen/Man Code
    is not a
    throwaway
    anymore.
  • 153. ProtectedRegions
    … needto check in
    … sedimentofgeneratedcode
    Integrated Gen/Man Code
  • 154. Better Approach:
    Hooks
    Integrated Gen/Man Code
    in thegeneratedcode
  • 155. Better Approach:
    Hooks
    Integrated Gen/Man Code
    in thegeneratedcode
    extension points, base class, abstract methods & subclassing, empty callback methods, delegate, implement interfaces, #include, reflection, AOP, design patterns, partial classes
  • 156. Integrated Gen/Man Code
  • 157. ControlManuallyWritten Code
  • 158. After codegeneration
    how do youmakesure
    developersfollow
    Control Manual Code
    all therequired
    procedures?
  • 159. procedures?
    … subclass
    … overwrite
    … naming
    conventions
    Control Manual Code
  • 160. Compiler Errors
    are not enough.
    Control Manual Code
    wrong
    abstraction
    level!
  • 161. generatechecks
    againstthecodebase
    Control Manual Code
    evaluatedbytheIDE
  • 162. if (false) { GeneratedBaseClass x = new ManualSubclass(); }
    Control Manual Code
  • 163. Care aboutgeneratedcode
    Andrew Vargas
  • 164. Generated Code a
    Throwaway
    Product?
    Care aboutGenerated Code
  • 165. Generated Code a
    Throwaway
    Product?
    Care aboutGenerated Code
    Yes.
    Can beregenerated.
  • 166. But:
    must be…
    … written (templates)
    … understood
    … debugged
    Care aboutGenerated Code
  • 167. But:
    must be…
    … written (templates)
    … understood
    … debugged
    … extended
    … programmedagainst
    Care aboutGenerated Code
    ifyoudon‘tgenerate100%:
  • 168. Care!
    … indent
    … usegoodnames
    … document
    … modularize
    Care aboutGenerated Code
  • 169. Make CodeTrue to Model
  • 170. Analyses on the model
    canverify all kindsof
    properties
    aboutthe
    Code truetothe Model
    system.
  • 171. Analyses on the model
    canverify all kindsof
    properties
    aboutthe
    Code truetothe Model
    system.
    Iffthecodeis
    true
    tothe model
  • 172. Use a clever
    programming model
    Code truetothe Model
    thatdoes not allow
    violations.
  • 173. generatethe
    configuration
    for
    architectureanalysis
    tools.
    SoftwareTomographySonarJ
    Structure 101
    … andthelike
    Code truetothe Model
  • 174. Viewpoint-AwareProcessing
  • 175. whenandhow do you
    and
    validate
    process
    Viewpoint-Aware Processing
    eachviewpoint?
  • 176. whenandhow do you
    and
    validate
    process
    Viewpoint-Aware Processing
    eachviewpoint?
    Roles?
    Process?
  • 177. Generate in phases:
    type
    developer
    implementmanualcode
    Viewpoint-Aware Processing
    deployment
    integrator
    run on targetsystem
    behaviour
    runtime
    interpretstatemachine
  • 178. Also consider
    partitions
    Viewpoint-Aware Processing
    in thiscontext!
  • 179. Overall ConfigurationViewpoint
  • 180. Teamwork
    Partitions
    Viewpoints
    Multiple Targets
    Overall ConfigurationViewpt.
    Multiple Configurations
  • 181. Teamwork
    Partitions
    Viewpoints
    Multiple Targets
    Overall ConfigurationViewpt.
    Multiple Configurations
    large ormany
    models
  • 182. Overall ConfigurationViewpt.
  • 183. Overall ConfigurationViewpt.
  • 184. Putthisoverall
    configurationinto
    Overall ConfigurationViewpt.
    a model:
    configuration
    viewpoint
  • 185. Care About Templates
  • 186. Templates
    … importantasset
    Care about Templates
    … containplatform
    knowledge
    … tendtogrow
    morecomplex
  • 187. Care!
    … modularize
    Care about Templates
    … functions
    … naming
    … polymorphism
    … aspects
    … refactor
  • 188. Indentforthetemplates
    andthenuse a
    beautifier
    forthe
    Care about Templates
    generatedcode.
  • 189. Indentforthetemplates
    andthenuse a
    beautifier
    forthe
    Care about Templates
    generatedcode.
    exceptifyouuse a langauage
    withsemanticwhitespace!
  • 190. Care about Templates
    GoodPlatform.
    Fewer Templates.
    Less Care.
  • 191. Model-2-Model
    ToSimplify Generators
  • 192. Reducingtemplate
    complexity
    isimportant.
    M2M toSimplify Generators
  • 193. Reducingtempalte
    complexity
    isimportant.
    M2M toSimplify Generators
    Separation ofConcerns
    isthewaytogo.
  • 194. Insteadofputting
    complexlogic
    intothetemplates
    M2M toSimplify Generators
    putitinto an M2M
    thatruns
    beforecode gen.
  • 195. M2M toSimplify Generators
  • 196. M2M toSimplify Generators
  • 197. In-language
    reduction rules:
    M2M toSimplify Generators
  • 198. Model-2-Model
    For Simulation andProof
  • 199. Many
    usefulformalisms
    alreadyexist.
    M2M for Simulation andProof
  • 200. Many
    usefulformalisms
    alreadyexist.
    M2M for Simulation andProof
    Simulation
    Proofs
    Properties
  • 201. Use an M2M
    forthisifpossible.
    M2M for Simulation andProof
    OftentheinputisXML
    so youactually
    „generatecode“
  • 202. Cascading
  • 203. ?
    PIM?
    Cascading
    PSM?
    PSSM?
  • 204. BottomUp
    Cascading
    Works Better!
  • 205. Cascading
    M2T
    Code + othertargetplatformartifacts
  • 206. Cascading
    M2M
    M2M
    M2T
    M2T
    Code + othertargetplatformartifacts
  • 207. M2M
    Cascading
    M2M
    M2M
    M2T
    M2T
    Code + othertargetplatformartifacts
  • 208. MODELS READ ONLY!
    M2M
    Cascading
    M2M
    M2M
    M2T
    M2T
    Code + othertargetplatformartifacts
  • 209. Allowfor
    Adaptations
  • 210. EconomiesofScale
    Reuse!
    AllowforAdaptations
  • 211. EconomiesofScale
    Reuse!
    AllowforAdaptations
    But:
    Adaptations!
  • 212. EconomiesofScale
    Reuse!
    AllowforAdaptations
    But:
    Adaptations!
    Unexpected
  • 213. Annotations on Models
    n/v pairs
    AllowforAdaptations
    tobeused in generators
    Adaptations on Templates
    Template-AO
    Factories/Polymorphism
  • 214. AllowforAdaptations
    Becarefulto
    delineate
    the API!
  • 215. Annotation Models
  • 216. M2M
    Annotation Models
    M2M
    M2T
    M2T
    Code + othertargetplatformartifacts
  • 217. M2M
    Annotation Models
    M2M
    M2M‘
    M2T
    M2T
    Code + othertargetplatformartifacts
  • 218. Annotation Model
    references
    elements in base model.
    Annotation Models
    Transformation
    takes additional
    informationinto
    account.
  • 219. Makesurethe
    annotation model
    onlycaptures
    Annotation Models
    Exceptions
    fromthedefault
    in thetemplates.
  • 220. ClassifyBehaviour
  • 221. ?
    Action
    Semantics
    ClassifyBehaviour
    Languages
    useful?
  • 222. ?
    Action
    Semantics
    ClassifyBehaviour
    Languages
    useful! But…
  • 223. Classify!
    … statebased
    … businessrules
    ClassifyBehaviour
    … mathematics
  • 224. Classify!
    … statebased
    … businessrules
    ClassifyBehaviour
    … mathematics
    … or a specific DSL
  • 225. Classify!
    … statebased
    … businessrules
    ClassifyBehaviour
    … mathematics
    … or a specific DSL
    … 3GL code
  • 226. Don‘tforget
    Testing
  • 227. Don‘t Forget Testing
    Limited Expressiveness.
    Reduced Need For Tests.
  • 228. Don‘t Forget Testing
    Constraint Checks.
    A Form of Test.
  • 229. Better Testing
    Generator
    Example
    Models
    Code
    Don‘t Forget Testing
    Based On
    Binary
    Test Cases
    (hand written)
    Tests
  • 230. Better Testing
    Generator
    Example
    Models
    Code
    Don‘t Forget Testing
    Based On
    Models and Language serve as meaningful „spec“ for what to test
    Binary
    Test Cases
    (hand written)
    Tests
  • 231. Testing Generators
    Generator
    Reference
    Model
    Code
    Don‘t Forget Testing
  • 232. Testing Generators
    Generator
    Reference
    Model
    Code
    Don‘t Forget Testing
    Based On
    Binary
    Reference
    Test Cases
    Tests
  • 233. TestingTransformations
    M2M
    ResultModel
    Reference
    Model
    Don‘t Forget Testing
  • 234. TestingTransformations
    M2M
    ResultModel
    Reference
    Model
    Don‘t Forget Testing
    Based On
    Reference
    Constraints
    Tests
  • 235. TestingMetware
    Reference
    Model
    … maintaned!
    Don‘t Forget Testing
    … bymetaware
    Reference
    Test Cases
    developers
    Reference
    Constraints
  • 236. This tests
    only the generators
    Generator
    Model
    Code
    Don‘t Forget Testing
    Tests
    Generator
    Test Code
  • 237. This tests not
    the model:
    self fulfilling!
    Generator
    Model
    Code
    Don‘t Forget Testing
    Tests
    Generator
    Test Code
  • 238. Separate test models
    and generated test code
    Model
    Generator
    Code
    Don‘t Forget Testing
    based on
    tests
    Test Model
    (Test Language)
    Generator
    Test Code
  • 239. Separate test models
    and generate Mocks
    Model
    Generator
    Code
    Mocks
    Don‘t Forget Testing
    based on
    tests
    Generator
    Test Model
    (Test Language)
    Generator
    Test Code
  • 240. Auto-Derived Test Models
    work sometimes.
    Model
    Generator
    Code
    Don‘t Forget Testing
    automatically derived
    tests
    Test Model
    (Test Language)
    Generator
    Test Code
  • 241.
  • 242.
    ProcessOrganization

    the
  • 243.
  • 244. Iterate!
  • 245. Waterfallisbad!
    WithorWithout MD*
    Iterate!
  • 246. Iterate!
    Concepts
  • 247. Iterate!
    Concepts
    Language
  • 248. Iterate!
    Examples
    Concepts
    Language
  • 249. Generator+Tests
    Iterate!
    Examples
    Concepts
    Language
  • 250. Generator+Tests
    Editor Beautification
    Iterate!
    Examples
    Concepts
    Language
  • 251. Co-Evolve Language andConcepts
  • 252. Co-Evolve Language & Domain
  • 253. Co-Evolve Language & Domain
  • 254. Building a language
    requires
    Formalization
    Co-Evolve Language & Domain
  • 255. Building a language
    requires
    Formalization
    Co-Evolve Language & Domain
    requiresyouto
    thinkanddecide
    aboutthedomain.
  • 256. Co-Evolve Language & Domain
    requiresfrequent
    Evolution!
  • 257. Co-Evolve Language & Domain
    and flexible, agile
    Tooling!
  • 258. Documentationis still necessary
  • 259. The DSL and the „programs“ are documentation.
    Documentation still necessary
  • 260. The DSL and the „programs“ are documentation.
    Not Quite!
    Documentation still necessary
  • 261. Language Definition
    is not a
    Teaching Tool!
    Documentation still necessary
  • 262. Tutorials
    … Concepts
    … Howtouse Language
    Documentation still necessary
    … Howtointegrate
    manualcode
    Example-Driven!
  • 263. Language Definition
    captures
    the WHAT
    but not
    the WHY
    Documentation still necessary
  • 264. Rationales
    … whytheconcepts?
    … whywegenerate
    Documentation still necessary
    whatwegenerate
    … targetplatform de-
    cisionsandidioms
    Grammar as Reference!
  • 265. Different Media
    Documentation still necessary
  • 266. Reviews
  • 267. Reviews
    In mostcases,
    peoplecan still
    makemistakes.
  • 268. DSL programs
    aremoreconcise, so
    Reviews
    reviewsare
    moreefficient.
  • 269. Repeated „Mistakes“?
    Add constraint check.
    Reviews
  • 270. Repeated „Mistakes“?
    Add constraint check.
    Reviews
    Ormaybethelanguage
    iswronganditis
    not a mistake?
  • 271. Letpeople do what
    they‘regoodat
  • 272. MD* hasseveral
    clearlydefined
    Let‘em do whatthey‘regoodat
    Roles
  • 273. Tech Experts
    … evaluatetechnologies
    … digdeep
    Let‘em do whatthey‘regoodat
    … tune
    … createtemplates
    … spreadknowledge
  • 274. Language Designer
    … works w/ domain expert
    abstractions, notations
    Let‘em do whatthey‘regoodat
    … adds modularization, in-
    heritance, „abstract“, etc.
    … works w/ architect
    generators, interpreters
    … requires „metapeople“
  • 275. App Developer
    … caresaboutappdomain
    … uses DSLs + metaware
    Let‘em do whatthey‘regoodat
    … isisolatedfrom
    technology, does not
    have to care (that much)
  • 276. Flip side:
    Let‘em do whatthey‘regoodat
    Youactuallyneedpeople
    whoaregoodatthis!
  • 277. Domain Users
    Programming?
  • 278. Precision
    !=
    Programming
    Domain Users Programming?
  • 279. Precision
    !=
    Programming
    Domain Users Programming?
    DomainUsers
    Programmers
    Programming = Precision + X
  • 280. Precision
    … Scientists
    … Insurance Mathematicians
    Domain Users Programming?
    … Logisticians
    … Medical Doctors
  • 281. Domain Users Programming?
  • 282. If Domain Users
    don‘tgetit
    Domain Users Programming?
    itmighthintat a
    problemwith
    thelanguage!
    … orthedocumentation!
  • 283. Things learned
    from 3GLs
    Domain Users Programming?
    often not
    intuitively
    understandable
    for domain people.
  • 284. Domain Users
    vs. Experts
  • 285. Creatingthe Language
    vs.
    Domain Users vs. Experts
    Usingthe Language
  • 286. Creating: Domain Expert
    Domain Users vs. Experts
    Using: Domain User
  • 287. Creating: Domain Expert
    … senior
    … complete
    Domain Users vs. Experts
    … bigpicture
    … deep
    … precise, formal
    … guru
  • 288. Using: Domain User
    … not senior
    … narrower
    Domain Users vs. Experts
    … shallow
  • 289. Can Domain Users
    understand
    whattheExperts
    putinto
    Domain Users vs. Experts
    thelanguage?
    Verifyearlyandoften!
  • 290. MetawareasProduct
  • 291. Product:
    … releaseschedule
    … incrementaldevelopmt
    MetawareasProduct
    … requirementsmgt.
    … issuetracking
    … documentation
    … supportstaff
  • 292. Exhange People
    … makemetadevelopers
    develop real apps
    MetawareasProduct
    … letappdevelopers
    developmetaware
  • 293. Compatible
    Organization
  • 294. MD* requires
    cross-project
    CompatibleOrganization
    work.
  • 295. MD* requires
    cross-project
    CompatibleOrganization
    work.
    A strictproject-focused
    organizationdoes
    not work
  • 296. Make
    room & budget
    forcross-cutting
    CompatibleOrganization
    work.
    Open Source?
  • 297. Forget PublishedCase Studies
  • 298. How do youknow
    ifitworks
    foryoursituation?
    Forget Published Case Studies
  • 299. How do youknow
    ifitworks
    foryoursituation?
    Forget Published Case Studies
    Do not judgeby
    published
    casestudies!
  • 300. How do youknow
    ifitworks
    foryoursituation?
    Forget Published Case Studies
    Do not judgeby
    published
    casestudies!
    (yes, theyareworthreading
    but don‘tdecidebased on them)
  • 301. Instead:
    Prototype!
    … meaningful
    Forget Published Case Studies
    … 4-8 personweeks
    … incremental
    … externalhelp?
  • 302.
  • 303.

    Challenges
  • 304. Mixing Notations
    Challenges
  • 305. Mixing Notations
    Language Modularity
    Challenges
  • 306. Mixing Notations
    Language Modularity
    MetawareRefactoring
    Challenges
  • 307. Mixing Notations
    Language Modularity
    MetawareRefactoring
    Model/Code Refactoring
    Challenges
  • 308. Mixing Notations
    Language Modularity
    MetawareRefactoring
    Model/Code Refactoring
    Challenges
    Automatic Model Migration
  • 309. Mixing Notations
    Language Modularity
    MetawareRefactoring
    Model/Code Refactoring
    Challenges
    Automatic Model Migration
    Model Debugging
  • 310. Mixing Notations
    Language Modularity
    MetawareRefactoring
    Model/Code Refactoring
    Challenges
    Automatic Model Migration
    Model Debugging
    Interpretation -> Code Gen
  • 311. Mixing Notations
    Language Modularity
    MetawareRefactoring
    Model/Code Refactoring
    Challenges
    Automatic Model Migration
    Model Debugging
    Interpretation -> Code Gen
    Cartridges
  • 312.
  • 313. THE END.
    Thankyou.
    Questions?

×