• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
DSL Best Practices
 

DSL Best Practices

on

  • 2,629 views

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.

Statistics

Views

Total Views
2,629
Views on SlideShare
2,622
Embed Views
7

Actions

Likes
13
Downloads
0
Comments
2

1 Embed 7

http://www.slideshare.net 7

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

12 of 2 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • e e e e
    the ppt far too large
    Are you sure you want to
    Your message goes here
    Processing…
  • Very nice overview of the entire chain of building and working with DSLs!
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    DSL Best Practices DSL Best Practices Presentation Transcript

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

    • DesigningLanguage

      the
    • Sourcesforthe Language
    • Technical DSLs
      extractedfrom
      … framework
      … library
      … pattern (language)
      … architecture
      Language Sources
    • Business DSLs
      extractedfrom
      Language Sources
    • Domain Analysis
      Language Sources
    • Domain Analysis
      Language Sources
      Not just software!
    • Limit Expressiveness
    • Limit Expressiveness
    • Configuration
      select
      …fromconfigspace
      Limit Expressiveness
      … Properties
      … Feature Models
    • Customization
      compose
      … creatively
      Limit Expressiveness
      … Vocabulary
      … Sentences
      … Box and Line
    • Precision
      preciselywhat
      Limit Expressiveness
      … facts
      … declarative
      … domainexpertscan!
    • AlgorithmicCompleteness
      formallyhow
      Limit Expressiveness
      … automation
      … execution
      … in model processors
      … developers can!
    • Limit Expressiveness
      Use a 3GLifnecessary
      Generate APIs, Hooks
    • Do you want
      users
      to build their own
      Limit Expressiveness
      abstractions
      with the language?
    • DSL is a compromise:
      … Domain Abstractions
      … Reuse, Modularization, …
      Limit Expressiveness
      … All Data for Generation
      … DSL Tool influences
      Viewpoints?
    • Notation, Notation, Notation
    • Domain Users
      caredeeply
      Notation, …
      aboutnotation!
      „UI“ forthelanguage
    • Textual
      Graphical
      Form-Based
      Spreadsheet
      Notation, …
    • Parts
      Notation, …
    • Convertible
      Notation, …
    • Embedded
      Notation, …
    • Notation, …
      Tool
      Specific!
    • Graphical vs. Textual
    • Graphical
      Sequence/Flow
      Grapical vs. Textual
    • Graphical
      Grapical vs. Textual
      Relationships
    • Graphical
      Grapical vs. Textual
      Timing
    • Textual
      In all othercases!
      Grapical vs. Textual
    • Textual
      Real simple…
      …CVS/SVN Integration
      … Diff/Merge
      … Buildautomation
      … Model Migration
      Grapical vs. Textual
    • Text + Visualization
      Grapical vs. Textual
    • Text + Visualization
      … problem-specific
      … anwers specific questions
      … highlight specific aspects
      … several different
      Grapical vs. Textual
      visualizations
    • DSL Semantics
    • ?
      Whatdoesit all
      mean?
      DSL Semantics
    • DSL Semantics
    • DSL Semantics
    • DSL Semantics
    • DSL Semantics
      Documentation
    • Viewpoints
    • Viewpoints
    • Viewpoints
    • Well-defined
      DependenciesandConnectionPoints
      Viewpoints
    • Try toavoid
      overlapandtheneedforsynchronization.
      Viewpoints
    • Viewpoints
      Tool
      Specific!
    • Partitioning
    • scale
      MD* tools do not
      Partitioning
      arbitrarily!
    • Partitions
      Partitioning
      … separate resources
      … != logicalstructure
      … unitsof check in/out … processable separately
      … unit of IP
    • X
      cross
      Partition
      references
      Partitioning
      … lazy
      … byproxy
      … byname w/ linker
    • Partition
      Partitioning
      … not transparent
      … partoflanguage design
      … referencableelements
      … „includepath“
    • Partitioning
      Tool
      Specific!
    • Evolution
    • Whatto do withexisting
      models
      Evolution
      ifthe
      language
      changes?
    • MightRequire…
      Evolution
      … configmanagement
      … version tag in models
      … changetracking
      … migration M2M
    • Think about…
      Evolution
      … backwardcompatibility
      … deprecation
      … instrumentation
      … viewpoints + partitions
    • Evolution
      Tool
      Specific!
    • The Fallacyof
      GenericLanguages
    • FallacyofGeneric Lang.
    • Youcan model
      everything
      with
      FallacyofGeneric Lang.
    • Youcan model
      everything
      with
      FallacyofGeneric Lang.
      somehow!
    • Problem
      Shoehorningdomainabstractionsintothe
      genericlanguage
      FallacyofGeneric Lang.
    • Problem
      Sidetrackedbyexistingabstractionsandnotations
      FallacyofGeneric Lang.
    • FallacyofGeneric Lang.
      Very LimitedTool Support!
      Notations/ Abstractionsextensiblevia Profiles
    • Meta Model
      Complexity!
      FallacyofGeneric Lang.
    • Wherearestandardsuseful?
      FallacyofGeneric Lang.
    • Peoplehavetolearnunderlying
      concepts anyway.
      FallacyofGeneric Lang.
    • Is UML witha profilestill a standardlanguage?
      FallacyofGeneric Lang.
    • On whichmetaleveldo I wanttostandardize?
      M2 (UML), M3 (MOF)?
      FallacyofGeneric Lang.
    • Isn‘t a DSLbased on MOFas „standard“ as a profilebased on UML?
      FallacyofGeneric Lang.
    • Introduce an
      intermediate
      language
      FallacyofGeneric Lang.
    • separate
      DSL
      viewpoints
      UML + DSL
      DS Model
      FallacyofGeneric Lang.
    • FallacyofGeneric Lang.
      BPM
      is to analysts
      what
      UML
      is to developers.
    • Butdon‘treinventthewheeleither.
      FallacyofGeneric Lang.
    • Build your own languageinspiredbyexisting language
      FallacyofGeneric Lang.
    • Learnfrom 3GLs
    • DSL != 3GL
      Learnfrom 3GLs
      But:
    • Namespaces
      VisibilityEncapsulation
      Scoping
      Specialization
      Cohesion
      Coupling
      abstract

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

    • ProcessingModels

      the
    • Interpretation
      Generation
      vs.
    • Interpretation
      Interpretation vs. Generation
    • Generation
      Interpretation vs. Generation
    • Generation
      resultingcode
      Interpretation vs. Generation
      canbeeasily
      inspected
    • Generation
      resultingcode
      Interpretation vs. Generation
      canbeeasily
      debugged
    • Generation
      resultingcode
      canbe
      Interpretation vs. Generation
      optimized
      andmore
      efficient
    • Generation
      Templates canbe
      Interpretation vs. Generation
      derived
      fromexistingcode
    • Generation
      workaround
      Interpretation vs. Generation
      limitations
      oftargetlanguage
    • Generation
      nochanges
      Interpretation vs. Generation
      totargetenvironment
      (leavesnotrace)
    • Generation
      reuse
      Interpretation vs. Generation
      runtime infrastructure
      (garbage collection, monitoring…)
    • Interpretation
      faster
      turnaround
      Interpretation vs. Generation
      noregeneration
      test
      build
      deploy
    • Interpretation
      for platform indepenence
      an interpreter might be
      Interpretation vs. Generation
      less porting
      effort
    • Combinations
      Interpretation vs. Generation
    • Rich Domain SpecificPlatform
    • Rich Platform
    • Rich Platform
      Grownwiththe DSL!
    • Extreme Case
      Rich Platform
      populates
    • Checks Firstand Separate
    • Language Structure
      is not enough.
      Checks firstand separate
      Youneedconstraints.
      Boolean expressionsthatvalidate
      the model beyondstructure.
    • Model
      G
      Checks firstand separate
      … complex
      Constraints
      Code
    • Model
      Checks firstand separate
      G
      G‘
      … complex
      … duplication
      Constraints
      Constraints
      Code
      Code‘
    • separate phase
      Model
      firstclasscitizens
      muchbetter.
      Constraints
      Checks firstand separate
      G
      G‘
      check asmany
      aspossible.
      makeittight.
      Code
      Code‘
    • different constraints
      atdifferenttimes
      orfor
      Checks firstand separate
      different partitions
      ofthe model
      partition-local: editor, on-save
      global: batch, on-request
    • check early.
      Model
      moresemantics.
      Constraints
      bettermessages.
      T
      Model‘
      Checks firstand separate
      T
      Model‘
      G
      Code
    • 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
    • ERROR
      WARNING
      Checks firstand separate
      INFO
    • IntegratingGeneratedandManuallyWritten Code
    • Ifat all possible,
      Do not modify
      Integrated Gen/Man Code
      Generated Code!
    • ProtectedRegions
      are a badideabecause
      generatedcode
      Integrated Gen/Man Code
      is not a
      throwaway
      anymore.
    • ProtectedRegions
      … needto check in
      … sedimentofgeneratedcode
      Integrated Gen/Man Code
    • Better Approach:
      Hooks
      Integrated Gen/Man Code
      in thegeneratedcode
    • 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
    • Integrated Gen/Man Code
    • ControlManuallyWritten Code
    • After codegeneration
      how do youmakesure
      developersfollow
      Control Manual Code
      all therequired
      procedures?
    • procedures?
      … subclass
      … overwrite
      … naming
      conventions
      Control Manual Code
    • Compiler Errors
      are not enough.
      Control Manual Code
      wrong
      abstraction
      level!
    • generatechecks
      againstthecodebase
      Control Manual Code
      evaluatedbytheIDE
    • if (false) { GeneratedBaseClass x = new ManualSubclass(); }
      Control Manual Code
    • Care aboutgeneratedcode
      Andrew Vargas
    • Generated Code a
      Throwaway
      Product?
      Care aboutGenerated Code
    • Generated Code a
      Throwaway
      Product?
      Care aboutGenerated Code
      Yes.
      Can beregenerated.
    • But:
      must be…
      … written (templates)
      … understood
      … debugged
      Care aboutGenerated Code
    • But:
      must be…
      … written (templates)
      … understood
      … debugged
      … extended
      … programmedagainst
      Care aboutGenerated Code
      ifyoudon‘tgenerate100%:
    • Care!
      … indent
      … usegoodnames
      … document
      … modularize
      Care aboutGenerated Code
    • Make CodeTrue to Model
    • Analyses on the model
      canverify all kindsof
      properties
      aboutthe
      Code truetothe Model
      system.
    • Analyses on the model
      canverify all kindsof
      properties
      aboutthe
      Code truetothe Model
      system.
      Iffthecodeis
      true
      tothe model
    • Use a clever
      programming model
      Code truetothe Model
      thatdoes not allow
      violations.
    • generatethe
      configuration
      for
      architectureanalysis
      tools.
      SoftwareTomographySonarJ
      Structure 101
      … andthelike
      Code truetothe Model
    • Viewpoint-AwareProcessing
    • whenandhow do you
      and
      validate
      process
      Viewpoint-Aware Processing
      eachviewpoint?
    • whenandhow do you
      and
      validate
      process
      Viewpoint-Aware Processing
      eachviewpoint?
      Roles?
      Process?
    • Generate in phases:
      type
      developer
      implementmanualcode
      Viewpoint-Aware Processing
      deployment
      integrator
      run on targetsystem
      behaviour
      runtime
      interpretstatemachine
    • Also consider
      partitions
      Viewpoint-Aware Processing
      in thiscontext!
    • Overall ConfigurationViewpoint
    • Teamwork
      Partitions
      Viewpoints
      Multiple Targets
      Overall ConfigurationViewpt.
      Multiple Configurations
    • Teamwork
      Partitions
      Viewpoints
      Multiple Targets
      Overall ConfigurationViewpt.
      Multiple Configurations
      large ormany
      models
    • Overall ConfigurationViewpt.
    • Overall ConfigurationViewpt.
    • Putthisoverall
      configurationinto
      Overall ConfigurationViewpt.
      a model:
      configuration
      viewpoint
    • Care About Templates
    • Templates
      … importantasset
      Care about Templates
      … containplatform
      knowledge
      … tendtogrow
      morecomplex
    • Care!
      … modularize
      Care about Templates
      … functions
      … naming
      … polymorphism
      … aspects
      … refactor
    • Indentforthetemplates
      andthenuse a
      beautifier
      forthe
      Care about Templates
      generatedcode.
    • Indentforthetemplates
      andthenuse a
      beautifier
      forthe
      Care about Templates
      generatedcode.
      exceptifyouuse a langauage
      withsemanticwhitespace!
    • Care about Templates
      GoodPlatform.
      Fewer Templates.
      Less Care.
    • Model-2-Model
      ToSimplify Generators
    • Reducingtemplate
      complexity
      isimportant.
      M2M toSimplify Generators
    • Reducingtempalte
      complexity
      isimportant.
      M2M toSimplify Generators
      Separation ofConcerns
      isthewaytogo.
    • Insteadofputting
      complexlogic
      intothetemplates
      M2M toSimplify Generators
      putitinto an M2M
      thatruns
      beforecode gen.
    • M2M toSimplify Generators
    • M2M toSimplify Generators
    • In-language
      reduction rules:
      M2M toSimplify Generators
    • Model-2-Model
      For Simulation andProof
    • Many
      usefulformalisms
      alreadyexist.
      M2M for Simulation andProof
    • Many
      usefulformalisms
      alreadyexist.
      M2M for Simulation andProof
      Simulation
      Proofs
      Properties
    • Use an M2M
      forthisifpossible.
      M2M for Simulation andProof
      OftentheinputisXML
      so youactually
      „generatecode“
    • Cascading
    • ?
      PIM?
      Cascading
      PSM?
      PSSM?
    • BottomUp
      Cascading
      Works Better!
    • Cascading
      M2T
      Code + othertargetplatformartifacts
    • Cascading
      M2M
      M2M
      M2T
      M2T
      Code + othertargetplatformartifacts
    • M2M
      Cascading
      M2M
      M2M
      M2T
      M2T
      Code + othertargetplatformartifacts
    • MODELS READ ONLY!
      M2M
      Cascading
      M2M
      M2M
      M2T
      M2T
      Code + othertargetplatformartifacts
    • Allowfor
      Adaptations
    • EconomiesofScale
      Reuse!
      AllowforAdaptations
    • EconomiesofScale
      Reuse!
      AllowforAdaptations
      But:
      Adaptations!
    • EconomiesofScale
      Reuse!
      AllowforAdaptations
      But:
      Adaptations!
      Unexpected
    • Annotations on Models
      n/v pairs
      AllowforAdaptations
      tobeused in generators
      Adaptations on Templates
      Template-AO
      Factories/Polymorphism
    • AllowforAdaptations
      Becarefulto
      delineate
      the API!
    • Annotation Models
    • M2M
      Annotation Models
      M2M
      M2T
      M2T
      Code + othertargetplatformartifacts
    • M2M
      Annotation Models
      M2M
      M2M‘
      M2T
      M2T
      Code + othertargetplatformartifacts
    • Annotation Model
      references
      elements in base model.
      Annotation Models
      Transformation
      takes additional
      informationinto
      account.
    • Makesurethe
      annotation model
      onlycaptures
      Annotation Models
      Exceptions
      fromthedefault
      in thetemplates.
    • ClassifyBehaviour
    • ?
      Action
      Semantics
      ClassifyBehaviour
      Languages
      useful?
    • ?
      Action
      Semantics
      ClassifyBehaviour
      Languages
      useful! But…
    • Classify!
      … statebased
      … businessrules
      ClassifyBehaviour
      … mathematics
    • Classify!
      … statebased
      … businessrules
      ClassifyBehaviour
      … mathematics
      … or a specific DSL
    • Classify!
      … statebased
      … businessrules
      ClassifyBehaviour
      … mathematics
      … or a specific DSL
      … 3GL code
    • Don‘tforget
      Testing
    • Don‘t Forget Testing
      Limited Expressiveness.
      Reduced Need For Tests.
    • Don‘t Forget Testing
      Constraint Checks.
      A Form of Test.
    • Better Testing
      Generator
      Example
      Models
      Code
      Don‘t Forget Testing
      Based On
      Binary
      Test Cases
      (hand written)
      Tests
    • 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
    • Testing Generators
      Generator
      Reference
      Model
      Code
      Don‘t Forget Testing
    • Testing Generators
      Generator
      Reference
      Model
      Code
      Don‘t Forget Testing
      Based On
      Binary
      Reference
      Test Cases
      Tests
    • TestingTransformations
      M2M
      ResultModel
      Reference
      Model
      Don‘t Forget Testing
    • TestingTransformations
      M2M
      ResultModel
      Reference
      Model
      Don‘t Forget Testing
      Based On
      Reference
      Constraints
      Tests
    • TestingMetware
      Reference
      Model
      … maintaned!
      Don‘t Forget Testing
      … bymetaware
      Reference
      Test Cases
      developers
      Reference
      Constraints
    • This tests
      only the generators
      Generator
      Model
      Code
      Don‘t Forget Testing
      Tests
      Generator
      Test Code
    • This tests not
      the model:
      self fulfilling!
      Generator
      Model
      Code
      Don‘t Forget Testing
      Tests
      Generator
      Test Code
    • Separate test models
      and generated test code
      Model
      Generator
      Code
      Don‘t Forget Testing
      based on
      tests
      Test Model
      (Test Language)
      Generator
      Test Code
    • 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
    • Auto-Derived Test Models
      work sometimes.
      Model
      Generator
      Code
      Don‘t Forget Testing
      automatically derived
      tests
      Test Model
      (Test Language)
      Generator
      Test Code

    • ProcessOrganization

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


    • Challenges
    • Mixing Notations
      Challenges
    • Mixing Notations
      Language Modularity
      Challenges
    • Mixing Notations
      Language Modularity
      MetawareRefactoring
      Challenges
    • Mixing Notations
      Language Modularity
      MetawareRefactoring
      Model/Code Refactoring
      Challenges
    • Mixing Notations
      Language Modularity
      MetawareRefactoring
      Model/Code Refactoring
      Challenges
      Automatic Model Migration
    • Mixing Notations
      Language Modularity
      MetawareRefactoring
      Model/Code Refactoring
      Challenges
      Automatic Model Migration
      Model Debugging
    • Mixing Notations
      Language Modularity
      MetawareRefactoring
      Model/Code Refactoring
      Challenges
      Automatic Model Migration
      Model Debugging
      Interpretation -> Code Gen
    • Mixing Notations
      Language Modularity
      MetawareRefactoring
      Model/Code Refactoring
      Challenges
      Automatic Model Migration
      Model Debugging
      Interpretation -> Code Gen
      Cartridges
    • THE END.
      Thankyou.
      Questions?