SlideShare a Scribd company logo
1 of 184
Generic Tools -
Specific Languages
On the Art of Building
Software Development Tools
http://voelter.de
voelter@acm.org
@markusvoelter
Markus Voelter
independent/itemis
1
2
3
Tools
Extensibility
Challenges
4
5
6
GTSL
An Example
Wrap Up
1
Tools
Tools
Command-Line Tools
Tools
UI Tools
2
Tool Extensibility
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.
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 [..]
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.
Tool Extensibility
Command-Line Tools
New File Formats
New Processors
Tool Extensibility
Command-Line Tools
New File Formats
New Processors
Assemble Components (Pipes & Filters)
Tool Extensibility
UI Tools
Buttons
Menus
Views
Actions
Tool Extensibility
UI Tools
Buttons
Menus
Views
Actions
New Languages
New Editors
Tool Extensibility
UI Tools
Buttons
Menus
Views
Actions
New Languages
New Editors
Platform/Plugin Systems
3
Challenges
Overview
Context: embedded programming
Examples are from Embedded
Programming and use C as the
„data format“
But applies similarly to other domains
or other data formats/languages
Extensibility Examples
Physical Units: The Challenge
How do you work with
physical units in your code?
Extensibility Examples
Physical Units: The Challenge
Extensibility Examples
Physical Units: The Challenge
How do you detect this error?
Extensibility Examples
Physical Units: The Challenge
How do you detect this error?
Tool (to do the checking)
Data (the units in the code)
You need:
Extensibility Examples
Physical Units via Comments
Bad!
Extensibility Examples
Physical Units via Macros
Bad!
Extensibility Examples
Physical Units via external XML
Bad!
Extensibility Examples
Physical Units via Extension
Good!
Extensibility Examples
Physical Units via Extension
Good!
Type Checker (to do the checking)
Program Code (the units in the code)
You get:
Extensibility Examples
State Machines: The Challenge
How do you represent
state-based behavior in code
and support analyses?
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?
Extensibility Examples
State Machines via C idioms
Bad!
Extensibility Examples
State Machines via C idioms
Bad!
Extensibility Examples
State Machines via External Tool
Bad!
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?
Extensibility Examples
State Machines via Extensions
Good!
Extensibility Examples
State Machines via Extensions
Good!
Constraint Checker (to do the checking)
Program Code (the units in the code)
You get:
Extensibility Examples
Tracing: The Challenge
How do you add traces to
requirements anywhere in
your code, robustly?
Extensibility Examples
Tracing via Macros
Bad!
Extensibility Examples
Tracing via Macros
Tool (to create trace reports)
Data (robust trace annotations)
You need:
Extensibility Examples
Tracing via Language Extensions
You get the idea :-)
Extensibility Examples
Combinations
How do you combine these
(and other) extenions?
Extensibility Examples
Combinations
Extensibility Examples
Combinations
C
Extensibility Examples
Combinations
C
Statemachines
Extensibility Examples
Combinations
C
Statemachines
Tracing
Extensibility Examples
Combinations
C
Statemachines
TracingUnits
Extensibility Examples
Combinations (in an actual tool)
Key Takeaway Point
Tool Extension is not enough!
Key Takeaway Point
Tool Extension is not enough!
Focus on the
data first!
Key Takeaway Point
Tool Extension is not enough!
These both do not explicitly support
extending the underlying data!
Key Takeaway Point
Tool Extension is not enough!
Relatively high effort to reimple-
ment editors and „synchronizers“
Key Takeaway Point
Tool Extension is not enough!
Focus on the
data first!
4
GTSLGeneric
Tools
Specific
Languages
Thought Process
From Data Formats To Languages
Thought Process
From Data Formats To Languages
Structure, Constraints, Semantics
Data Format
Thought Process
From Data Formats To Languages
Structure, Constraints, Semantics
+ SyntaxData Format
Language
Thought Process
From Data Formats To Languages
Languages
Thought Process
Language Engineering
Languages
Language Reuse
Language Modularization
Language Composition
Thought Process
Language Engineering
Languages
Language Reuse
Language Modularization
Language Composition
Language Engineering
Thought Process
Language Engineering
Languages
Language Engineering
Thought Process
Language Engineering
Languages
Language Engineering
Text
Tables
Math
Symbols
Graphics
Forms
Thought Process
Language Engineering
Languages
Language Engineering
Syntactic Diversity
Text
Tables
Math
Symbols
Graphics
Forms
Thought Process
Language Engineering
Languages
Language Engineering
Syntactic Diversity
Thought Process
Language Workbenches
Languages
Language Engineering
Syntactic Diversity
But does this really work?
Thought Process
Language Workbenches
Languages
Language Engineering
Syntactic Diversity
But does this really work?
Language Workbenches
Thought Process
Language Workbenches
Languages
Language Engineering
Syntactic Diversity
Language Workbenches
Generic Tools, Specific Languages
Ingredients
Languages
Language Engineering
Syntactic Diversity
Language Workbenches
Generic Tools, Specific Languages
Ingredients
Languages
Language Engineering
Syntactic Diversity
Language WorkbenchesGeneric Tools
Specific
Languages
Generic Tools, Specific Languages
Ingredients
Languages
Language Engineering
Syntactic Diversity
Language WorkbenchesGeneric Tools
Specific
Languages
(we don‘t have to reimplement
editors and synchronizers)
Generic Tools, Specific Languages
Ingredients
Languages
Language Engineering
Syntactic Diversity
Language WorkbenchesGeneric Tools
Specific
Languages
support
Language Workbenches
Typical Features
Language Workbenches
Typical Features
Language Definition, Reuse,
Extension, Composition
Language Workbenches
Typical Features
Language
Definition, Reuse, Extension, Comp
osition
Mixing Notations
Language Workbenches
Typical Features
Language Definition, Reuse,
Extension, Composition
Mixing Notations
Type Systems, Constraints,
Transformation, Interpretation
Language Workbenches
Typical Features
Goto Definition/Find Usages
Language Workbenches
Typical Features
Goto Definition/Find Usages
Error Markup/Quick Fixes
Language Workbenches
Typical Features
Goto Definition/Find Usages
Error Markup/Quick Fixes
Syntax Highlighting
Language Workbenches
Typical Features
Goto Definition/Find Usages
Error Markup/Quick Fixes
Syntax Highlighting
Code Completion
Language Workbenches
Typical Features
Goto Definition/Find Usages
Error Markup/Quick Fixes
Syntax Highlighting
Code Completion
Search/Replace
Language Workbenches
Typical Features
Goto Definition/Find Usages
Error Markup/Quick Fixes
Syntax Highlighting
Code Completion
Search/Replace
Refactoring
Language Workbenches
Typical Features
Goto Definition/Find Usages
Error Markup/Quick Fixes
Syntax Highlighting
Code Completion
Search/Replace
Refactoring
Debugging
Language Workbenches
Typical Features
Goto Definition/Find Usages
Error Markup/Quick Fixes
Syntax Highlighting
Code Completion
Search/Replace
Refactoring
Debugging
Reporting
Language Workbenches
Typical Features
Goto Definition/Find Usages
Error Markup/Quick Fixes
Syntax Highlighting
Code Completion
Search/Replace
Refactoring
Debugging
Reporting
Visualization
Language Workbenches
Typical Features
Goto Definition/Find Usages
Error Markup/Quick Fixes
Syntax Highlighting
Code Completion
Search/Replace
Refactoring
Debugging
Reporting
Visualization
Version Control
Language Workbenches
Typical Features
for any
Language!
Language Workbenches
Typical Features
Language
Workbenches are
IDEs for arbitrary
languages.
Languages / Language Extensions
Contribute Customizations
Languages / Language Extensions
Contribute Customizations
Language Definition, Reuse,
Extension, Composition
Mixing Notations
Type Systems, Constraints,
Transformation, Interpretation
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
Languages / Language Extensions
Additional Stuff
Buttons
Menus
Views
Actions
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.
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.
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 [..]
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 [..]
Language Workbenches
Typical Features
Used by the tool vendor to
build the initial tool (languages).
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)!
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!
Generic Tools, Specific Languages
Adaptability is built-in!
Extensions are
first-class!
Generic Tools, Specific Languages
Adaptability is built-in!
Extensions are
first-class!
Fundamentally different from
Today‘s State-of-the-Art in Tools
5
An Example
An Example System
Language Engineering Embedded Software
Specific Languages
An Example System
Language Engineering Embedded Software
Specific Languages
A collection of integrated languages
for embedded software engineering.
An Example System
Language Engineering Embedded Software
A collection of integrated languages
Specific Languages
for embedded software engineering.
An Example System
Language Engineering Embedded Software
Specific Languages
An
IDE
for
all
Of
them
An Example System
Language Engineering Embedded Software
Open Source
Eclipse Public License
http://mbeddr.com
Specific Languages
An Example System
Built on JetBrains MPS
Generic Tool
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
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
An Example System
Built on JetBrains MPS
Generic Tool
An Example System
Built on JetBrains MPS
Generic Tool
Open Source
Apache 2.0
http://jetbrains.com/mps
D E M O
Features
Hello, World
Messages abstract over IO. Report statements output them.
Features
Function Types and Function Pointers
Better notation for function types and function references.
Features
Function Types and Lambdas
And yes, we have lambdas (it‘s 2013 after all )
Features
Reporting
Reporting has conditions. All of it removed, when disabled!
Features
Test Cases
Special expression to run test cases and collect failure count.
Features
Physical Units
Types can have units; additional units can be defined.
Features
Physical Units II
Literals can have units; type system calculates w/ units.
Features
Physical Units III
Convertible units support *value* conversions!
Features
Interfaces and Components I
Interfaces define operations. Components provide interfaces.
Features
Interfaces and Components II
Components can be instantiated and wired.
Features
Interfaces and Components III
Interfaces can have pre- and postconditions.
Features
Interfaces and Components IV
In addition, interfaces can have protocol state machines.
Features
Interfaces and Components V
Components can also require ports (dependency injection)
Features
Interfaces and Components VI
Interfaces and components can be visualized.
Features
Interfaces and Components VIII
Mock components specify expectations in context of a test.
Features
Interfaces and Components IX
Mocks can be instantiated and validated in tests.
Features
Interfaces and Components X
Interface contracts can be verified statically!
Features
Decision Tables
Decision tables nicely exploit the projectional editor.
Features
Combinable Extensions!
C, components, units and decision tables comhined!
Features
Decision Tables II
Decision Tables are analyzed f. consistency and completeness
Features
State Machines I
State machines fundamentally consist of states.
Features
State Machines II
States contain transitions with guards, and actions.
Features
State Machines III
State machines can be instantiated; code can interact.
Features
State Machines IV
+ special support for testing state machines.
Features
State Machines V
Outgoing interactins via function calls or out events.
Features
State Machines VI
Hierarchical state machines (composite states)
Features
State Machines VII
State Machines can be visualized in various way.
Features
State Machines VIII
Symbolic Model Checking for State Machines
Features
Documentation
Rich, Structured Comments (note the embedded nodes)
Features
Documentation II
Documentation Language w/ Embeddable Code (LaTeX/HTML)
Features
Documentation III
Format Text, Reference Code, Define Glossary Terms
Features
Documentation IV
Embeddable Expressions with Real Type Checking
Features
Requirements
Structured and Hierarchical Requirements. Color = TraceStatus
Features
Requirements II
Relationships between Requirements (downstream, upstream)
Features
Requirements III
Ubiquitous Tracing from Arbitrary Program Elements
Features
Requirements IV
Requirements are Extensible, e.g. with Scenarios
Features
Requirements V
Scenarios can be Visualized
Features
Requirements VI
Live (interpreted) Business Rules can be Embedded in Req.
Features
Requirements VII
These Business Rules can be „called“ from C Code
Features
Product Line Variability
Feature Models (and Checked Configs) to Express Variability
Features
Product Line Variability II
Runtime Variability based on Feature Models
Features
Product Line Variability III
Static Variability for any Program w/ Variant Editing
Features
Debugging
Debugging on the DSL Level (Extensible!)
Features
VCS Diff/Merge
Diff/Merge on the Projected Syntax
Features
CI Server Integration
Building Programs on Command Line/CI Server
6
Summing up
Summing Up
Key Points
To build meaningful
tools, the data must
be extended.
Extending the tool (buttons,
views, ...) is not enough!
Summing Up
Key Points
Structured Data can
be expressed as
languages.
Languages are data plus syntax.
Summing Up
Key Points
Language Engineering
supports extension
and composition
This supports adapting tools
for specific domains easily.
Summing Up
Key Points
IDE-style tools are
very good for editing
data/programs.
We‘ve got a lot of experience
from regular programming.
Summing Up
Key Points
Language Workbenches
are the key enabling
technology.
MPS is IMHO the most power-
ful, but it‘s not the only one!
Summing Up
Key Points
Let‘s build new classes
of tools!
... which make meaningful
extensibility a reality!
Ω
The End.
voelter.de
dslbook.org
mbeddr.com
jetbrains.com/mps
The End.

