The document describes a language workbench called Generic Tools Specific Languages (GTSL). It discusses how GTSL allows building generic tools that can support arbitrary domain-specific languages through language extensions. This is achieved by focusing on the underlying language data first before tooling. Language workbenches provide common tooling for any language definition while also allowing these languages to be customized. The document provides an example of GTSL being used to build an IDE for embedded software engineering that combines several DSLs through a shared language workbench.
Take control of your SAP testing with UiPath Test Suite
Generic Tools, Specific Laguages
1. Generic Tools -
Specific Languages
On the Art of Building
Software Development Tools
http://voelter.de
voelter@acm.org
@markusvoelter
Markus Voelter
independent/itemis
10. Tool Extensibility
Study Findings I
The majority of our interviewees were very successful
with MDE but all of them either built their own
modeling tools, made heavy adaptations of off-the-
shelf tools, or spent a lot of time finding ways to work
around tools. The only accounts of easy-to-
use, intuitive tools came from those who had
developed tools themselves for bespoke purposes.
Indeed, this suggests that current tools are a barrier
to success rather than an enabler.
11. Tool Extensibility
Study Findings II
Complexity problems are typically associated with off-
the- shelf tools. Of particular note is accidental
complexity – which can be introduced due to poor
consideration of other categories, such as lack of
flexibility to adapt the tools to a company’s own
context [..]
12. Tool Extensibility
Study Findings III
Our interviews point to a strong need for tailoring of
some sort: either tailor the tool to the process, tailor
the process to the tool, or build your own tool that
naturally fits your own process. Based on our data, it
seems that, on balance, it is currently much easier to
do the latter.
32. Extensibility Examples
State Machines: The Challenge
red
red
yellow
greenyellow
... the TL get green eventually?
yellow
blinking
... if the TL is turned off/on, it starts in yellow/bl.
Is it guaranteed that ...
... the TL never goes from yellow to green?
36. Extensibility Examples
State Machines: The Challenge
Tool (to do the checking)
Data („clean“ state machines)
You need:
How do you perform
anlyses on state machines?
73. Generic Tools, Specific Languages
Ingredients
Languages
Language Engineering
Syntactic Diversity
Language Workbenches
74. Generic Tools, Specific Languages
Ingredients
Languages
Language Engineering
Syntactic Diversity
Language WorkbenchesGeneric Tools
Specific
Languages
75. Generic Tools, Specific Languages
Ingredients
Languages
Language Engineering
Syntactic Diversity
Language WorkbenchesGeneric Tools
Specific
Languages
(we don‘t have to reimplement
editors and synchronizers)
76. Generic Tools, Specific Languages
Ingredients
Languages
Language Engineering
Syntactic Diversity
Language WorkbenchesGeneric Tools
Specific
Languages
support
94. Languages / Language Extensions
Contribute Customizations
Language Definition, Reuse,
Extension, Composition
Mixing Notations
Type Systems, Constraints,
Transformation, Interpretation
95. Languages / Language Extensions
Contribute Customizations
Goto Definition/Find Usages
Error Markup/Quick Fixes
Syntax Highlighting
Code Completion
Search/Replace
Refactoring
Debugging
Reporting
Visualization
Version Control
97. Tool Extensibility
Study Findings I
The majority of our interviewees were very successful
with MDE but all of them either built their own
modeling tools, made heavy adaptations of off-the-
shelf tools, or spent a lot of time finding ways to work
around tools. The only accounts of easy-to-
use, intuitive tools came from those who had
developed tools themselves for bespoke purposes.
Indeed, this suggests that current tools are a barrier
to success rather than an enabler.
98. Tool Extensibility
Study Findings I
The majority of our interviewees were very successful
with MDE but all of them either built their own
modeling tools, made heavy adaptations of off-the-
shelf tools, or spent a lot of time finding ways to work
around tools. The only accounts of easy-to-use,
intuitive tools came from those who had developed
tools themselves for bespoke purposes. Indeed, this
suggests that current tools are a barrier to success
rather than an enabler.
99. Tool Extensibility
Study Findings II
Complexity problems are typically associated with off-
the- shelf tools. Of particular note is accidental
complexity – which can be introduced due to poor
consideration of other categories, such as lack of
flexibility to adapt the tools to a company’s own
context [..]
100. Tool Extensibility
Study Findings II
Complexity problems are typically associated with off-
the- shelf tools. Of particular note is accidental
complexity – which can be introduced due to poor
consideration of other categories, such as lack of
flexibility to adapt the tools to a company’s own
context [..]
103. Language Workbenches
Typical Features
Used by the tool vendor to
build the initial tool (languages).
Used by the end user to
adapt the tool (lang extensions)!
Extensions are first-class!
105. Generic Tools, Specific Languages
Adaptability is built-in!
Extensions are
first-class!
Fundamentally different from
Today‘s State-of-the-Art in Tools
109. An Example System
Language Engineering Embedded Software
Specific Languages
A collection of integrated languages
for embedded software engineering.
110. An Example System
Language Engineering Embedded Software
A collection of integrated languages
Specific Languages
for embedded software engineering.
114. An Example System
Built on JetBrains MPS
Generic Tool
Projectional Editing
Textual/Symbolic/Tabular/(soon Graphical)
Multiple projections for the same language
(in 3.0, due soon)
Modular language development, extension
and embedding
115. An Example System
Built on JetBrains MPS
Generic Tool
Support for language aspects such as type
system, scopes, code completion, find
usages, dataflow
Template-based approach for transformation
and code generation with IDE support for
target language in templates
Support for building extensible debuggers