SlideShare a Scribd company logo
1 of 154
Architecting 
Domain-Specific Languages 
Markus Völter 
voelter@acm.org 
www.voelter.de 
@markusvoelter
Introduction
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-completeness almost always often not 
User Community large, anonymous and widespread small, accessible and local 
In-language abstraction sophisticated limited 
Lifespan years to decades months to years (driven by context) 
Evolution slow, often standardized fast-paced 
Incompatible Changes almost impossible feasible
C 
LEGO Robot 
Control 
Components 
State Machines 
Sensor Access 
General Purpose 
Domain 
Specific
Case Study: 
mbeddr
An extensible set of integrated languages 
for embedded software engineering. 
„ Specific Languages“
Open Source @ eclipse.org 
Eclipse Public License 1.0 
http://mbeddr.com
itemis France: Smart Meter 
First significant mbeddr project 
ca. 100,000 LoC 
about to be finished 
great modularity due to components 
uses physical units extensively 
great test coverage due to special extensions
ACCEnT 
Control.Lab
20+ Projects in various stages 
by various “Big Name” companies. 
Branching into other domains 
insurance, financial, tax
Open Source 
Apache 2.0 
http://jetbrains.com/mps
[Language Workbench] 
+ Refactorings, Find Usages, Syntax Coloring, Debugging, ...
[Projectional Editing] 
Parsing Projectional Editing
[Projectional Editing] 
Syntactic Flexibility 
Regular Code/Text Mathematical 
Tables Graphical
[Projectional Editing] 
Language Composition 
L2 L1 
Separate Files In One File 
Type System 
Transformation 
Constraints 
Type System 
Transformation 
Constraints 
Syntax 
IDE
Expressivity
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 
== 
Language 
Definition 
Transformation/ 
Generation
C Extensions
Requirements
Linguistic Abstraction 
In-Language 
Abstraction 
Libraries 
Classes 
Frameworks
Linguistic Abstraction 
In-Language 
Abstraction 
User-Definable 
Simpler Language 
Analyzable 
Better IDE Support
Functions 
Components
Linguistic Abstraction 
In-Language 
Abstraction 
User-Definable 
Simpler Language 
Analyzable 
Better IDE Support 
Special 
Treatment!
Linguistic Abstraction 
Std Lib 
In-Language 
Abstraction
Block Library
Unique State Names 
Unreachable States 
Dead End States 
Guard Decidability 
Exhaustive Search, Proof! 
Reachability
Component Verification 
SM Model Checking
Notation
UI for the language! 
Important for acceptance by users! 
Textual 
Prose 
Symbolic/Math 
Tabular 
Graphical
Reuse existing syntax of 
domain, if any! 
Tools let you freely combine 
all kinds.
Reuse existing syntax of 
domain, if any!
State Machine Tables 
Math 
Component Wiring 
Prose 
Traces
Type System
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 constraints is a coverage 
problem! Exten 
Example 
ded C
Assign fixed types 
Derive Types 
Calculate Common Types 
Check Type Consistency 
What does a type system do?
Intent + 
Check 
Derive 
More code 
Better error 
messages 
Better Performance 
More convenient 
More complex checkers 
Harder to understand for users
Classical C Types 
Closures
Execution
Def: Semantics 
… via mapping to lower level 
OB: Observable Behaviour (Test Cases)
Def: Semantics 
… via mapping to lower level 
LD 
LD-1 
Transformation 
Interpretation
Transformation 
Dn+1 
Dn
LD 
LD-1 
Transformation 
Known Semantics! 
Transformation
LD 
Transformation 
Correct!? Transformation 
LD-1
Transformation 
LD 
LD-1 
Transformation 
Tests (D) 
Tests (D-1) 
Run tests on both levels; all pass. 
Coverage Problem!
mbeddr Tests
Multi-Stage 
L3 
L2 
L1 
L0 
Modularization
Multi-Stage: Reuse 
L3 
L2 
L1 
L0 
Reusing 
Later Stages 
Optimizations! 
L5
Multi-Stage: Reuse 
L3 
L2 
L1 
L0 
L5 
Example 
Exten 
ded C 
Robot Control 
State Machine 
Components 
C (MPS tree) 
C Text
Multi-Stage: Reuse 
L3 
L2 
L1 
L0 
L5 
Example 
Exten 
ded C 
Robot Control 
State Machine 
Consistency 
Model Checking 
Components 
Efficient Mappings 
C Type System 
C (MPS tree) 
Syntactic 
Correctness, 
Headers 
C Text
Multi-Stage: Reuse 
L3 
L2 
L1 
L0 
L1b 
L0b 
Reusing 
Early Stages 
Portability
Multi-Stage: Reuse 
L3 
L2 
L1 
L0 
L1b 
Example 
L0b Exten 
ded C 
Java 
C#
Mock Components
Multi-Stage: Preprocess 
Adding an 
optional, modular emergency 
stop feature
Composite Blocks 
Transformation
Platform
No Platform
Interpretation 
A program at D0 that 
acts on the structure 
of an input program at D>0
Transformation Interpretation 
+ Code Inspection 
+ Debugging 
+ Performance & 
Optimization 
+ Platform Con-formance
Essentially 
Everything :-)
Transformation Interpretation 
+ Code Inspection 
+ Debugging 
+ Performance & 
Optimization 
+ Platform Con-formance 
+ Turnaround Time 
+ Runtime Change
Business Rules 
in Requirements
Def: Semantics 
… via mapping to lower level 
LD 
LD-1 
Transformation 
Interpretation
Multiple Mappings 
… at the same time 
LD 
Lx Ly Lz 
Similar Semantics? 
T 
T T T 
all green!
Multiple Mappings 
… at the same time 
LD 
Lx Ly Lz 
Similar Semantics? 
T 
T T T 
all green!
Multiple Mappings 
… alternatively, selectably 
LD 
Extend LD to include explicit data that 
determines transformation 
Lx Ly Lz
Multiple Mappings 
… alternatively, selectably 
LD 
External Data: 
- Switches 
- Annotation Model 
Lx Ly Lz
Build Config 
Comp Static Wiring
Separation 
of Concerns
Several Concerns 
… in one domain
Several Concerns 
… in one domain 
integrated into 
one fragment 
separated into 
several fragments
Components + 
Instances
Viewpoints 
independent 
dependent
Viewpoints: Why? 
Sufficiency 
Different Stakeholders 
Different Steps in Process – VCS unit!
Separate 
Requirements
Viewpoints 
independent 
sufficient? 
contains all 
the data for running a meaningful 
transformation
Viewpoints: Why? 
1:n Relationships
Viewpoints 
Well-defined Dependencies 
No Cycles! 
Avoid Synchronization! 
(unless you use a projectional editor)
Sync in 
Comp + Interfaces
Completeness
Can you generate 100% of the code from 
the DSL program? 
More generally: all of D-1
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)
State Machine 
Event Functions
Manually written code? 
Call “black box” code 
(foreign functions) 
Embed LD-1 code in LD program
All of mbeddr
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, …) 
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!
Roundtripping 
LD 
L’D 
LD-1 ……… 
L’D-1
Roundtripping – Don’t! 
LD 
L’D 
LD-1 ……… 
L’D-1 
Semantic 
Recovery!
Fundamental 
Paradigms
Structure 
Modularization, Visibility 
Namespaces, 
public/private 
importing
Structure 
Modularization, Visibility 
Namespaces, 
public/private 
importing 
divide & conquer 
reuse 
stakeholder integration
mbeddr Chunks
Structure 
Partitioning (Files) 
VCS Unit 
Unit of sharing 
Unit of IP 
!= logical modules 
may influence language design
MPS models
Structure 
Spec vs. Implementation 
plug in different Impls 
different stakeholders
Interfaces + 
Components
Structure 
Specialization 
Liskov substitution P 
leaving holes (“abstract”)
Structure 
Specialization 
Liskov substitution P 
leaving holes (“abstract”) 
variants (in space) 
evolution (over time)
Components 
Polymorphism
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 - simple 
(step) 
hard good
C
Behavior 
Functional 
functions call other functions. 
no state. No aliasing. 
write understand debug analyze performance 
simple - simple simple 
(tree) 
good good -
ACCENT Blocks
Behavior 
Functional 
pure expressions are 
a subset of functional 
(operators hard-wired) 
guards 
preconditions 
derived attributes
Business Rules – 
Debugging
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
Typing Rules
Behavior 
Data Flow 
chained blocks consume continuous data that flows 
from block to block 
write understand debug analyze performance 
simple - simple/hard 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
ACCENT Blocks
Behavior 
State Based 
states, transitions, 
guards, reactions 
event driven, timed 
write understand debug analyze performance 
simple - simple/hard s/h simple + can be good
State Machines
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
Modularity
Language Modularity, 
Composition and Reuse (LMR&C) 
Behavior 
increase efficiency 
of DSL development 
4 ways of composition: 
Referencing 
Reuse 
Extension 
Reuse
Language Modularity, 
Composition and Reuse (LMR&C) 
Behavior 
increase efficiency 
of DSL development 
4 ways of composition: 
distinguished regarding 
dependencies and fragment 
structure
Behavior Dependencies: 
do we have to know about the reuse when designing 
the languages? 
Fragment Structure: 
homogeneous vs. heterogeneous 
(„mixing languages“)
Behavior Dependencies & 
Fragment Structure:
Behavior Dependencies & 
Fragment Structure:
RReeffeerreenncciinngg
Referencing 
Dependent 
No containment
Referencing 
Used in Viewpoints
Extension
Dependent 
Containment 
Extension
EExxtteennssiioonn 
more specialized domains 
more specialized languages
Dn+1 
Dn 
== 
Extension
Dn+1 
Dn 
== 
Extension
Good for bottom-up (inductive) domains, and for use by 
technical DSLs (people) 
Dn 
== 
Extension
Extension 
BDerhawavbiaocrks 
tightly bound to base 
potentially hard to analyze 
the combined program
Embedding
EmEbmedbdeidndging
Independent 
Containment 
Embedding
Units in State Machines
Thank you! 
voelter@acm.org 
www.voelter.de 
@markusvoelter

More Related Content

What's hot

Imperative programming
Imperative programmingImperative programming
Imperative programmingEdward Blurock
 
Programming language design and implemenation
Programming language design and implemenationProgramming language design and implemenation
Programming language design and implemenationAshwini Awatare
 
CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm Kaya Ota
 
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
 
Agile development with Ruby
Agile development with RubyAgile development with Ruby
Agile development with Rubykhelll
 
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
 
Implementing DSLs in practice
Implementing DSLs in practiceImplementing DSLs in practice
Implementing DSLs in practiceMikhail Barash
 
Cmp2412 programming principles
Cmp2412 programming principlesCmp2412 programming principles
Cmp2412 programming principlesNIKANOR THOMAS
 
Basic programming concepts
Basic programming conceptsBasic programming concepts
Basic programming conceptssalmankhan570
 
Programming languages and concepts by vivek parihar
Programming languages and concepts by vivek pariharProgramming languages and concepts by vivek parihar
Programming languages and concepts by vivek pariharVivek Parihar
 
Programming Languages An Intro
Programming Languages An IntroProgramming Languages An Intro
Programming Languages An IntroKimberly De Guzman
 
Principles of programming languages. Detail notes
Principles of programming languages. Detail notesPrinciples of programming languages. Detail notes
Principles of programming languages. Detail notesVIKAS SINGH BHADOURIA
 
