SlideShare ist ein Scribd-Unternehmen logo
1 von 261
DSL Design
A conceptual framework
for building good DSLs

            Markus Voelter
                                  based on material
         independent/itemis       from a paper written
           voelter@acm.org        with Eelco Visser

                www.voelter.de    E.Visser@tudelft.nl
        voelterblog.blogspot.de   http://eelcovisser.org/
                @markusvoelter
                +Markus Voelter
Introduction
A DSL is a focussed, processable
    language for describing a
specific concern when building a
system in a specific domain. The
abstractions and notations used
  are natural/suitable for the
 stakeholders who specify that
       particular concern.
more in GPLs           more in DSL
Domain Size      large and complex      smaller and well-defined

Designed by      guru or committee      a few engineers and
                                        domain experts
Language Size    large                  small

Turing-          almost always          often not
completeness
User Community   large, anonymous and   small, accessible and
                 widespread             local
In-language      sophisticated          limited
abstraction
Lifespan         years to decades       months to years (driven
                                        by context)
Evolution        slow, often            fast-paced
                 standardized
Incompatible     almost impossible      feasible
Changes
General Purpose
C
    Components
                                    Domain
          State Machines            Specific

                    Sensor Access

                                    LEGO Robot
                                    Control
Modular Language
                a   b   c

                 d   e   f
        my
         L       g   h   i

                 j   k   l

        
 with many optional,
composable modules
Case Studies
Example

Compo
 nents
Example

Compo
 nents
Example


Refrigerators
            Refrige
            rators
Example

Refrige
rators
Example

Refrige
rators
Example

Exten
ded C
Example

Pension
 Plans
Example

Pension
 Plans
Example

 Web
 DSL
Terms
   &
Concepts
Model
 A schematic description of a
      system, theory, or
phenomenon that accounts for
    its known or inferred
 properties and may be used
   for further study of its
        characteristics
                www.answers.com/topic/mode
                                         l
Model
A representation of a set of
 components of a process,
  system, or subject area,
 generally developed for
  understanding, analysis,
   improvement, and/or
replacement of the process
                www.ichnet.org/glossary.htm
Model
                which ones?

   an abstraction or
   simplification of
        reality
what should
we leave out?        ecosurvey.gmu.edu/glossary.ht
                                                m
Model
   Purpose
… code generation
… analysis and checking
… platform independence
… stakeholder integration
…
      drives design of
      language!
Model
   Purpose
… code generation
… analysis and checking
… platform independence
… stakeholder integration
                    Example

                    Compo
                     nents
Model
   Purpose
… code generation
… analysis and checking
… platform independence
… stakeholder integration
                    Example


  Refrigerators     Refrige
                    rators
Model
   Purpose
… code generation
… analysis and checking
… platform independence
… stakeholder integration
                    Example


    Extended C       Exten
                     ded C
Model
   Purpose
… code generation
… analysis and checking
… platform independence
… stakeholder integration
                    Example

                    Pension
                     Plans
body of
                          knowledge
        deductive
        top down          in the real
                            world

            Domain

              inductive
 existing    bottom up
software
 (family)
body of
               knowledge
   deductive
   top down    in the real
                 world

   Domain


               Example   Example


Refrigerators  Penion
               Plans
                         Refrige
                         rators
Domain

            Domain

              inductive
 existing    bottom up
software                  Example   Example
 (family)                 Exten     Compo
                          ded C      netns
A DSL LD for D is a
   language that is
  specialized to en-
 coding PD programs.
more efficient
smaller
Programs
are trees

            elemen
               t
Fragments are
subtrees w/ root
               fragment root
           f
fragment
Parent-Child
Relation
       f
Programs
and Fragments

    f
Programs are
graphs, really.

                  reference
Programs are
graphs, really.
Languages are
sets of concepts


               C2
          C1         Cn
                C3
      L
Languages are
sets of concepts


               C2
          C1         Cn
                C3
      L
Programs
and languages

                     C2
                C1         Cn
                          C3
Language:
concept inheritance
                C2
       L   C1
        1




  L2        C3
       C1
Language
does not depend on
any other language



      Independence

Fragment
does not depend on
any other fragment
Independence




               Example

               Refrige
               rators
Homogeneous
Fragment
everything expressed
with one language
Heterogeneous
Heterogeneous
            C
Statemachines
      Testing



        Example

        Exten
        ded C
Domain Hierarchy
Domain Hierarchy
              avionics
 automotive


embedded
software


                          Example
           all programs
                          Exten
                          ded C
Design
    Dimensions
expressivity     completeness
coverage         paradigms
semantics        modularity
separation of    concrete
 concerns         syntax
            process
Expressivity
expressivity     completeness
coverage         paradigms
semantics        modularity
separation of    concrete
 concerns         syntax
            process
Shorter
Programs

  More
Accessible
Semantics
For a limited
  Domain!
    Domain
  Knowledge
encapsulated in
   language
Smaller Domain

More Specialized
   Language
    Shorter
   Programs
The
 do-what-I-
want language


    Ѱ
Single Program
vs. Class/Domain
 No Variability!

     Ѱ
Domain Hierarchy




  more specialized domains
more specialized languages
Reification
  Dn+1




              ==
  Dn
Reification
             Transformation
             /
             Generation
                     ==
Language
Definition
Overspecification!
Requires Semantic Analysis!
Linguistic
Abstraction


  Declarative!
  Directly represents Semantics.
Def: DSL
A DSL is a language at D that
provides linguistic abstractions
for common patterns and idioms
of a language at D-1 when used
within the domain D.
Def: DSL cont’d
A good DSL does not require the
use of patterns and idioms to
express semantically interesting
concepts in D.
Processing tools do not have to
do “semantic recovery” on D
programs.

Declarative!
Another Example




                  Example

                  Exten
                  ded C
Another Example




                                 Example

                                 Exten
          Turing Complete!
   Requires Semantic Analysis!   ded C
Linguistic
Abstraction




              Example

              Exten
              ded C
Linguistic
Abstraction




              Example

              Exten
              ded C
Linguistic
Abstraction


         In-Language
         Abstraction
         Libraries
         Classes
         Frameworks
Linguistic
Abstraction
Analyzable
Better IDE Support


                In-Language
                Abstraction
                User-Definable
                Simpler Language
Linguistic
Abstraction              Special
Analyzable               Treatment!
Better IDE Support


                In-Language
                Abstraction
                User-Definable
                Simpler Language
Linguistic
Abstraction
     Std Lib
         In-Language
         Abstraction
Std Lib


          Example

          Refrige
          rators
Coverage
expressivity     completeness
coverage         paradigms
semantics        modularity
separation of    concrete
 concerns         syntax
            process
Domain DL defined
inductively by L
(the domain that can be expressed by L)


   CL(L) == 1 (by definition)

not very interesting!
Def: Coverage
to what extend can a language
L cover a domain D
Def: Coverage

why would CD(L) be != 1?

   1) L is deficient
  2) L is intended to cover
    only a subset of D,
     corner cases may make L
     too complex
  Rest must be expressed in D-1
Def: Coverage
Coverage is full.
You call always write C.




                           Example

                           Exten
                           ded C
Def: Coverage
Only a particular style of
web apps are suported.

Many more are conceivable.


                             Example

                         WebDSL
Def: Coverage

DSLs are continuously evolved
so the relevant parts of the
deductive domain are
supported.

           Example   Example   Example

           Compo     Refrige Pension
            nents    rators   Plans
Semantics &
    Execution
expressivity     completeness
coverage         paradigms
semantics        modularity
separation of    concrete
 concerns         syntax
            process
Static Semantics

Execution Semantics
Static Semantics

Execution Semantics
Static Semantics

  Constraints
 Type Systems
Unique State Names
Unreachable States
   Dead End States
                 …




             Example

             Exten
             ded C
Unique State Names
Unreachable States
   Dead End States
                 …
  Easier to do on a
 declarative Level!

             Example

              Exten
              ded C
Unique State Names
     Unreachable States
        Dead End States
                      …
       Easier to do on a
      declarative Level!
Thinking of all
                  Example
constraints is a
                   Exten
coverage problem!
                   ded C
Assign fixed types
Derive Types
         Calculate Common
         Types
    Check Type Consistency



      What does a type system do?
Intent +          Derive
Check


More code          More convenient
Better error       More complex
messages           checkers
Better Performance Harder to
                   understand for
                   users
Example

Refrige
rators
What does it
    all mean?
Execution Semantics
Def: Semantics
       … via mapping to lower level




OB: Observable Behaviour (Test Cases)
Def: Semantics
    … via mapping to lower level




           LD
                 Transformation
                 Interpretation
          LD-1
Transformation
  Dn+1




  Dn
Transformation




                 Example

                 Exten
                 ded C
Transformation

        LD
              Transformation

       LD-1     Known
                Semantics!
Transformation

              LD
  Correct!?          Transformation

              LD-1
Transformation

Tests (D)     LD
                     Transformation

Tests (D-1)   LD-1
Run tests on both levels; all pass.
Coverage Problem!
Example

Refrige
rators
Transformation




                 Example

                 Pension
                  Plans