More Related Content

What's hot

Systematic error management - we ported rudder to zio
Systematic error management - we ported rudder to zioSystematic error management - we ported rudder to zio
Systematic error management - we ported rudder to ziofanf42
 
Feedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLPFeedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLPStephen Gilmore
 
Feedback on Part 1 of the Software Engineering Large Practical
Feedback on Part 1 of the Software Engineering Large PracticalFeedback on Part 1 of the Software Engineering Large Practical
Feedback on Part 1 of the Software Engineering Large PracticalStephen Gilmore
 
Requirements Engineering: focus on Natural Language Processing, Lecture 2
Requirements Engineering: focus on Natural Language Processing, Lecture 2Requirements Engineering: focus on Natural Language Processing, Lecture 2
Requirements Engineering: focus on Natural Language Processing, Lecture 2alessio_ferrari
 
Tools for the Toolmakers
Tools for the ToolmakersTools for the Toolmakers
Tools for the ToolmakersCaleb Callaway
 
Programming language design and implemenation
Programming language design and implemenationProgramming language design and implemenation
Programming language design and implemenationAshwini Awatare
 
Safaba Welocalize MT Summit 2013 Analyzing MT Utility and Post-Editing
Safaba Welocalize MT Summit 2013 Analyzing MT Utility and Post-EditingSafaba Welocalize MT Summit 2013 Analyzing MT Utility and Post-Editing
Safaba Welocalize MT Summit 2013 Analyzing MT Utility and Post-EditingWelocalize
 
