SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
Language Workbench
!

Aktuelle Themen der Softwaretechnologie
Vortrag von:
Arthur Rehm
Steven Cardoso
Betreut von:
Prof. Dr. Reichenbach
[1]
!2

Index
Kontext
Domain Specific Language (DSL)
Language Workbench (LW)
MPS
Spoofax
Xtext

Auswertung und Vergleich
Fazit und Ausblick
!3

Kontext
Spezifikation

Synthese

Implementierung

Was

Wie

Verifizierung
sehr teuer (Komplexitätstheorie)
!4

Kontext
Spezifikation

Implementierung

Synthese

Was

DSL

Verifizierung

Wie
!5

Einleitung
GPLs: Allzweckwerkzeuge

[3]
!6

Einleitung
DSLs: Ein Werkzeug für einen Task

[4]
!7

DSL
•

Domain Specific Language

•

Auf eine „Domäne“ zugeschnitten
•

Hohe Abstraktion

•

Wunsch: Soll von Domänenexperten (nichtProgrammierern) verwendet werden
•

z.B. mittels einfacher Syntax
!8

DSL
konkreter Syntax!
-

Repräsentation des abstrakten Syntax

abstrakter Syntax!
-

interne Darstellung der Syntax für weitere
Prozesse
-

z.B. Anwendung von Generatoren auf den
AST
!9

DSL
Interne DSL!
-

Vollwertige IDE bereits vorhanden

-

An Syntax des Hosts gebunden

-

„Laien“ können durch Funktionsumfang „erschlagen“ werden

Externe DSL!
-

Syntax frei wählbar, an „Laien“ anpassbar

-

Jedoch:
-

keine IDE

-

keine Interpreter usw.
!10

DSL
Vorteile!
-

Effizient - wenn gut umgesetzt

-

Steile Lernkurve

-

Reduktion von Kommunikationsaufwänden

Nachteile!
-

Entwicklungsaufwand:
‣

Konzeption (Schema)

‣

Parser, Interpreter, etc. (Generator)

‣

Komfortable Entwicklungsumgebung (Editor)
➡ Language

Workbench
!11

Language Workbench
Martin Fowler

•

Tool Sammlung zum Definieren und Erweitern von
Sprachen

•

IDE für externe DSLs
!12

Language Workbench

•

Syntax

•

Semantik

•

Editor
!13

Language Workbench
Syntax

Text

Grammatik

Semantik

Grafik

Diagramme

Editor

Tabular

Tabellen / Zellen
!14

Language Workbench
Syntax

Semantik

Editor

Translation

Model zu Text

Model zu Model
!15

Language Workbench
Syntax

Semantik

Editor

Editor Mode
Syntax Service

Frei-Text

Projektional

Highlighting
Folding
Completion
Diff

Semantik Service
Referenzen auflösen
Semantic completion
Refactoring
Error Marking

Legende
obligatorisch
optional
!16

Language Workbench Challenge

•

Wettbewerb, um aktuelle Language Workbenches
(LW) untereinander zu vergleichen

•

Seit 2011 wird jedes Jahr eine Aufgabe gestellt, die
mit einem LW zu lösen ist.
!17

Language Workbench Challenge
LWC - 2013: DSL für Formulare
!18

LW Vergleich

•

Ziel: Simple DSL zum
definieren von Formularen
•

Eingabefelder

•

Radiobuttons

•

Checkboxes

•

Transformation zu HTML
!19

MPS
Meta Programming System

•

Projektionale Editoren

•

MPS arbeitet direkt am Abstrakten Syntaxbaum
!20

MPS
Idee hinter projektionalen Editoren

!

•

[2]

Jeder Node im AST ist eine Projektion im MPS Editor
!21

MPS
Workflow: DSLs in MPS
1. Structure
•

Concept (Model)

2. Editor
3. Generator
•

Model-zu-Model (M2M)

•

Model-zu-Text (M2T)
!22

MPS
structure

editor

generator
!23

MPS
structure

editor

generator
!24

MPS
structure

editor

generator
!25

MPS
structure

editor

generator
!26

MPS
Poll DSL in Action
!27

MPS
Poll DSL Ergebnis

M2T
!28

MPS: Anwendung
mbeddr

•

LW auf Basis MPS für Embedded Systems

•

C Erweiterungen + eigene Erweiterungen
!29

Spoofax
•

IDE auf Eclipse Basis

•

Dateien auf Textbasis

•

Stratego als mächtiges Werkzeug (Analyse,
Transformation und Generierung von Code)
•

Strategien und dynamische Regeln

•

Konkrete und abstrakte Syntax kombiniert

•

Sprachen können kombiniert werden
!30

Spoofax
Grammatik in SDF definieren
!31

Spoofax
Eclipse als Editor
!32

Spoofax
Transformationen in Stratego definieren
!33

Spoofax
•

Implementierbare IDE Features
•

Code folding, Outline view

•

Syntax highlighting

•

Code completion

•

Error checking und Tests

•

Refactoring (rename, extract, usw.)
!34

Xtext
•

IDE auf Eclipse Basis