Behavior




           Example

           Refrige
           rators
Multi-Stage
  L3


  L2
          Modularization

  L1


  L0
Multi-Stage: Reuse
  L3


  L2        L5


       L1              Reusing
                  Later Stages
  L0             Optimizations!
Multi-Stage: Reuse
  L3             Robot Control
                 State Machine

  L2        L5   Components


       L1        C (MPS tree)
                                 Example

  L0             C Text          Exten
                                 ded C
Multi-Stage: Reuse
  L3             Robot Control
                 State Machine
                     Consistency
                     Model Checking
  L2        L5   Components
                 Efficient Mappings

                 C Type System

       L1        C (MPS tree)
                  Syntactic
                  Correctness,        Example
                  Headers
  L0             C Text               Exten
                                      ded C
Multi-Stage: Reuse
  L3                   Reusing
                  Early Stages
       L2          Portability

  L1        L1b


  L0        L0b
Multi-Stage: Reuse
  L3


       L2


  L1        L1b   Java
                  C#
                         Example

  L0        L0b          Exten
                         ded C
Multi-Stage:
Preprocess
                   Adding an
          optional, modular
                  emergency
                stop feature
Platform
Platform

           Temporal
           Data
           Versioning
           Database Access
           Transactions
           Distribution
           (JEE)
                   Example

                  Pension
                   Plans
Platform


           Data Collection

           HAL

           Device
           Drivers
                     Example

                     Refrige
                     rators
Interpretation




A program at D0 that
acts on the structure
of an input program at D>0
Interpretation
A program at D0 that
acts on the structure
of an input program at D>0
 imperative  step through
 functional  eval recursively
 declarative ? solver ?
Example

Pension
 Plans
Example

Refrige
rators
Behavior




           Example

           Refrige
           rators
Interpretation




A program at D0 that
acts on the structure
of an input program at D>0
Interpretation




An interpreter :-)
Transformation      Interpretation

+ Code Inspection   + Turnaround Time

+ Debugging         + Runtime Change
+ Performance &
  Optimization
+ Platform Con-
  formance
Def: Semantics
    … via mapping to lower level



           LD
                 Transformation
                 Interpretation
          LD-1
Multiple Mappings
    … at the same time



           LD
                         Similar
                         Semantics?
    Lx     Ly      Lz
Multiple Mappings
    … at the same time



            LD   T
                           Similar
                           Semantics?
    Lx      Ly        Lz
     T       T        T
         all green!
Example

Pension
 Plans
Example

Refrige
rators
Multiple Mappings
    … alternatively, selectably

                  Extend LD to include
            LD    explicit data that
                  determines
                  transformation




     Lx     Ly      Lz
Multiple Mappings
    … alternatively, selectably

                  Extend LD to include
            LD    explicit data that
                  determines
                  transformation




     Lx     Ly      Lz            Example
    Restricted Port leads
    to reduced overhead           Exten
    C                             ded C
Multiple Mappings
    … alternatively, selectably

                   External Data:
            LD     - Switches
                   - Annotation Model




     Lx     Ly      Lz
Multiple Mappings
    … alternatively, selectably

                   External Data:
            LD     - Switches
                   - Annotation Model
                         Switch
                         Control Java
                         vs. C

     Lx     Ly      Lz            Example

                                  Pension
                                   Plans
Multiple Mappings
    … alternatively, selectably

                   Heuristics: Analyze
            LD     model to try to
                   decide




     Lx     Ly      Lz
Multiple Mappings
    … alternatively, selectably


          T   LD TESTING!



     Lx       Ly    Lz
      T       T      T
Reduced Expressiveness
 bad?    maybe.
 good? maybe!


        Model Checking
        SAT Solving
        Exhaustive Search, Proof!
Unique State Names
      Unreachable States
         Dead End States
       Guard Decidability
             Reachability



Exhaustive Search, Proof!
Example

Exten
ded C
Example

Exten
ded C
Separation of
    Concerns
expressivity     completeness
coverage         paradigms
semantics        modularity
separation of    concrete
 concerns         syntax
            process
Several Concerns
    … in one domain
Several Concerns
      … in one domain



 integrated into        separated into
 one fragment           several fragments
Viewpoints

 independent




               dependent
Viewpoints

 Hardware
                    Behavior




            Tests        Example

                        Refrige
                        rators
Viewpoints: Why?

        Sufficiency
        Different Stakeholders
        Different Steps in Proces
        – VCS unit!
Viewpoints

 Hardware
 Product
 Management           Behaviour
                        Thermo-
                        dynamics-
                        Experts



              Tests        Example

                           Refrige
                           rators
Viewpoints

 independent



 sufficient?
 contains all
 the data for running
 a meaningful
 transformation
Viewpoints


                      sufficient
                      implementation
                      code
 sufficient
 Hardware structure
 documentation

                           Example

                          Refrige
                          rators
Viewpoints: Why?

          1:n Relationships
Viewpoints
                    1:n
 Hardware
                          Behaviour




            Tests              Example

                              Refrige
                              rators
Viewpoints
        Well-defined
        Dependencies
        No Cycles!
        Avoid Synchronization!
        (unless you use a projectional editor)
Viewpoints: Why?


        LD
              LAnnotation
       LD-1
Progressive Refinement
Views on Programs




                    Example

                    Pension
                     Plans
Completeness
expressivity     completeness
coverage         paradigms
semantics        modularity
separation of    concrete
 concerns         syntax
            process
Can you generate 100% of
the code from the DSL
program?

More generally: all of D-1
Semantics:



Introduce G (“generator”):
                  complete

                  incomplete
Incomplete: What to do?


          FD
 OB(FD)
 !=
          FD-1
Incomplete: What to do?
Manually written code!

          FD
 OB(FD)
 ==
          FD-1 + FD-1, man
Manually written code?
Call “black box” code
(foreign functions)

Embed LD-1 code in LD program
Manually written code?
Call “black box” code
(foreign functions)

Embed LD-1 code in LD program

 Embed C statements
 in components, state machines
 or decision tables          Example

                             Refrige
                             rators
Manually written code?
Call “black box” code
(foreign functions)

Embed LD-1 code in LD program
Use composition mechanisms of
LD-1 (inheritance, patterns, aspects, …)
Manually written code?
Call “black box” code
(foreign functions)

Embed LD-1 code in LD program
Use composition mechanisms of
LD-1 (inheritance, patterns, aspects, …)
Generate base classes                 Example
with abstract methods;                Compo
implement in subclass                  nents
Manually written code?
Call “black box” code
(foreign functions)

Embed LD-1 code in LD program
Use composition mechanisms of
LD-1 (inheritance, patterns, aspects, …)
Use protected regions (if you
really have to…)
Manually written code?
Call “black box” code
(foreign functions)

Embed LD-1 code in LD program
Use composition mechanisms of
LD-1 (inheritance, patterns, aspects, …)
Use protected regions (if you
really have to…) DON’T!
Incomplete: When?
Good for technical      Example   Example
DSLs: Devs write        Exten     Compo
LD-1 code               ded C      nents

Bad for business DSLs.
Maybe use a LD-1 std lib that LD
code can call into?
Example   Example   Example

Refrige Pension      Web
rators   Plans       DSL
Prevent Breaking Promises!




     class B extens BBase {
         public void doSomething() {
           Registry.get(„A“).someMethod();
         }
     }
Prevent Breaking Promises!




Better:
 Dependency Injection
                         Example
 Static analysis tools   Compo
                          nents
Roundtripping


     LD         L’D


    LD-1 ……… D-1
           L’
Roundtripping – Don’t!


     LD        L’D
                     Semantic
                     Recovery!
    LD-1 ……… D-1
           L’
Fundamental
   Paradigms
expressivity     completeness
coverage         paradigms
semantics        modularity
separation of    concrete
 concerns         syntax
            process
Structure
Modularization, Visibility
   Namespaces,
   public/private
   importing
Structure
Modularization, Visibility
   Namespaces,
   public/private
   importing
   divide & conquer
   reuse
   stakeholder integration
Structure
Partitioning (Files)
   VCS Unit
   Unit of sharing
   Unit of IP
      != logical modules
      may influence language design
Structure
Modularization, Visibility




                       Example

                       Exten
                       ded C
Structure
Modularization, Visibility




                       Example

                       Compo
                        nents
Structure
Partitioning (Files)
   change impact
   link storage
   model organization
   tool integration
Structure
Spec vs. Implementation
   plug in different Impls
   different stakeholders
Structure
Spec vs. Impl.




                 Example

                 Exten
                 ded C
Structure
Specialization
   Liskov substitution P
   leaving holes (“abstract”)
Structure
Specialization
   Liskov substitution P
   leaving holes (“abstract”)

   variants (in space)
   evolution (over time)
Structure
Specialization
 Pension Plans can inherit
 from other plans.
 Rules can be abstract;
 Plans with abstract         Example
 rules are abstact
                             Pension
                              Plans
Structure
Superposition, Aspects
   merging
   overlay
   AOP

   modularize cross-cuts
Structure
Superposition, Aspects




                         Example

                         Compo
                          nents
Behavior
Not all DSLs specify behavior
Some just declare behavior


      This section is
      not for those!
Behavior
Imperative
  sequence of statements
  changes program state



 write   understand debug analyze   performance
 simple simple -    simpl   hard    good
                    e
Behavior
Imperative
  sequence of statements
  changes program state



                           Example

                           Refrige
                           rators
Behavior
Functional
 functions call other functions.
 no state. No aliasing.



 write   understand debug analyze performance
 simple - simple   simpl   good   good -
                   e
Behavior
Functional
 functions call other functions.
 no state. No aliasing.



                           Example

                           Pension
                            Plans
Behavior
Functional




             Example

             Pension
              Plans
Behavior
Functional
  pure expressions are
  a subset of functional
  (operators hard-wired)
 guards
 preconditions
 derived attributes
Behavior
Declarative
  only facts and goals.
  no control flow.
  eval engine, solver (several)


 write    understand debug analyze performance
 simple   simple -   hard   depends often bad
Behavior
Declarative
  concurrency
  constraint programming
  solving
  logic programming
Behavior
Declarative
  only facts and goals.
  no control flow.
  eval engine, solver (several)


                           Example

                            Web
                            DSL
Behavior
Declarative




              Example

              Exten
              ded C
Behavior
Reactive
  reactions to events, more
  events are produced.
  Communication via
  events and channels/queues

 write    understand   debu   analyze performance
                       g
 simple   simple/har   hard simple   can be good
Behavior Reactive




                    Example

                    Refrige
                    rators
Behavior
Data Flow
  chained blocks consume
  continuous data that flows
  from block to block


write   understand    debu   analyze performance
                      g
simple - simple/har   hard simple   can be good
Behavior
Data Flow
 continuous, calc on change
 quantized, calc on new data
 time triggered, calc every x
Behavior
Data Flow

  Embedded Programming
  Enterprise ETL & CEP
Behavior
State Based
   states, transitions,
   guards, reactions

   event driven, timed

 write   understand    debu   analyze performance
                       g
 simple - simple/har   s/h    simple + can be good
Behavior
State Based




              Example

              Refrige
              rators
Behavior
Combinations
 data flow uses functional,
 imperative or declarative lang
 inside block
Behavior
Combinations
 state machines use expressions
 in guards and often an
 imperative lang in actions
Behavior
Combinations




               Example

               Refrige
               rators
Behavior
Behavior
Combinations
 purely structural languages
 often use expressions to specify
 constraints

                           Example

                           Exten
                           ded C
Language
   Modularity
expressivity     completeness
coverage         paradigms
semantics        modularity
separation of    concrete
 concerns         syntax
            process
Language Modularity,
Behavior and Reuse (LMR&C)
Composition
   increase efficiency
   of DSL development
Language Modularity,
Behavior and Reuse (LMR&C)
Composition
   increase efficiency
   of DSL development
4 ways of composition:
   Referencing
   Reuse
   Extension
   Reuse
Language Modularity,
Behavior and Reuse (LMR&C)
Composition
   increase efficiency
   of DSL development
4 ways of composition:
  distinguished regarding
  dependencies and fragment
  structure
Dependencies:
Behavior
 do we have to know about the
 reuse when designing the
 languages?
Dependencies:
Behavior
 do we have to know about the
 reuse when designing the
 languages?

Fragment Structure:
 homogeneous vs. heterogeneous
 („mixing languages“)
Dependencies &
Behavior
Fragment Structure:
Dependencies &
Behavior
Fragment Structure:
Referencing
Referencing
Referencing
Referencing
       Dependen
       t




     No containment
Referencing


       Used in
     Viewpoints
Referencing
 Fragment
                       Fragment




            Fragment
Referencing




              Example

              Refrige
              rators
Extension
            Dependen
            t




     Containment
Extension
Extension




   more specialized domains
 more specialized languages
Extension
  Dn+1




            ==
  Dn
Extension
  Dn+1




            ==
  Dn
Extension
  Good for bottom-up (inductive)
  domains, and for use by
  technical DSLs (people)

                        ==
  Dn
Extension

Drawbacks
Behavior
  tightly bound to base
  potentially hard to analyze
   the combined program
Extension




            Example

            Exten
            ded C
Extension
Extension




            Example

            Exten
            ded C
Reuse
 Reuse
         Independent




     No containment
Reuse
 Reuse

Behavior referenced language
 Often the
 is built expecting it will be
 reused.

 Hooks may be added.
Embedding

        Independent




       Containment
Embedding




            Example

            Pension
             Plans
Embedding

Behavior
 Embedding often uses Extension
 to extend the embedded
 language to adapt it to its new
 context.
Challenges - Syntax

Behavior and Embedding
 Extension
 requires modular concrete
 syntax

 Many tools/formalisms cannot
 do that
Challenges – Type Systems

Behavior the type system of
 Extension:
 the base language must be
 designed to be extensible/
 overridable
Challenges – Type Systems

Behavior
 Reuse and Embedding: Rules that
 affect the interplay can reside
 in the adapter language.
Challenges – Trafo & Gen
Referencing (I)
Behavior
Written
specifically                  Can be
for the                       Reused
combination




         Two separate, dependent
      single-source transformations
Challenges – Trafo & Gen
Referencing (II)




       A single multi-sourced
           transformation
Challenges – Trafo & Gen
Referencing (III)




A preprocessing trafo that changes the
 referenced frag in a way specified by
        the referencing frag
Challenges – Trafo & Gen
Extension




  Transformation by assimiliation, i.e.
    generating code in the host lang
 from code expr in the extension lang.
Challenges – Trafo & Gen
Extension




                      Example

                      Exten
                      ded C
Challenges – Trafo & Gen
Reuse (I)




           Reuse of existing
 transformations for both fragments
   plus generation of adapter code
Challenges – Trafo & Gen
Reuse (II)




     composing transformations
Challenges – Trafo & Gen
Reuse (III)




     generating separate artifacts
      plus a weaving specification
Challenges – Trafo & Gen
Embedding (I)

   a purely embeddable language
   may not come with a generator.




   Assimilation (as with Extension)
Challenges – Trafo & Gen
Embedding (II)




 Adapter language can coordinate the
transformations for the host and for
      the emebedded languages.
Concrete
       Syntax
expressivity     completeness
coverage         paradigms
semantics        modularity
separation of    concrete
 concerns         syntax
            process
UI for the language!
Important for acceptance by users!

  Textual
  Symbolic
  Tabular
  Graphical
Reuse existing
syntax of
domain, if any!


Tools let you
freely combine
all kinds.
Default: Text
 Editors simple to build
 Productive
 Easy to integrate w/ tools
 Easy to evolve programs
Default: Text
 Editors simple to build
 Productive
 Easy to integrate w/ tools
 Easy to evolve programs
… then add other forms,
if really necessary
Graphical in case…




     Relationships
Graphical in case…




       Flow and
       Depenency
Graphical in case…




        Causality
       and Timing
Symbolic
    Either
Mathematical,
   or often
    highly
 inspired by
    domain
Tables
Combinations
Combinations
Combinations
Combinations
Process
expressivity     completeness
coverage         paradigms
semantics        modularity
separation of    concrete
 concerns         syntax
            process
Domain Analysis
                     Interview
                      Experts




       Get                              Structure
                                          their
    Feedback                           Knowledge




           Create                Build the
          Examples               Language
Iterate to goal
Documentation


  Create example-
  based tutorials!
Domain Folks
Programming?

   Precision vs.
   Algorithmics!
Domain Folks
Programming?
         DU
       Coding

       DU/Dev
       Paired

      Dev Coding
     DU Reviewing
DSL as a Product

   Release Plan
   Bug Tracker
   Testing!
   Support
   Documentation
Reviews

   Reviews become
   easier --- less
   code, more
   domain-specific
The End.
  This material is part of my
  upcoming (early 2013) book

  DSL Engineering with
 Language Workbenches
Stay in touch; it will be cheap or
       maybe even free :-)
www.voelter.de/dslbook
           @markusvoelter
           +Markus Voelter

Weitere ähnliche Inhalte

Was ist angesagt?

Principles of-programming-languages-lecture-notes-
Principles of-programming-languages-lecture-notes-Principles of-programming-languages-lecture-notes-
Principles of-programming-languages-lecture-notes-
Krishna Sai
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific Laguages
Markus Voelter
 
Ppl for students unit 1,2 and 3
Ppl for students unit 1,2 and 3Ppl for students unit 1,2 and 3
Ppl for students unit 1,2 and 3
Akshay Nagpurkar
 

Was ist angesagt? (19)

Principles of-programming-languages-lecture-notes-
Principles of-programming-languages-lecture-notes-Principles of-programming-languages-lecture-notes-
Principles of-programming-languages-lecture-notes-
 
SD & D Types of programming language
SD & D Types of programming languageSD & D Types of programming language
SD & D Types of programming language
 
Internationalisation And Globalisation
Internationalisation And GlobalisationInternationalisation And Globalisation
Internationalisation And Globalisation
 
SPC Unit 2
SPC Unit 2SPC Unit 2
SPC Unit 2
 
Introduction to c_sharp
Introduction to c_sharpIntroduction to c_sharp
Introduction to c_sharp
 
Generic Programming
Generic ProgrammingGeneric Programming
Generic Programming
 
CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm
 
SD & D Implementation
SD & D ImplementationSD & D Implementation
SD & D Implementation
 
Paradigms
ParadigmsParadigms
Paradigms
 
C programming slide day 01 uploadd by md abdullah al shakil
C programming slide day 01 uploadd by md abdullah al shakilC programming slide day 01 uploadd by md abdullah al shakil
C programming slide day 01 uploadd by md abdullah al shakil
 
Imperative programming
Imperative programmingImperative programming
Imperative programming
 
Programming paradigm
Programming paradigmProgramming paradigm
Programming paradigm
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific Laguages
 
Ppl for students unit 1,2 and 3
Ppl for students unit 1,2 and 3Ppl for students unit 1,2 and 3
Ppl for students unit 1,2 and 3
 
Text Editors and IDEs
Text Editors and IDEsText Editors and IDEs
Text Editors and IDEs
 
A Research Study of Data Collection and Analysis of Semantics of Programming ...
A Research Study of Data Collection and Analysis of Semantics of Programming ...A Research Study of Data Collection and Analysis of Semantics of Programming ...
A Research Study of Data Collection and Analysis of Semantics of Programming ...
 
Programming paradigms
Programming paradigmsProgramming paradigms
Programming paradigms
 
Introduction to programming c
Introduction to programming cIntroduction to programming c
Introduction to programming c
 
Object oriented concepts ppt
Object oriented concepts pptObject oriented concepts ppt
Object oriented concepts ppt
 

Andere mochten auch

Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and MobileModern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Dan Mohl
 
Architectural styles and patterns
Architectural styles and patternsArchitectural styles and patterns
Architectural styles and patterns
Himanshu
 

Andere mochten auch (19)

Professional Podcasting Guide
Professional Podcasting GuideProfessional Podcasting Guide
Professional Podcasting Guide
 
Visual Profile - Markus Voelter, Jan 1, 2009
Visual Profile - Markus Voelter, Jan 1, 2009Visual Profile - Markus Voelter, Jan 1, 2009
Visual Profile - Markus Voelter, Jan 1, 2009
 
Introduction To MDD
Introduction To MDDIntroduction To MDD
Introduction To MDD
 
Generic Tools - Specific Languages (PhD Defense Slides)
Generic Tools - Specific Languages (PhD Defense Slides)Generic Tools - Specific Languages (PhD Defense Slides)
Generic Tools - Specific Languages (PhD Defense Slides)
 
Introduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTUREIntroduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTURE
 
DSL Best Practices
DSL Best PracticesDSL Best Practices
DSL Best Practices
 
The Modern Software Architect
The Modern Software ArchitectThe Modern Software Architect
The Modern Software Architect
 
Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and MobileModern Software Architectures: Building Solutions for Web, Cloud, and Mobile
Modern Software Architectures: Building Solutions for Web, Cloud, and Mobile
 
Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstraction
 
Software Architecture: Introduction
Software Architecture: IntroductionSoftware Architecture: Introduction
Software Architecture: Introduction
 
Software Architecture Patterns
Software Architecture PatternsSoftware Architecture Patterns
Software Architecture Patterns
 
Practices of Good Software Architects
Practices of Good Software ArchitectsPractices of Good Software Architects
Practices of Good Software Architects
 
Principles of software architecture design
Principles of software architecture designPrinciples of software architecture design
Principles of software architecture design
 
Architectural styles and patterns
Architectural styles and patternsArchitectural styles and patterns
Architectural styles and patterns
 
A Software Architect's View On Diagramming
A Software Architect's View On DiagrammingA Software Architect's View On Diagramming
A Software Architect's View On Diagramming
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software Architecture
 
software architecture
software architecturesoftware architecture
software architecture
 
Software Architecture and Design - An Overview
Software Architecture and Design - An OverviewSoftware Architecture and Design - An Overview
Software Architecture and Design - An Overview
 
Faszination Segelfliegen
Faszination SegelfliegenFaszination Segelfliegen
Faszination Segelfliegen
 

Ähnlich wie Domain Specific Language Design

Challenges In Dsl Design
Challenges In Dsl DesignChallenges In Dsl Design
Challenges In Dsl Design
Sven Efftinge
 
Bdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проектеBdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проекте
ISsoft
 
Mps Presentation
Mps PresentationMps Presentation
Mps Presentation
guestaa97d9
 
Interference with High level language.pdf
Interference with High level language.pdfInterference with High level language.pdf
Interference with High level language.pdf
ARslan Ahmad
 
Generative Programming from a DSL Viewpoint
Generative Programming froma DSL ViewpointGenerative Programming froma DSL Viewpoint
Generative Programming from a DSL Viewpoint
elliando dias
 

Ähnlich wie Domain Specific Language Design (20)

DSL, the absolute weapon for the development
DSL, the absolute weapon for the developmentDSL, the absolute weapon for the development
DSL, the absolute weapon for the development
 
Fusing Modeling and Programming into Language-Oriented Programming
Fusing Modeling and Programming into Language-Oriented ProgrammingFusing Modeling and Programming into Language-Oriented Programming
Fusing Modeling and Programming into Language-Oriented Programming
 
Groovy DSL
Groovy DSLGroovy DSL
Groovy DSL
 
Challenges In Dsl Design
Challenges In Dsl DesignChallenges In Dsl Design
Challenges In Dsl Design
 
Bdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проектеBdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проекте
 
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
 
Up to speed in domain driven design
Up to speed in domain driven designUp to speed in domain driven design
Up to speed in domain driven design
 
Principles of Programming Languages - Lecture Notes
Principles of Programming Languages -  Lecture NotesPrinciples of Programming Languages -  Lecture Notes
Principles of Programming Languages - Lecture Notes
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
 
Mps Presentation
Mps PresentationMps Presentation
Mps Presentation
 
Modelling and Programming: Isn’t it all the same?
Modelling and Programming: Isn’t it all the same?Modelling and Programming: Isn’t it all the same?
Modelling and Programming: Isn’t it all the same?
 
Variability Management in Domain Specific Languages
Variability Management in Domain Specific LanguagesVariability Management in Domain Specific Languages
Variability Management in Domain Specific Languages
 
DDD In Agile
DDD In Agile   DDD In Agile
DDD In Agile
 
Comparative Study of programming Languages
Comparative Study of programming LanguagesComparative Study of programming Languages
Comparative Study of programming Languages
 
DDD eXchange
DDD eXchangeDDD eXchange
DDD eXchange
 
Interference with High level language.pdf
Interference with High level language.pdfInterference with High level language.pdf
Interference with High level language.pdf
 
Generative Programming from a DSL Viewpoint
Generative Programming froma DSL ViewpointGenerative Programming froma DSL Viewpoint
Generative Programming from a DSL Viewpoint
 
Introduction to Domain-Driven Design
Introduction to Domain-Driven DesignIntroduction to Domain-Driven Design
Introduction to Domain-Driven Design
 
Antlr Conexaojava
Antlr ConexaojavaAntlr Conexaojava
Antlr Conexaojava
 

Mehr von Markus Voelter

Deklarative Smart Contracts
Deklarative Smart ContractsDeklarative Smart Contracts
Deklarative Smart Contracts
Markus Voelter
 
Model-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product LinesModel-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product Lines
Markus Voelter
 

Mehr von Markus Voelter (13)

Consulting
ConsultingConsulting
Consulting
 
Build your own Language - Why and How?
Build your own Language - Why and How?Build your own Language - Why and How?
Build your own Language - Why and How?
 
Deklarative Smart Contracts
Deklarative Smart ContractsDeklarative Smart Contracts
Deklarative Smart Contracts
 
Using language workbenches and domain-specific languages for safety-critical ...
Using language workbenches and domain-specific languages for safety-critical ...Using language workbenches and domain-specific languages for safety-critical ...
Using language workbenches and domain-specific languages for safety-critical ...
 
What's Missing in Language Workbenches
What's Missing in Language WorkbenchesWhat's Missing in Language Workbenches
What's Missing in Language Workbenches
 
How Domains Shape Languages
 How Domains Shape Languages How Domains Shape Languages
How Domains Shape Languages
 
Why Modeling Suck Sucks
Why Modeling Suck SucksWhy Modeling Suck Sucks
Why Modeling Suck Sucks
 
The future of DSLs - functions and formal methods
The future of DSLs - functions and formal methodsThe future of DSLs - functions and formal methods
The future of DSLs - functions and formal methods
 
Lessons Learned from building mbeddr
Lessons Learned from building mbeddrLessons Learned from building mbeddr
Lessons Learned from building mbeddr
 
The Design, Evolution and Use of KernelF
The Design, Evolution and Use of KernelFThe Design, Evolution and Use of KernelF
The Design, Evolution and Use of KernelF
 
Architecture As Language
Architecture As LanguageArchitecture As Language
Architecture As Language
 
Model-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product LinesModel-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product Lines
 
Trends In Languages 2010
Trends In Languages 2010Trends In Languages 2010
Trends In Languages 2010
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 

Domain Specific Language Design