Standardising on C++
Standardising on C++Standardising on C++
Standardising on C++Kevlin Henney
 
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
 
CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm Kaya Ota
 
If I Had a Hammer...
If I Had a Hammer...If I Had a Hammer...
If I Had a Hammer...Kevlin Henney
 

What's hot (16)

Systematic error management - we ported rudder to zio
Systematic error management - we ported rudder to zioSystematic error management - we ported rudder to zio
Systematic error management - we ported rudder to zio
 
Feedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLPFeedback on Part 1 of the CSLP
Feedback on Part 1 of the CSLP
 
Feedback on Part 1 of the Software Engineering Large Practical
Feedback on Part 1 of the Software Engineering Large PracticalFeedback on Part 1 of the Software Engineering Large Practical
Feedback on Part 1 of the Software Engineering Large Practical
 
PDFTextProcessing
PDFTextProcessingPDFTextProcessing
PDFTextProcessing
 
Requirements Engineering: focus on Natural Language Processing, Lecture 2
Requirements Engineering: focus on Natural Language Processing, Lecture 2Requirements Engineering: focus on Natural Language Processing, Lecture 2
Requirements Engineering: focus on Natural Language Processing, Lecture 2
 
Programming Languages
Programming LanguagesProgramming Languages
Programming Languages
 
Tools for the Toolmakers
Tools for the ToolmakersTools for the Toolmakers
Tools for the Toolmakers
 
using cxx::types
using cxx::typesusing cxx::types
using cxx::types
 
Programming language design and implemenation
Programming language design and implemenationProgramming language design and implemenation
Programming language design and implemenation
 
Safaba Welocalize MT Summit 2013 Analyzing MT Utility and Post-Editing
Safaba Welocalize MT Summit 2013 Analyzing MT Utility and Post-EditingSafaba Welocalize MT Summit 2013 Analyzing MT Utility and Post-Editing
Safaba Welocalize MT Summit 2013 Analyzing MT Utility and Post-Editing
 
Refactoring
RefactoringRefactoring
Refactoring
 
Standardising on C++
Standardising on C++Standardising on C++
Standardising on C++
 
Principles of-programming-languages-lecture-notes-
Principles of-programming-languages-lecture-notes-Principles of-programming-languages-lecture-notes-
Principles of-programming-languages-lecture-notes-
 
CS152 Programming Paradigm
CS152 Programming Paradigm CS152 Programming Paradigm
CS152 Programming Paradigm
 
test
testtest
test
 
If I Had a Hammer...
If I Had a Hammer...If I Had a Hammer...
If I Had a Hammer...
 

Viewers also liked

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
 
Professional Podcasting Guide
Professional Podcasting GuideProfessional Podcasting Guide
Professional Podcasting GuideMarkus 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
 

Viewers also liked (19)

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
 
Professional Podcasting Guide
Professional Podcasting GuideProfessional Podcasting Guide
Professional Podcasting Guide
 
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
 

Similar to Generic Tools, Specific Laguages

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
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesMarkus Voelter
 
APIs And SDKs Breaking Into And Succeeding In A Specialty Market
APIs And SDKs  Breaking Into And Succeeding In A Specialty MarketAPIs And SDKs  Breaking Into And Succeeding In A Specialty Market
APIs And SDKs Breaking Into And Succeeding In A Specialty MarketBill Dubie
 
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
 
Creating a compiler for your own language
Creating a compiler for your own languageCreating a compiler for your own language
Creating a compiler for your own languageAndrea Tino
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being DrivenAntonio Terreno
 
Technical Documentation By Techies
Technical Documentation By TechiesTechnical Documentation By Techies
Technical Documentation By Techiesppd1961
 
Terminology management as fitness v.2 iti
Terminology management as fitness v.2 itiTerminology management as fitness v.2 iti
Terminology management as fitness v.2 itiITIRussia
 
Software development slides
Software development slidesSoftware development slides
Software development slidesiarthur
 
Better problem solving through scripting: How to think through your #eprdctn ...
Better problem solving through scripting: How to think through your #eprdctn ...Better problem solving through scripting: How to think through your #eprdctn ...
Better problem solving through scripting: How to think through your #eprdctn ...BookNet Canada
 
Usability evaluation of Domain-Specific Languages
Usability evaluation of Domain-Specific LanguagesUsability evaluation of Domain-Specific Languages
Usability evaluation of Domain-Specific LanguagesAnkica Barisic
 
ChatGPT in academic settings H2.de
ChatGPT in academic settings H2.deChatGPT in academic settings H2.de
ChatGPT in academic settings H2.deDavid Döring
 
Hand Coding ETL Scenarios and Challenges
Hand Coding ETL Scenarios and ChallengesHand Coding ETL Scenarios and Challenges
Hand Coding ETL Scenarios and Challengesmark madsen
 
Teaching of computer programming
Teaching of  computer programmingTeaching of  computer programming
Teaching of computer programmingmarpasha
 