Lect 1. introduction to programming languages
Lect 1. introduction to programming languagesLect 1. introduction to programming languages
Lect 1. introduction to programming languagesVarun Garg
 

What's hot (20)

Imperative programming
Imperative programmingImperative programming
Imperative programming
 
Programming language design and implemenation
Programming language design and implemenationProgramming language design and implemenation
Programming language design and implemenation
 
CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm
 
Paradigms
ParadigmsParadigms
Paradigms
 
SD & D Types of programming language
SD & D Types of programming languageSD & D Types of programming language
SD & D Types of programming language
 
Agile development with Ruby
Agile development with RubyAgile development with Ruby
Agile development with Ruby
 
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
 
C Language
C LanguageC Language
C Language
 
Implementing DSLs in practice
Implementing DSLs in practiceImplementing DSLs in practice
Implementing DSLs in practice
 
Go programing language
Go programing languageGo programing language
Go programing language
 
Cmp2412 programming principles
Cmp2412 programming principlesCmp2412 programming principles
Cmp2412 programming principles
 
Introduction to programming c
Introduction to programming cIntroduction to programming c
Introduction to programming c
 
Basic programming concepts
Basic programming conceptsBasic programming concepts
Basic programming concepts
 
Programming languages and concepts by vivek parihar
Programming languages and concepts by vivek pariharProgramming languages and concepts by vivek parihar
Programming languages and concepts by vivek parihar
 
