+ All Categories
Home > Education > Language Workbench

Language Workbench

Date post: 05-Jul-2015
Category:
Upload: zensor
View: 181 times
Download: 3 times
Share this document with a friend
Description:
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
44
Language Workbench Aktuelle Themen der Softwaretechnologie Prof. Dr. Reichenbach Arthur Rehm Steven Cardoso Vortrag von: Betreut von: [1]
Transcript
Page 1: Language Workbench

Language Workbench!

Aktuelle Themen der Softwaretechnologie

Prof. Dr. Reichenbach

Arthur Rehm Steven Cardoso

Vortrag von:

Betreut von:

[1]

Page 2: Language Workbench

Index !2

KontextDomain Specific Language (DSL) Language Workbench (LW)

MPSSpoofaxXtext

Auswertung und VergleichFazit und Ausblick

Page 3: Language Workbench

Kontext !3

Was Wie

Spezifikation Implementierung

Verifizierung

Synthese

sehr teuer (Komplexitätstheorie)

Page 4: Language Workbench

Kontext !4

Was Wie

Spezifikation Implementierung

Verifizierung

Synthese

DSL

Page 5: Language Workbench

GPLs: Allzweckwerkzeuge

!5

[3]

Einleitung

Page 6: Language Workbench

DSLs: Ein Werkzeug für einen Task

!6

[4]

Einleitung

Page 7: Language Workbench

• 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

Page 8: Language Workbench

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

Page 9: Language Workbench

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

Page 10: Language Workbench

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

Page 11: Language Workbench

Language Workbench

• Tool Sammlung zum Definieren und Erweitern von Sprachen

• IDE für externe DSLs

!11

Martin Fowler

Page 12: Language Workbench

Language Workbench

• Syntax

• Semantik

• Editor

!12

Page 13: Language Workbench

Language Workbench !13

Syntax Semantik Editor

Text Grafik Tabular

Grammatik Diagramme Tabellen / Zellen

Page 14: Language Workbench

Language Workbench !14

Syntax Semantik Editor

Translation

Model zu Text Model zu Model

Page 15: Language Workbench

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

Page 16: Language Workbench

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

Page 17: Language Workbench

Language Workbench Challenge !17

LWC - 2013: DSL für Formulare

Page 18: Language Workbench

• Ziel: Simple DSL zum definieren von Formularen

• Eingabefelder

• Radiobuttons

• Checkboxes

• Transformation zu HTML

!18

LW Vergleich

Page 19: Language Workbench

MPS

• Projektionale Editoren

• MPS arbeitet direkt am Abstrakten Syntaxbaum

!19

Meta Programming System

Page 20: Language Workbench

!20

MPS Idee hinter projektionalen Editoren

!

• Jeder Node im AST ist eine Projektion im MPS Editor

[2]

Page 21: Language Workbench

MPS

1. Structure

• Concept (Model)

2. Editor

3. Generator

• Model-zu-Model (M2M)

• Model-zu-Text (M2T)

!21

Workflow: DSLs in MPS

Page 22: Language Workbench

MPS !22

structure editor generator

Page 23: Language Workbench

MPS !23

structure editor generator

Page 24: Language Workbench

MPS !24

structure editor generator

Page 25: Language Workbench

MPS !25

structure editor generator

Page 26: Language Workbench

!26

Poll DSL in ActionMPS

Page 27: Language Workbench

!27

Poll DSL Ergebnis

M2T

MPS

Page 28: Language Workbench

MPS: Anwendung

• LW auf Basis MPS für Embedded Systems

• C Erweiterungen + eigene Erweiterungen

!28

mbeddr

Page 29: Language Workbench

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

Page 30: Language Workbench

Grammatik in SDF definieren

!30

Spoofax

Page 31: Language Workbench

Eclipse als Editor

!31

Spoofax

Page 32: Language Workbench

Transformationen in Stratego definieren

!32

Spoofax

Page 33: Language Workbench

Spoofax• Implementierbare IDE Features

• Code folding, Outline view

• Syntax highlighting

• Code completion

• Error checking und Tests

• Refactoring (rename, extract, usw.)

!33

Page 34: Language Workbench

Xtext

• IDE auf Eclipse Basis

• EMF Metamodell und konkrete Syntax in einer Grammatik

• Transformationen mit Kontrollstrukturen

• Generiert Java-Klassen aus Grammatik

!34

Page 35: Language Workbench

Grammatik in Xtext definieren

!35

Xtext

Page 36: Language Workbench

Editor starten

!36

Xtext

Page 37: Language Workbench

Eigenständiges Eclipse

!37

Xtext

Page 38: Language Workbench

Transformationen in Xtend definieren

!38

Xtext

Page 39: Language Workbench

Xtext

• Steile Lernkuve für Java-Entwickler

• Weniger formale schreibweise

• Viel Java(-ähnlicher) Code —> lesbarer

• Auch hier: viele IDE Features implementiert

!39

Page 40: Language Workbench

Vergleich LW

• MPS

• Spoofax

• Xtext

!40

Page 41: Language Workbench

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

Page 42: Language Workbench

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

Page 43: Language Workbench

Ausblick

• Language Workbenches werden in Zukunft häufiger eingesetzt

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

!43

Page 44: Language Workbench

• [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:


Recommended