Writting Better Software
Writting Better SoftwareWritting Better Software
Writting Better Softwaresvilen.ivanov
 
UNIT 3.1 INTRODUCTON TO IDA.ppt
UNIT 3.1 INTRODUCTON TO IDA.pptUNIT 3.1 INTRODUCTON TO IDA.ppt
UNIT 3.1 INTRODUCTON TO IDA.pptManjuAppukuttan2
 
Maintenance of Dynamically vs. Statically typed Languages
Maintenance of Dynamically vs. Statically typed LanguagesMaintenance of Dynamically vs. Statically typed Languages
Maintenance of Dynamically vs. Statically typed LanguagesAmin Bandeali
 

Similar to Generic Tools, Specific Laguages (20)

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?
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
 
APIs And SDKs Breaking Into And Succeeding In A Specialty Market
APIs And SDKs  Breaking Into And Succeeding In A Specialty MarketAPIs And SDKs  Breaking Into And Succeeding In A Specialty Market
APIs And SDKs Breaking Into And Succeeding In A Specialty Market
 
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
 
test
testtest
test
 
Creating a compiler for your own language
Creating a compiler for your own languageCreating a compiler for your own language
Creating a compiler for your own language
 
Importance Of Being Driven
Importance Of Being DrivenImportance Of Being Driven
Importance Of Being Driven
 
Technical Documentation By Techies
Technical Documentation By TechiesTechnical Documentation By Techies
Technical Documentation By Techies
 
Terminology management as fitness v.2 iti
Terminology management as fitness v.2 itiTerminology management as fitness v.2 iti
Terminology management as fitness v.2 iti
 
Software development slides
Software development slidesSoftware development slides
Software development slides
 
Consulting
ConsultingConsulting
Consulting
 
Better problem solving through scripting: How to think through your #eprdctn ...
Better problem solving through scripting: How to think through your #eprdctn ...Better problem solving through scripting: How to think through your #eprdctn ...
Better problem solving through scripting: How to think through your #eprdctn ...
 
Usability evaluation of Domain-Specific Languages
Usability evaluation of Domain-Specific LanguagesUsability evaluation of Domain-Specific Languages
Usability evaluation of Domain-Specific Languages
 
ChatGPT in academic settings H2.de
ChatGPT in academic settings H2.deChatGPT in academic settings H2.de
ChatGPT in academic settings H2.de
 
Intro To AOP
Intro To AOPIntro To AOP
Intro To AOP
 
Hand Coding ETL Scenarios and Challenges
Hand Coding ETL Scenarios and ChallengesHand Coding ETL Scenarios and Challenges
Hand Coding ETL Scenarios and Challenges
 
Teaching of computer programming
Teaching of  computer programmingTeaching of  computer programming
Teaching of computer programming
 
Writting Better Software
Writting Better SoftwareWritting Better Software
Writting Better Software
 
UNIT 3.1 INTRODUCTON TO IDA.ppt
UNIT 3.1 INTRODUCTON TO IDA.pptUNIT 3.1 INTRODUCTON TO IDA.ppt
UNIT 3.1 INTRODUCTON TO IDA.ppt
 
Maintenance of Dynamically vs. Statically typed Languages
Maintenance of Dynamically vs. Statically typed LanguagesMaintenance of Dynamically vs. Statically typed Languages
Maintenance of Dynamically vs. Statically typed Languages
 

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

More from Markus Voelter (11)

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

Recently uploaded

Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Français Patch Tuesday - Avril
Français Patch Tuesday - AvrilFrançais Patch Tuesday - Avril
Français Patch Tuesday - AvrilIvanti
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialJoão Esperancinha
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 

Recently uploaded (20)

Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Français Patch Tuesday - Avril
Français Patch Tuesday - AvrilFrançais Patch Tuesday - Avril
Français Patch Tuesday - Avril
 
Kuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorialKuma Meshes Part I - The basics - A tutorial
Kuma Meshes Part I - The basics - A tutorial
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 

Generic Tools, Specific Laguages