Language Workbench!
Aktuelle Themen der Softwaretechnologie
Prof. Dr. Reichenbach
Arthur Rehm Steven Cardoso
Vortrag von:
Betreut von:
[1]
Index !2
KontextDomain Specific Language (DSL) Language Workbench (LW)
MPSSpoofaxXtext
Auswertung und VergleichFazit und Ausblick
Kontext !3
Was Wie
Spezifikation Implementierung
Verifizierung
Synthese
sehr teuer (Komplexitätstheorie)
Kontext !4
Was Wie
Spezifikation Implementierung
Verifizierung
Synthese
DSL
GPLs: Allzweckwerkzeuge
!5
[3]
Einleitung
DSLs: Ein Werkzeug für einen Task
!6
[4]
Einleitung
• Domain Specific Language
• Auf eine „Domäne“ zugeschnitten
• Hohe Abstraktion
• Wunsch: Soll von Domänenexperten (nicht-Programmierern) verwendet werden
• z.B. mittels einfacher Syntax
!7
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
!8
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.
!9
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
!10
DSL
Language Workbench
• Tool Sammlung zum Definieren und Erweitern von Sprachen
• IDE für externe DSLs
!11
Martin Fowler
Language Workbench
• Syntax
• Semantik
• Editor
!12
Language Workbench !13
Syntax Semantik Editor
Text Grafik Tabular
Grammatik Diagramme Tabellen / Zellen
Language Workbench !14
Syntax Semantik Editor
Translation
Model zu Text Model zu Model
Language Workbench !15
Syntax Semantik Editor
Editor Mode
Frei-Text Projektional
Syntax Service Semantik Service
Highlighting Folding Completion Diff
Referenzen auflösen Semantic completion Refactoring Error Marking
obligatorischoptional
Legende
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.
!16
Language Workbench Challenge !17
LWC - 2013: DSL für Formulare
• Ziel: Simple DSL zum definieren von Formularen
• Eingabefelder
• Radiobuttons
• Checkboxes
• Transformation zu HTML
!18
LW Vergleich
MPS
• Projektionale Editoren
• MPS arbeitet direkt am Abstrakten Syntaxbaum
!19
Meta Programming System
!20
MPS Idee hinter projektionalen Editoren
!
• Jeder Node im AST ist eine Projektion im MPS Editor
[2]
MPS
1. Structure
• Concept (Model)
2. Editor
3. Generator
• Model-zu-Model (M2M)
• Model-zu-Text (M2T)
!21
Workflow: DSLs in MPS
MPS !22
structure editor generator
MPS !23
structure editor generator
MPS !24
structure editor generator
MPS !25
structure editor generator
!26
Poll DSL in ActionMPS
!27
Poll DSL Ergebnis
M2T
MPS
MPS: Anwendung
• LW auf Basis MPS für Embedded Systems
• C Erweiterungen + eigene Erweiterungen
!28
mbeddr
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
!29
Grammatik in SDF definieren
!30
Spoofax
Eclipse als Editor
!31
Spoofax
Transformationen in Stratego definieren
!32
Spoofax
Spoofax• Implementierbare IDE Features
• Code folding, Outline view
• Syntax highlighting
• Code completion
• Error checking und Tests
• Refactoring (rename, extract, usw.)
!33
Xtext
• IDE auf Eclipse Basis
• EMF Metamodell und konkrete Syntax in einer Grammatik
• Transformationen mit Kontrollstrukturen
• Generiert Java-Klassen aus Grammatik
!34
Grammatik in Xtext definieren
!35
Xtext
Editor starten
!36
Xtext
Eigenständiges Eclipse
!37
Xtext
Transformationen in Xtend definieren
!38
Xtext
Xtext
• Steile Lernkuve für Java-Entwickler
• Weniger formale schreibweise
• Viel Java(-ähnlicher) Code —> lesbarer
• Auch hier: viele IDE Features implementiert
!39
Vergleich LW
• MPS
• Spoofax
• Xtext
!40
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
!41
Fazit
• Language Workbenches sind ein mächtiges Entwicklungswerkzeug
• Für wiederkehrende und sicherheitskritische Aufgaben
• Mit LW lassen sich Domain Sprachen effizient entwerfen und erweitern
!42
Ausblick
• Language Workbenches werden in Zukunft häufiger eingesetzt
• Große Chance - die Kommunikation zwischen Entwicklern und Domain Experten zu verbessern!
!43
• [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
Bildquellen: