Domain Specific Languages (DSLs)

Werbung
Vorgetragen von
Sanaz Mostowfi
Anna Polovets
Mandy Neumann
Gliederung
 Was ist DSL?
 Welche Arten von DSL gibt es?
 Vor – und Nachteile
 Werkzeuge zur Erstellung von
DSLs
 XText
Definition:
• DSL (Domain Specific Language, auch
Fachsprache) ist eine formale Sprache, die
speziell für ein bestimmtes Problemfeld (die
Domäne) entworfen und implementiert wird.
Domänen:
Domäne
Arbeits-, Wissensgebiet, auf dem jemand besonders gut Bescheid weiß,
auf dem er sich speziell und besonders intensiv betätigt ...
(Duden Fremdwörterbuch, 1982)
Jede Software wird für eine bestimmte Domäne entwickelt,
z.B.:
• Übersetzung von Programmiersprachen
• Kommunikation in verteilten System
• Grafische Benutzeroberflächen
• Web-Shop
• Buchhaltung
• Waschmaschinensteuerung
• ...
Anforderungen an eine DSL:
• die relevanten Aspekte einer Domäne (und
möglichst nichts darüber hinaus)sollen sich
kompakt beschreiben lassen
• wenige spezialisierte Konzepte mit möglichst
wenig syntaktischem Ballast
• Domänenexperten ohne vertiefte
Programmierkenntnisse sollen damit umgehen
können (oder sie zumindest verstehen können)
• Anlehnung an die in der Domäne üblichen
Notationen
DSL : Syntax
Die konkrete Syntax einer DSL spezifiziert im Detail die Notation der
Sprache.
• legt fest, wie etwas mit der Sprache formuliert werden kann
• bei textuellen DSLs mit regulären Ausdrücken und/oder EBNF
spezifiziert
Die abstrakte Syntax einer DSL spezifiziert die Struktur der Sprache.
• legt fest, was mit der Sprache formuliert werden kann
• zu einer abstrakten Syntax kann es mehrere konkrete Syntaxformen
geben
• Darstellung als abstrakter Syntaxgraph (ASG)
DSL : Semantik
Die statische Semantik regelt die Wohlgeformtheit von
Formulierungen.
• explizit in Form von Konsistenzregeln für abstrakte Syntaxgraphen
• Metamodell einer DSL = abstrakte Syntax + statische Semantik
Die dynamische Semantik regelt die Bedeutung von Formulierungen.
• implizit in Form von Transformatoren für abstrakte Syntaxgraphen
Arten von DSL
Klassifizierung nach Notation:
• grafisch
• textuell
Klassifizierung nach Implementierung:
 eigenständige Sprache (externe DSL)
(Exkurs: Regulärer Ausdruck )
Bsp. reguläre Ausdrücke, SQL
Einbettung in eine Universalsprache
(Interne / eingebettete DSL )
 Spezialisierung einer Universalsprache
Bsp. UML2-Profil, XML - Schema
Bsp. XML
<!ELEMENT meinxml (xxx)*>
<!ELEMENT xxx (#PCDATA)>
<!ATTLIST xxx
yyy (true|false) #REQUIRED
>
mit der DTD
komforme
XML-Datei
DTD
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE meinxml SYSTEM "meinxml.dtd">
<meinxml>
<xxx yyy="true">
Beliebiger Text, auch mit Entities
</xxx>
</meinxml>
Vorteile von DSL
 weniger Redundanz
 deklarative Beschreibung eines Sachverhaltes
 weniger technischer Code
bessere Lesbarkeit
 domänenspezifische, statische Validierung (nur
externe DSLs)
Nachteile
 Schwierigkeit der Findung des geeigneten
Abstraktionsniveaus
 Hoher Anspruch an die Kompetenz der Entwickler der
Sprache
 Aufwand für die Bestimmung der Anforderungen an die
neue Sprache, der Definition von Syntax und Semantik
sowie der Implementierung und Pflege der Tools, die zur
Anwendung der Sprache benötigt werden
 Schwierigkeit, die langfristig benötigten Eigenschaften
der Sprache zu identifizieren
 schleichenden Entwicklung der Sprache zu einer
allgemeinen Programmiersprache
Werkzeuge
Bei internen DSLs wird die Definition, Nutzung und Auswertung durch
bestehende Werkzeuge unterstützt (Compiler, XML-Parser, XMI- Interpereten)
Bei externen DSLs müssen neue Werkzeuge erstellt werden.
Zahlen und Fakten
• „Language Development Framework“
 für DSLs und GPLs
• Entwickelt bei itemis
• Teil des Eclipse-Modeling Projects (Stichwort MDSD)
• In Java implementiert
 als Plugin oder im Bundle mit dem aktuellen Release
• Besteht aus ca. 1,5 Mio. Zeilen Code, davon ca. 10%
handgeschrieben, mit 130 Testsprachen
• 9 aktive Entwickler
• 2010 Gewinner des Eclipse Community Awards für das
„most innovative project“
Wie funktioniert X-Text?
Beispiel
Grammatik-Definition mit built-in
Tokens
Entry Rule
Weitere Parser-Regeln
• Notation ist angelehnt
an die Extended
Backus-Naur Form
(EBNF)
Zuweisungsarten:
•=
der Typ wird durch die rechte Seite
bestimmt
• ?=
der Typ ist Boolean
• +=
der Typ ist eine Liste vom Typ der
rechten Seite
Kardinalitäten:
•*
Beliebig viele (0..n)
•+
Mindestens Eins (1..n)
•?
Optional (0 oder 1)
•
Eins zu Eins Abbildung (1..1)
Grammatik und DSL
Grammatik
DSL
Features
• Validierung
• Content Assist
• Code Completion
• Quickfix
• Syntax Highlighting
• Outline
 Alles modifizierbar!
Beispiel: Schach
Quellenangaben und Links
Voelter, Markus. Domänenspezifische Sprachen und
Microsoft Oslo
http://www.voelter.de/data/articles/VoelterCorneliusse
n-OSLO.pdf
Xtext Homepage:
http://www.eclipse.org/Xtext/ bzw.
http://xtext.itemis.com/
Fragen?
Danke!
Herunterladen