27
26.01.2010 © itemis AG 2009 – Alle Rechte vorbehalten F.Riemenschneider +49-151-173 96 730 [email protected] Language oriented programming Wie domänenspezifische Sprachen die Produktivität steigern

Tech Talk: LOP und DSLs

Embed Size (px)

DESCRIPTION

Domänenspezifische Sprachen sind keine Geheimwissenschaft, tatsächlich begleiten sie Java Entwickler schon seit geraumer Zeit, z.B. in Form von JPA-QL, XSLT oder Regular Expressions. Mit Werkzeugen wie Xtext, ANTLR, MGrammar oder MPS lassen sich heute in wenigen Stunden eigene, externe DSLs erstellen. Der Vortrag zeigt Anwendungsgebiete in typischen Java Enterprise Systemen und demonstriert den Einstieg mit Xtext.

Citation preview

Page 1: 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

Page 2: Tech Talk: LOP und DSLs

© itemis AG 2009 – Alle Rechte vorbehalten 2

Inhalt

Motivation

Was ist LOP?

Wo sind DSLs sinnvoll?

DSLs mit Xtext und oAW

Demonstration

Zusammenfassung

Page 3: Tech Talk: LOP und DSLs

© itemis AG 2009 – Alle Rechte vorbehalten 3

Persistente Klassen: nötiger Programmcode

Person hat Adressen

Page 4: Tech Talk: LOP und DSLs

© itemis AG 2009 – Alle Rechte vorbehalten 4

Persistente Klassen: fachlicher Gehalt

Page 5: Tech Talk: LOP und DSLs

© 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

Page 6: Tech Talk: LOP und DSLs

© itemis AG 2009 – Alle Rechte vorbehalten 6

WSDL und XML-Schema: XML als Sprache?

Page 7: Tech Talk: LOP und DSLs

© itemis AG 2009 – Alle Rechte vorbehalten 7

WSDL und XML-Schema: fachlicher Gehalt

Page 8: Tech Talk: LOP und DSLs

© 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.

Page 9: Tech Talk: LOP und DSLs

© itemis AG 2009 – Alle Rechte vorbehalten 9

Programmiersprachen und Problemdomänen

Turing-berechenbareProblemeGPL: Java, C++, C#

Persistenz

Schnitt-stellen

UserInterface

DSLs

UnittestsInterpretationoder

Übersetzung

Page 10: Tech Talk: LOP und DSLs

© 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/

Page 11: Tech Talk: LOP und DSLs

© 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).

Page 12: Tech Talk: LOP und DSLs

© itemis AG 2009 – Alle Rechte vorbehalten 12

Wo sind DSLs sinnvoll?User Interface

Pageflow

Geschäftsklassen

Queries

WSDLXML-Schema

OR-Mapping

Mapping

Page 13: Tech Talk: LOP und DSLs

© 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.

Page 14: Tech Talk: LOP und DSLs

© 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

Page 15: Tech Talk: LOP und DSLs

© itemis AG 2009 – Alle Rechte vorbehalten 15

Arbeitsschritte mit Xtext

Auf Zielspracheabbilden

Grammatikdefinieren

Ausdruck in Spracheformulieren

Architekturprototypbauen

Ins Team ausrollen

Page 16: Tech Talk: LOP und DSLs

© itemis AG 2009 – Alle Rechte vorbehalten 16

Beispiel: User Interface Language

Idee: http://martinfowler.com/eaaDev/PresentationModel.html

Page 17: Tech Talk: LOP und DSLs

© 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.

Page 18: Tech Talk: LOP und DSLs

© 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 )

))

Page 19: Tech Talk: LOP und DSLs

© itemis AG 2009 – Alle Rechte vorbehalten 19

Grammatik definieren

Page 20: Tech Talk: LOP und DSLs

© 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.

Page 21: Tech Talk: LOP und DSLs

© itemis AG 2009 – Alle Rechte vorbehalten 21

Ausrollen des sprachspezifischen Editors

Page 22: Tech Talk: LOP und DSLs

© 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

Page 23: Tech Talk: LOP und DSLs

© 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

Page 24: Tech Talk: LOP und DSLs

© 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

Page 25: Tech Talk: LOP und DSLs

© itemis AG 2009 – Alle Rechte vorbehalten 25

Demonstration

Page 26: Tech Talk: LOP und DSLs

© 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.

Page 27: Tech Talk: LOP und DSLs

© itemis AG 2009 – Alle Rechte vorbehalten 27

Vielen Dank für die Aufmerksamkeit

Fragen?