Programming Languages An Intro
Programming Languages An IntroProgramming Languages An Intro
Programming Languages An Intro
 
Principles of programming languages. Detail notes
Principles of programming languages. Detail notesPrinciples of programming languages. Detail notes
Principles of programming languages. Detail notes
 
SD & D Implementation
SD & D ImplementationSD & D Implementation
SD & D Implementation
 
Prgramming paradigms
Prgramming paradigmsPrgramming paradigms
Prgramming paradigms
 
Lect 1. introduction to programming languages
Lect 1. introduction to programming languagesLect 1. introduction to programming languages
Lect 1. introduction to programming languages
 
Programming paradigms
Programming paradigmsProgramming paradigms
Programming paradigms
 

Similar to Architecting Domain-Specific Languages

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
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesMarkus Voelter
 
Generative Programming from a DSL Viewpoint
Generative Programming froma DSL ViewpointGenerative Programming froma DSL Viewpoint
Generative Programming from a DSL Viewpointelliando dias
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Vitaly Baum
 
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...Maarten Balliauw
 
Re-implementing Thrift using MDE
Re-implementing Thrift using MDERe-implementing Thrift using MDE
Re-implementing Thrift using MDESina Madani
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...Maarten Balliauw
 
Building scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thriftBuilding scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thriftTalentica Software
 
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
 
Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...IndicThreads
 
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
 
Lecture1 compilers
Lecture1 compilersLecture1 compilers
Lecture1 compilersAftab Ahmad
 
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...Maarten Balliauw
 
(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel ArchitecturesJoel Falcou
 
F# Type Provider for R Statistical Platform
F# Type Provider for R Statistical PlatformF# Type Provider for R Statistical Platform
F# Type Provider for R Statistical PlatformHoward Mansell
 

Similar to Architecting Domain-Specific Languages (20)

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
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
 
Intro To AOP
Intro To AOPIntro To AOP
Intro To AOP
 
Generative Programming from a DSL Viewpoint
Generative Programming froma DSL ViewpointGenerative Programming froma DSL Viewpoint
Generative Programming from a DSL Viewpoint
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)
 
Introduction To MDD
Introduction To MDDIntroduction To MDD
Introduction To MDD
 
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
 
Re-implementing Thrift using MDE
Re-implementing Thrift using MDERe-implementing Thrift using MDE
Re-implementing Thrift using MDE
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
 
An introduction to Reverse Engineering
An introduction to Reverse EngineeringAn introduction to Reverse Engineering
An introduction to Reverse Engineering
 
Building scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thriftBuilding scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thrift
 
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?
 
Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...
 
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
 
Lecture1 compilers
Lecture1 compilersLecture1 compilers
Lecture1 compilers
 
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
 
(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures
 
Intro1
Intro1Intro1
Intro1
 
F# Type Provider for R Statistical Platform
F# Type Provider for R Statistical PlatformF# Type Provider for R Statistical Platform
F# Type Provider for R Statistical Platform
 
Introduction to ‘C’ Language
Introduction to ‘C’ LanguageIntroduction to ‘C’ Language
Introduction to ‘C’ Language
 

More from 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
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific LaguagesMarkus Voelter
 
Faszination Segelfliegen
Faszination SegelfliegenFaszination Segelfliegen
Faszination SegelfliegenMarkus Voelter
 
Professional Podcasting Guide
Professional Podcasting GuideProfessional Podcasting Guide
Professional Podcasting GuideMarkus Voelter
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software ArchitectureMarkus 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
 
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
 

More from Markus Voelter (17)

Consulting
ConsultingConsulting
Consulting
 
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
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific Laguages
 
Faszination Segelfliegen
Faszination SegelfliegenFaszination Segelfliegen
Faszination Segelfliegen
 
Professional Podcasting Guide
Professional Podcasting GuideProfessional Podcasting Guide
Professional Podcasting Guide
 
DSL Best Practices
DSL Best PracticesDSL Best Practices
DSL Best Practices
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software Architecture
 
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
 
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
 

Recently uploaded

Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...software pro Development
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 

Recently uploaded (20)

Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 

Architecting Domain-Specific Languages