Language Workbench

Post on 05-Jul-2015

181 views 3 download

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

transcript

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: