Domain Specific Languages



Ähnliche Dokumente
Entwicklung Anwendungsbezogener Sprachen

HTML5. Wie funktioniert HTML5? Tags: Attribute:

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

WEBSEITEN ENTWICKELN MIT ASP.NET

Visuelle DSLs Trends in der Softwaretechnik: Domänenspezifische Sprachen (Seminar WS 2010/11) Thorsten Arendt

Programmiersprachen und Übersetzer

Vorgetragen von. Sanaz Mostowfi Anna Polovets Mandy Neumann

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

Language Workbench. Aktuelle Themen der Softwaretechnologie. Vortrag von: Arthur Rehm Steven Cardoso. Betreut von: Prof. Dr.

Barrierefreie Webseiten erstellen mit TYPO3

Barrierefreies Web. Web-Sites so gestalten, dass jeder sie nutzen und lesen kann. Zielkonflikte: barrierefreies Web für kommerzielle Anbieter

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

UML-DSLs effizient eingesetzt. Insight 07, Klaus Weber

Webseiten und Web-Apps grafisch gestalten mit HTML5 Canvas ohne Flash und sonstige Tools

Einführung in Generatives Programmieren. Bastian Molkenthin

Software Entwicklung II (SS12)

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Vortrag von: Ilias Agorakis & Robert Roginer

Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

pro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Formale Sprachen und Grammatiken

Grundlagen Software Engineering

WhiteStarUML Tutorial

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

2.11 Kontextfreie Grammatiken und Parsebäume

Korrekturen von Hand ausgeführt, per Post oder als Scan an Sie übermittelt.

Erstellung von Word und Excel Berichten mit Eclipse BIRT

CASCADING STYLE SHEETS WEBSEITEN-GESTALTUNG MIT CSS

Forschungsprojekt SS 2009

Theoretische Informatik I

Software Systems Engineering

Techniken der Projektentwicklungen

Meine erste Homepage - Beispiele

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Modellierung von Echtzeitsystemen mit dem UML CASE Tool Telelogic Tau G2 Developer

Quellen: Towards a Human Computer InteractionPerspective. Übersicht. Warum visuelle Sprachen? Begriffsdefinitionen: Hinderungsgründe bisher:

Theoretische Informatik I

A Domain Specific Language for Project Execution Models

Requirements Engineering I

Nominari. Firmenportrait

Webdesign-Multimedia HTML und CSS

Objektorientierte Programmierung OOP

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

Modellgetriebene Service-Entwicklung

Softwaretechnik. Fomuso Ekellem WS 2011/12

nitgofer netkey information technology gmbh VORTEILE AUF EINEN BLICK

Seminar aus dem Bereich E-Learning

Use Cases. Use Cases

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

XGenerator. Modellierung, Schemagenerierung und Dokumentation im XMeld-Projekt. Bremen, 7. Mai Ullrich Bartels

Microsoft SharePoint 2013 Designer

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Softwaretechnik (Allgemeine Informatik) Überblick

SharePoint Demonstration

Entwicklung mit Arbortext Editor 6.1

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Fragebogen ISONORM 9241/110-S

Das Social Semantic Web

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Webentwicklung mit Mozilla Composer I.

Klausur Software Engineering für WI (EuI)

Präsentation Von Laura Baake und Janina Schwemer

10 Erweiterung und Portierung

Datei für Übersetzung vorbereiten

HTML. HyperText Markup Language. Die Programmiersprache des WWW. Keine eigentliche Programmiersprache, sondern eher Seitenbeschreibungssprache

IINFO Storyboard

Was ist ein Compiler?

Makros aufrufen. Übungsbeispiel Aufrufmöglichkeiten

Eigene Formatvorlagen

Anbindung Borland CaliberRM

Visualisierung von Geodaten

TOP: telc Online Placement Test

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

Requirements-Traceability in der industriellen Praxis Ziele und Einsatz

Informationswirtschaft II Rational Unified Process (RUP)

Informationswirtschaft II

Die Orgadata AG ist ein stark expandierendes Software-Unternehmen aus Leer. Mit unserem System LogiKal

A007 Web Content Management Systeme (CMS)

Modellbasierte Softwareentwicklung

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

4 Aufzählungen und Listen erstellen

HTML Programmierung. Aufgaben

Produktpräsentation Interaktive Präsentationssysteme. Pä

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.


Programmieren Formulierung eines Algorithmus in einer Programmiersprache

gallestro BPM - weit mehr als malen...

Transkript:

Domain Specific Languages Entwicklungsphasen für Anwendungsbezogene Sprachen (Domain Specific Language, DSL) präsentiert von Achim Schumacher im Seminar Software Language Engeneering 07.01.2010 Achim Schumacher: Domain Specific Languages 1

HTML: Anwendungsbezogene Sprache <h1>titel</h1> <p>lorem <i>ipsum</i> dolor sit amet, <u>consectetur</u>, sadipisci</p> Titel Lorem ipsum dolor sit amet, consectetur, sadpisci Anweisungen für den Browser Anwendungsbereich ( Domäne ): Layout und Hypertext (bspw. World Wide Web) Programmierung einfacher als in allgemein anwendbarer Programmiersprache 07.01.2010 Achim Schumacher: Domain Specific Languages 2

Weitere Beispiele für DSL LaTeX SQL VHDL Make Excel-Makro UML Backus-Naur-Form Typografie Datenbankanfragen Hardwaredesign Softwareaktualisierung Tabellenkalkulation Grafische Modellierung Spezifikation von Syntax 07.01.2010 Achim Schumacher: Domain Specific Languages 3

Inhalt 1.Nutzen und Eigenschaften von DSL 2.Phasenmodell für DSL-Entwicklung 3.Kurzvorstellung der Phasen 4.Fazit und Zusammenfassung 07.01.2010 Achim Schumacher: Domain Specific Languages 4

Nutzen von DSL Zugeschnitten auf Anwendungsbereich Keine unnötigen Konstrukte ohne Domänenbezug schneller erlernbar, effizienter nutzbar Kapselung von Domänenwissen Ersetzung von (sich wiederholenden) Details durch aussagekräftige, kompakte Sprachkonstrukte Engere Sprache Ausdrucksstärker Beispiel: Kontextfreie Grammatiken: Konzepte auf hohem Niveau 07.01.2010 Achim Schumacher: Domain Specific Languages 5

Nutzen von DSL Nutzung einfacher als bei allgemein anwendbarer Programmiersprache ( general programming language, GPL) Vergrößerung der Zielgruppe für die Sprache Einbezug von Benutzern ohne Programmiererfahrungen 07.01.2010 Achim Schumacher: Domain Specific Languages 6

Klassifizierung nach Ausführbarkeit Ausführbar Beschreibend Excel Makro HTML / LaTeX Backus- Naur-Form Datenstrukturen DSL mit unterschiedlichem Grad an Ausführbarkeit und Beschreibung 07.01.2010 Achim Schumacher: Domain Specific Languages 7

Klassifizierung nach Ausführbarkeit Ausführbar Beschreibend Excel Makro HTML / LaTeX Backus- Naur-Form Datenstrukturen Wohldefinierte Ausführungssemantik Excel Makro: Ausführung von Operationen der Tabellenkalkulation Wenig oder gar nicht beschreibender Charakter 07.01.2010 Achim Schumacher: Domain Specific Languages 8

Klassifizierung nach Ausführbarkeit Ausführbar Beschreibend Excel Makro HTML / LaTeX Backus- Naur-Form Datenstrukturen Eingabesprachen über Übersetzer LaTeX: Übersetzung in andere DSL wie PDF/PS Ausführbare Sprachen, aber auch beschreibend HTML: Ausführbare Befehle für Browser und Beschreibung des Layouts 07.01.2010 Achim Schumacher: Domain Specific Languages 9

Klassifizierung nach Ausführbarkeit Ausführbar Beschreibend Excel Makro HTML / LaTeX Backus- Naur-Form Datenstrukturen Primär beschreibend Statische Strukturen Für Anwendungsgenerierung nutzbar Backus-Naur-Form: Generierung von Parsern für die beschriebene Sprache 07.01.2010 Achim Schumacher: Domain Specific Languages 10

Klassifizierung nach Ausführbarkeit Ausführbar Beschreibend Excel Makro HTML / LaTeX Backus- Naur-Form Datenstrukturen Nicht ausführbar Repräsentationen von Domänen-Spezifischen Datenstrukturen Analyse, Überprüfung von Konsistenz oder Visualisierung wie für ausführbare DSL möglich 07.01.2010 Achim Schumacher: Domain Specific Languages 11

Entwicklung in Phasen Aufteilung des Entwicklungsprozesses Entscheidung Analyse Design Implementierung Einsatz Modell, nicht zwangsweise sequenziell Muster für jede Phase: typische Fälle Auswahl ohne Einfluss auf andere Phasen 07.01.2010 Achim Schumacher: Domain Specific Languages 12

Phase 1: Entscheidung Ökonomischer Vorteil durch Entwicklung Muster: Anwendungsszenarien für DSL Notation Notation für Domäne hinzufügen textliche zusätzlich zu visueller Notation benutzerfreundliche Notation für API Aufgabenautomatisierung Handhabung von Datenstrukturen Anpassung von Benutzungsschnittstellen Vermeidung wiederholender Aufgaben Vereinfachung von Beschreibungen und Durchlaufen von Daten Interaktion programmierbar machen Vereinfachung der GUI-Erstellung 07.01.2010 Achim Schumacher: Domain Specific Languages 13

Phase 1: Entscheidung. Beispiel Codegenerierung für Datenstrukturen int{nummer} String{name vorname} Kompaktere Schreibweise Mit verschiedenen Generatoren: verschiedene Zielsprachen private int nummer; private String name, vorname; public int getnummer() { return this.nummer; } public void setnummer(int nummer) { this.nummer=nummer; } public String getname() { return this.name; } public void setname(string name) { this.name=name; } public String getvorname()... 07.01.2010 Achim Schumacher: Domain Specific Languages 14

Phase 2: Analyse Identifizierung der Domäne Sammlung von Wissen Erstellung einer Ontologie Sammlung von Begriffen, die in der Sprache umgesetzt werden sollen Quellen: Technische Dokumente, Experten, existierender GPL-Code Komplexer Sachverhalt 07.01.2010 Achim Schumacher: Domain Specific Languages 15

Phase 2: Analyse Ontologie: Wichtige Begriffe der Domäne Beispiel: HTML Domäne: Layout und Hypertext Begriffe: Absatz, Aufzählung, Bild, Fettschrift, Hyperlink, Kursivschrift, Tabelle, Überschrift, Zeilenumbruch,... Umsetzung in zu entwickelnder Sprache 07.01.2010 Achim Schumacher: Domain Specific Languages 16

Phase 3: Design Festlegung der Notation der Sprache Beziehung zu existierenden Sprachen (Teilweises) Nutzen einer existierenden GPL/DSL Huckepack : Teilweise Nutzung Spezialisierung: Begrenzung der existierenden Sprache Erweiterung der existierenden Sprache Sprachausnutzung Spracherfindung Kompletter Neuentwurf ohne Gemeinsamkeiten mit existierenden Sprachen 07.01.2010 Achim Schumacher: Domain Specific Languages 17

Phase 3: Design. Beispiel: HTML Auszeichnungssprache (Markup Language) Nutzung von Tags: Starttag und Endtag Inhalt dazwischen Auch Tags ohne Inhalt Schachtelung möglich Attribute im Starttag <h1>titel</h1> <p> Lorem<br/> <i>ipsum <u>dolor</u> sit amet </i> <img src= img.gif /> </p> 07.01.2010 Achim Schumacher: Domain Specific Languages 18

Phase 3: Design. Beispiel: KFG Kontext-freie Grammatik: Definition konkreter Syntax Grammatik G=(T, N, P, S) T = {'a', 'b', 'x', 'y'} N = {A, B} S = A T: Menge Terminalsymbole N: Menge Nichtterminalsymb. S N: Startsymbol P: Produktionen Produktionen+Startsymbol: weitere Mengen ergeben sich Menge der Produktionen A ::= 'x' A 'y' A ::= B B ::= 'a' B ::= 'b' Erzeugbare Worte a, b, xay, xby, xxayy, xxbyy... 07.01.2010 Achim Schumacher: Domain Specific Languages 19

Phase 3: Design. Beispiel: UML Grafische Notation zur Modellierung Klassen Seminar name: String rahmen bestandteil 1..1 1..* Vortrag Use Cases Seminarvortrag Vorbereitung Vortragender Präsentation Zuhörer 07.01.2010 Achim Schumacher: Domain Specific Languages 20

Phase 4: Implementierung Finden der geeigneten Implementierungstechnik Interpretierer (Interpreter) Übersetzer (Compiler) Präprozessor Einbettung Zyklus: Holen, Dekodieren, Ausführen. Flexibel und langsam Übersetzung in existierende Sprache Komplette statische Analyse des DSL-Codes Übersetzung in existierende Sprache Analyse des generierten Codes bei dessen Ausführung Einfügen in bestehende Sprache Definition neuer abstrakter Datentypen,... Einfachste Form: Anwendungsbibliothek 07.01.2010 Achim Schumacher: Domain Specific Languages 21

Phase 4: Implementierung Interpretierer für HTML: Webbrowser Darstellung von Internetseiten oft bevor sie vollständig geladen sind keine Übersetzung Hohe Performance für HTML nicht vorrangig Übersetzer: komplette Analyse und Übersetzung pdflatex: LaTeX Seitenbeschreibungssprache PDF Generierung von Parsern für Sprachen, deren Syntax durch die Backus-Naur-Form definiert wurde 07.01.2010 Achim Schumacher: Domain Specific Languages 22

Phase 5: Einsatz Entwicklung nicht mit Produktion des Code abgeschlossen Erstellung von Trainingsmaterial Kommunikation mit Benutzern Keine Stagnation der Entwicklung Anpassung der Sprache bei veränderten Anforderungen 07.01.2010 Achim Schumacher: Domain Specific Languages 23

Benötigte Expertise zur Entwicklung Domänen- und Sprachentwicklungswissen Erfassung des Wissensgebiets: umfangreiche Aufgabe Implementierung einer Sprache umsetzen können Erfahrung und Hilfe wichtig 07.01.2010 Achim Schumacher: Domain Specific Languages 24

Quellen Mernik, Heering und Sloane, 2005: When and how to develop domain-specific languages DSL-Eigenschaften, Phasenmodell Kastens, 2009: Vorlesung Grundlagen der Programmiersprachen Kontextfreie Grammatiken Kastens, 2008/09: Vorlesung Generating Software from Specifications Domain-Specific Generator (DSL-Übersetzer) 07.01.2010 Achim Schumacher: Domain Specific Languages 25

Quellen Kelly und Pohjonen, 2009: Worst Practices for Domain-Specific Modeling Ziel: Konkreter Ratgeber, Verdeutlichung von praktischen Problemen während der Entwicklung Sehr eingeschränkte Datenbasis (76 Fälle bei 1 Firma mit 1 Werkzeug), unbelegte Thesen, vage Aussagen. Beispiel: Problem (8%): Analyse bis die Sprache theoretisch komplett ist Begründung: Angst beim Entwickeln erster Sprache Problem (4%): Ablehnung fremder Hilfe Begründung: Glauben, dass nur Gurus Sprachen entwickeln 07.01.2010 Achim Schumacher: Domain Specific Languages 26

Zusammenfassung Domänen-spezifische Sprachen, zugeschnitten auf Anwendungsgebiet Entwicklung in Phasen Entscheidung Analyse Design Szenarien, in denen DSL sinnvoll sind Sammlung von Wissen, Erstellung einer Ontologie Beziehung zu anderen Sprachen Bestimmung der Notation (textlich/visuell) Implementierung Umsetzung als Interpretierer, Übersetzer,... Einsatz Vermittlung an Benutzer, Weiterentwicklung Domänen- und Sprachentwicklungswissen 07.01.2010 Achim Schumacher: Domain Specific Languages 27