•

EMF Metamodell und konkrete Syntax in einer
Grammatik

•

Transformationen mit Kontrollstrukturen

•

Generiert Java-Klassen aus Grammatik
!35

Xtext
Grammatik in Xtext definieren
!36

Xtext
Editor starten
!37

Xtext
Eigenständiges Eclipse
!38

Xtext
Transformationen in Xtend definieren
!39

Xtext
•

Steile Lernkuve für Java-Entwickler
•
•

•

Weniger formale schreibweise
Viel Java(-ähnlicher) Code —> lesbarer

Auch hier: viele IDE Features implementiert
!40

Vergleich LW

•

MPS

•

Spoofax

•

Xtext
!41

Auswertung
•

MPS
•

•

projektionale LW

Spoofax
•

Stratego als Base Language für verschiedene Tasks

•

Wissenschaftlicher Hintergrund
➡

•

Gut durchdachte Konzepte

Xtext
•

Eigenständige IDE zum Arbeiten

•

Sehr ausgereift
!42

Fazit

•

Language Workbenches sind ein mächtiges
Entwicklungswerkzeug

•

Für wiederkehrende und sicherheitskritische
Aufgaben

•

Mit LW lassen sich Domain Sprachen effizient
entwerfen und erweitern
!43

Ausblick

•

Language Workbenches werden in Zukunft
häufiger eingesetzt

•

Große Chance - die Kommunikation zwischen
Entwicklern und Domain Experten zu verbessern!
Bildquellen:
•

[1] http://www.istockphoto.com/stock-photo-6864190-old-workbench.php?st=cd622ef

•

[2] http://www.voelter.de/data/presentations/DSLDesign-Models2013.pdf

•

[3] http://www.istockphoto.com/stock-photo-9153291-multipurpose-knife-isolated.php?st=1484c3a

•

[4] Rainer Sturm / pixelio.de

•

[5] http://www.projectcartoon.com

Más contenido relacionado

Similar a Language Workbench

mongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - GrundlagenmongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - Grundlageninovex GmbH
 
Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"joergreichert
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007derDoc
 
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...Verein FM Konferenz
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
 
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...Verein FM Konferenz
 
Übersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittÜbersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittSDL Language Technologies
 
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...Robin Sedlaczek
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine ÜbersichtJürgen Gutsch
 
Docbook: Textverarbeitung mit XML
Docbook: Textverarbeitung mit XMLDocbook: Textverarbeitung mit XML
Docbook: Textverarbeitung mit XMLPeter Eisentraut
 
Der gesamte Redaktionsprozess mit Open Source
Der gesamte Redaktionsprozess mit Open SourceDer gesamte Redaktionsprozess mit Open Source
Der gesamte Redaktionsprozess mit Open Sourceyellowcow
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core ApplicationsRobin Sedlaczek
 
Was Sie schon immer über barrierefreie PDFs wissen wollten
Was Sie schon immer über barrierefreie PDFs wissen wolltenWas Sie schon immer über barrierefreie PDFs wissen wollten
Was Sie schon immer über barrierefreie PDFs wissen wolltenMarkus Erle
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions
 
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Community ITmitte.de
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013Oliver Zeigermann
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareAndreas Schreiber
 
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source JavaJBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Javacamunda services GmbH
 

Similar a Language Workbench (20)

MDSD Herausforderung: Entwicklungsmethodik und technisches Umfeld
MDSD Herausforderung: Entwicklungsmethodik und technisches UmfeldMDSD Herausforderung: Entwicklungsmethodik und technisches Umfeld
MDSD Herausforderung: Entwicklungsmethodik und technisches Umfeld
 
mongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - GrundlagenmongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - Grundlagen
 
Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007
 
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
FMK 2013 Konstrukte diverser Programmiersprachen in FileMaker nachgebaut, Tho...
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
FMK2012: Strukturierte Scriptprogrammierung und neue Befehle und Scriptbefehl...
 
Übersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste SchrittÜbersetzungsproduktivität: Der nächste Schritt
Übersetzungsproduktivität: Der nächste Schritt
 
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
 
Docbook: Textverarbeitung mit XML
Docbook: Textverarbeitung mit XMLDocbook: Textverarbeitung mit XML
Docbook: Textverarbeitung mit XML
 
Der gesamte Redaktionsprozess mit Open Source
Der gesamte Redaktionsprozess mit Open SourceDer gesamte Redaktionsprozess mit Open Source
Der gesamte Redaktionsprozess mit Open Source
 
.NET und jetzt!
.NET und jetzt!.NET und jetzt!
.NET und jetzt!
 
Architectures for .Net Core Applications
Architectures for .Net Core ApplicationsArchitectures for .Net Core Applications
Architectures for .Net Core Applications
 
Was Sie schon immer über barrierefreie PDFs wissen wollten
Was Sie schon immer über barrierefreie PDFs wissen wolltenWas Sie schon immer über barrierefreie PDFs wissen wollten
Was Sie schon immer über barrierefreie PDFs wissen wollten
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
 
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
 
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source JavaJBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
 

Language Workbench