Tech Talk: LOP und DSLs
-
Upload
ruehmkorf -
Category
Technology
-
view
614 -
download
1
description
Transcript of Tech Talk: LOP und DSLs
26.01.2010© itemis AG 2009 – Alle Rechte vorbehalten
F.Riemenschneider+49-151-173 96 [email protected]
Language oriented programmingWie domänenspezifische Sprachen die Produktivität steigern
© itemis AG 2009 – Alle Rechte vorbehalten 2
Inhalt
Motivation
Was ist LOP?
Wo sind DSLs sinnvoll?
DSLs mit Xtext und oAW
Demonstration
Zusammenfassung
© itemis AG 2009 – Alle Rechte vorbehalten 3
Persistente Klassen: nötiger Programmcode
Person hat Adressen
© itemis AG 2009 – Alle Rechte vorbehalten 4
Persistente Klassen: fachlicher Gehalt
© itemis AG 2009 – Alle Rechte vorbehalten 5
Generalität als Nachteil
Java ist eine General Purpose Language (GPL)
man kann damit alles programmieren, …
aber manches ist umständlich.
Umständlich bedeutet:
schwerer zu verstehen
mühsam zu ändern
viele Fehler möglich
© itemis AG 2009 – Alle Rechte vorbehalten 6
WSDL und XML-Schema: XML als Sprache?
© itemis AG 2009 – Alle Rechte vorbehalten 7
WSDL und XML-Schema: fachlicher Gehalt
© itemis AG 2009 – Alle Rechte vorbehalten 8
Der Wunsch
Problemadäquate, einfache Sprachen.
Vorteile
Lösungen sind schnell formulierbar, …
besser zu verstehen, leichter zu ändern, …
und werden fehlerfrei auf die Zielsprache abgebildet.
© itemis AG 2009 – Alle Rechte vorbehalten 9
Programmiersprachen und Problemdomänen
Turing-berechenbareProblemeGPL: Java, C++, C#
Persistenz
Schnitt-stellen
UserInterface
DSLs
UnittestsInterpretationoder
Übersetzung
© itemis AG 2009 – Alle Rechte vorbehalten 10
Language oriented programming
Eine pragmatische Definition
"[…] a way to develop computer programs by creating a new language or modifying an existing one. The new language created during the process will be extremely problem-focused and efficient at solving the given problem."
LOP setzt domänenspezifische Sprachen (DSLs) an lohnenswerten Stellen ein.
Quelle: http://fragmental.tw/research-on-dsls/language-oriented-programming-lop/
© itemis AG 2009 – Alle Rechte vorbehalten 11
DSLs und Model Driven Software Development
Eine DSL ist ein Weg, fachliche Information in einem Model zu beschreiben.
DSLs können textuell oder graphisch sein.
Aus externen DSLs kann man Code generieren (muss man aber nicht).
© itemis AG 2009 – Alle Rechte vorbehalten 12
Wo sind DSLs sinnvoll?User Interface
Pageflow
Geschäftsklassen
Queries
WSDLXML-Schema
OR-Mapping
Mapping
© itemis AG 2009 – Alle Rechte vorbehalten 13
Warum macht das nicht jeder?
Kaum jemand hat die Idee.
Gute Sprachen erfinden ist nicht einfach.
Die Werkzeuge sind sperrig.
© itemis AG 2009 – Alle Rechte vorbehalten 14
Xtext
Werkzeug für textuelle, externe DSLs.
EBNF ähnliche Grammatik inkl. Editor
In Eclipse integriert
Wizard erzeugt DSL Editor und Generatorprojekt
www.Xtext.org
© itemis AG 2009 – Alle Rechte vorbehalten 15
Arbeitsschritte mit Xtext
Auf Zielspracheabbilden
Grammatikdefinieren
Ausdruck in Spracheformulieren
Architekturprototypbauen
Ins Team ausrollen
© itemis AG 2009 – Alle Rechte vorbehalten 16
Beispiel: User Interface Language
Idee: http://martinfowler.com/eaaDev/PresentationModel.html
© itemis AG 2009 – Alle Rechte vorbehalten 17
Architekturprototyp bauen
Klasse für View programmieren (162 LoC).
Klasse für PresentationModel programmieren (67 LoC).
Testen / Refaktorisieren / Optimieren.
© itemis AG 2009 – Alle Rechte vorbehalten 18
Ausdruck formulieren
form EmployeeDetails (binding(employee:de.itemis.hoa.cleanmvc.samples.bo.Employee)dialog(title:String size[300 150])layout(table columns[gap label fill gap]
rows[gap input input input fill button gap])elements(c("1,1 ") label "First name"c("2,1 ") textfield binding(employee.firstname:String)c("1,2 ") label "Last name"c("2,2 ") textfield binding(employee.lastname:String)c("1,3 ") label "Position"c("2,3 ") textfield binding(employee.position:String)c("1,5,2,5") panel flow right ( button "Add" >ok button "Cancel" >cancel )
))
© itemis AG 2009 – Alle Rechte vorbehalten 19
Grammatik definieren
© itemis AG 2009 – Alle Rechte vorbehalten 20
Auf Zielsprache abbilden
Xtext erzeugt aus "Programm" ein internes Modell, das der Grammatik entspricht.
Modell mit Extent anreichern.
Aus Modell mit Xpand Zielprogramm generieren.
© itemis AG 2009 – Alle Rechte vorbehalten 21
Ausrollen des sprachspezifischen Editors
© itemis AG 2009 – Alle Rechte vorbehalten 22
Produktivitätssteigerung
Weniger Schreibarbeit
Lösung in DSL ist leichter zu lesen
Teures Spezialwissen auf wenige Mitarbeiter beschränkt
Weniger Fehler, höhere Codequalität
Automatische Durchsetzung der Architektur
© itemis AG 2009 – Alle Rechte vorbehalten 23
Erste Schritte (1)
Install Eclipse Galileo, downloaded from http://www.eclipse.org/downloads/
Use Galileo Update Site to add Xtext, Xpand and MWE from the Modeling section.
Add ANTLR using the Xtext Update Site: http://download.itemis.com/updates/milestones
© itemis AG 2009 – Alle Rechte vorbehalten 24
Erste Schritte (2)
New / Other / Xtext Project
Generate Xtext Artifacts by Run As / MWE Workflow on GenerateMyDsl.mwe in .mydsl project
Generate Sample Code by Run As / MWE Workflow on MyDslGenerator.mwe in .generator project
© itemis AG 2009 – Alle Rechte vorbehalten 25
Demonstration
© itemis AG 2009 – Alle Rechte vorbehalten 26
Zusammenfassung
DSLs sind ein mächtiger Hebel.
Freie Werkzeuge sind reif für den Gebrauch durch Jedermann.
Es gibt genügend "Ecken", die den Versuch lohnen.
© itemis AG 2009 – Alle Rechte vorbehalten 27
Vielen Dank für die Aufmerksamkeit
Fragen?