Language Workbench
!

Aktuelle Themen der Softwaretechnologie
Vortrag von:
Arthur Rehm
Steven Cardoso
Betreut von:
Prof. D...
!2

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

Auswertung und Vergleich
Fazit ...
!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änenexp...
!8

DSL
konkreter Syntax!
-

Repräsentation des abstrakten Syntax

abstrakter Syntax!
-

interne Darstellung der Syntax fü...
!9

DSL
Interne DSL!
-

Vollwertige IDE bereits vorhanden

-

An Syntax des Hosts gebunden

-

„Laien“ können durch Funkti...
!10

DSL
Vorteile!
-

Effizient - wenn gut umgesetzt

-

Steile Lernkurve

-

Reduktion von Kommunikationsaufwänden

Nachte...
!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
Foldin...
!16

Language Workbench Challenge

•

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

•

S...
!17

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

LW Vergleich

•

Ziel: Simple DSL zum
definieren von Formularen
•

Eingabefelder

•

Radiobuttons

•

Checkboxes

•

T...
!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...
!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,
Transformati...
!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

•...
!34

Xtext
•

IDE auf Eclipse Basis

•

EMF Metamodell und konkrete Syntax in einer
Grammatik

•

Transformationen mit Kon...
!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 —> lesba...
!40

Vergleich LW

•

MPS

•

Spoofax

•

Xtext
!41

Auswertung
•

MPS
•

•

projektionale LW

Spoofax
•

Stratego als Base Language für verschiedene Tasks

•

Wissenscha...
!42

Fazit

•

Language Workbenches sind ein mächtiges
Entwicklungswerkzeug

•

Für wiederkehrende und sicherheitskritisch...
!43

Ausblick

•

Language Workbenches werden in Zukunft
häufiger eingesetzt

•

Große Chance - die Kommunikation zwischen
...
Bildquellen:
•

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

•

[2] http://www.voelter...
Nächste SlideShare
Wird geladen in …5
×

Language Workbench

494 Aufrufe

Veröffentlicht am

Language Workbenches sind Tools zur effizienten Erstellung von externen domänenspezifische Sprache.

Seminar: Aktuelle Themen der Softwaretechnologie
von Prof. Dr. Christoph Reichenbach

an der Goethe-Universität Frankfurt am Main

Veröffentlicht in: Bildung
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
494
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
4
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Language Workbench

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

×