DSL Best Practices

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    3 Favorites

    DSL Best Practices - Presentation Transcript

    1. MD*
      MD*
      Best Practices
      MarkusVoelter
      MD*
      Independent/itemis AG
      www.voelter.devoelter@acm.org
    2. About
      Markus Voelter
      Independent Consultant
    3. About
      Markus Voelter
      Independent Consultant
      Software Architecture
      DSLs & MDSD
      ProductLines
    4. About
      Markus Voelter
      Independent Consultant
      http://www.voelter.de
      voelter@acm.org
      skype: schogglad
    5. Read the
      Paper!
      http://www.voelter.de/data/articles/DSLBestPractices-Website.pdf

    6. DesigningLanguage

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

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

    116. ProcessingModels

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

    234. ProcessOrganization

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


    293. Challenges
    294. Mixing Notations
      Challenges
    295. Mixing Notations
      Language Modularity
      Challenges
    296. Mixing Notations
      Language Modularity
      MetawareRefactoring
      Challenges
    297. Mixing Notations
      Language Modularity
      MetawareRefactoring
      Model/Code Refactoring
      Challenges
    298. Mixing Notations
      Language Modularity
      MetawareRefactoring
      Model/Code Refactoring
      Challenges
      Automatic Model Migration
    299. Mixing Notations
      Language Modularity
      MetawareRefactoring
      Model/Code Refactoring
      Challenges
      Automatic Model Migration
      Model Debugging
    300. Mixing Notations
      Language Modularity
      MetawareRefactoring
      Model/Code Refactoring
      Challenges
      Automatic Model Migration
      Model Debugging
      Interpretation -> Code Gen
    301. Mixing Notations
      Language Modularity
      MetawareRefactoring
      Model/Code Refactoring
      Challenges
      Automatic Model Migration
      Model Debugging
      Interpretation -> Code Gen
      Cartridges
    302. THE END.
      Thankyou.
      Questions?

    + Markus VoelterMarkus Voelter, 2 months ago

    custom

    308 views, 3 favs, 0 embeds more stats

    In this deck I describe twenty best practices for u more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 308
      • 308 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 3
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories