SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

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
 
SD & D Types of programming language
SD & D Types of programming languageSD & D Types of programming language
SD & D Types of programming languageForrester High School
 
Internationalisation And Globalisation
Internationalisation And GlobalisationInternationalisation And Globalisation
Internationalisation And GlobalisationAlan Dean
 
Introduction to c_sharp
Introduction to c_sharpIntroduction to c_sharp
Introduction to c_sharpHEM Sothon
 
CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm Kaya Ota
 
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 shakilZenith SVG
 
Imperative programming
Imperative programmingImperative programming
Imperative programmingEdward Blurock
 
Programming paradigm
Programming paradigmProgramming paradigm
Programming paradigmbusyking03
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific LaguagesMarkus 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 3Akshay Nagpurkar
 
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 ...IRJET Journal
 

Tendances (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
 

En vedette

Professional Podcasting Guide
Professional Podcasting GuideProfessional Podcasting Guide
Professional Podcasting GuideMarkus Voelter
 
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, 2009Markus Voelter
 
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)Markus Voelter
 
Introduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTUREIntroduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTUREIvano Malavolta
 
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 MobileDan Mohl
 
Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionHenry Muccini
 
Software Architecture: Introduction
Software Architecture: IntroductionSoftware Architecture: Introduction
Software Architecture: IntroductionHenry Muccini
 
Software Architecture Patterns
Software Architecture PatternsSoftware Architecture Patterns
Software Architecture PatternsAssaf Gannon
 
Practices of Good Software Architects
Practices of Good Software ArchitectsPractices of Good Software Architects
Practices of Good Software ArchitectsEberhard Wolff
 
Principles of software architecture design
Principles of software architecture designPrinciples of software architecture design
Principles of software architecture designLen Bass
 
Architectural styles and patterns
Architectural styles and patternsArchitectural styles and patterns
Architectural styles and patternsHimanshu
 
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 Diagrammingmeghantaylor
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software ArchitectureMarkus Voelter
 
Software Architecture and Design - An Overview
Software Architecture and Design - An OverviewSoftware Architecture and Design - An Overview
Software Architecture and Design - An OverviewOliver Stadie
 
Faszination Segelfliegen
Faszination SegelfliegenFaszination Segelfliegen
Faszination SegelfliegenMarkus Voelter
 

En vedette (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
 

Similaire à Domain Specific Language Design

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 developmentESUG
 
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 ProgrammingMarkus Voelter
 
Challenges In Dsl Design
Challenges In Dsl DesignChallenges In Dsl Design
Challenges In Dsl DesignSven Efftinge
 
Bdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проектеBdd and dsl как способ построения коммуникации на проекте
Bdd and dsl как способ построения коммуникации на проектеISsoft
 
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...SQALab
 
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 designRick van der Arend
 
Principles of Programming Languages - Lecture Notes
Principles of Programming Languages -  Lecture NotesPrinciples of Programming Languages -  Lecture Notes
Principles of Programming Languages - Lecture Notessuthi
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven DesignLalit Kale
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesMarkus Voelter
 
Mps Presentation
Mps PresentationMps Presentation
Mps Presentationguestaa97d9
 
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?CHOOSE
 
Variability Management in Domain Specific Languages
Variability Management in Domain Specific LanguagesVariability Management in Domain Specific Languages
Variability Management in Domain Specific LanguagesDavid Méndez-Acuña
 
Comparative Study of programming Languages
Comparative Study of programming LanguagesComparative Study of programming Languages
Comparative Study of programming LanguagesIshan Monga
 
Interference with High level language.pdf
Interference with High level language.pdfInterference with High level language.pdf
Interference with High level language.pdfARslan Ahmad
 
Generative Programming from a DSL Viewpoint
Generative Programming froma DSL ViewpointGenerative Programming froma DSL Viewpoint
Generative Programming from a DSL Viewpointelliando dias
 
Introduction to Domain-Driven Design
Introduction to Domain-Driven DesignIntroduction to Domain-Driven Design
Introduction to Domain-Driven DesignR-P-Azevedo
 

Similaire à 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
 

Plus de Markus Voelter

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?Markus Voelter
 
Deklarative Smart Contracts
Deklarative Smart ContractsDeklarative Smart Contracts
Deklarative Smart ContractsMarkus Voelter
 
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 ...Markus Voelter
 
What's Missing in Language Workbenches
What's Missing in Language WorkbenchesWhat's Missing in Language Workbenches
What's Missing in Language WorkbenchesMarkus Voelter
 
How Domains Shape Languages
 How Domains Shape Languages How Domains Shape Languages
How Domains Shape LanguagesMarkus Voelter
 
Why Modeling Suck Sucks
Why Modeling Suck SucksWhy Modeling Suck Sucks
Why Modeling Suck SucksMarkus Voelter
 
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 methodsMarkus Voelter
 
Lessons Learned from building mbeddr
Lessons Learned from building mbeddrLessons Learned from building mbeddr
Lessons Learned from building mbeddrMarkus Voelter
 
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 KernelFMarkus Voelter
 
Architecture As Language
Architecture As LanguageArchitecture As Language
Architecture As LanguageMarkus 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 LinesMarkus Voelter
 
Trends In Languages 2010
Trends In Languages 2010Trends In Languages 2010
Trends In Languages 2010Markus Voelter
 

Plus de 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
 

Dernier

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 

Dernier (20)

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 

Domain Specific Language Design