Tech Talk: LOP und DSLs

  • 557 views
Uploaded on

Domänenspezifische Sprachen sind keine Geheimwissenschaft, tatsächlich …

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.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
557
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
8
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Language oriented programming Wie domänenspezifische Sprachen die Produktivität steigern F.Riemenschneider +49-151-173 96 730 falko.riemenschneider@itemis.de © itemis AG 2009 – Alle Rechte vorbehalten 26.01.2010
  • 2. Inhalt  Motivation  Was ist LOP?  Wo sind DSLs sinnvoll?  DSLs mit Xtext und oAW  Demonstration  Zusammenfassung © itemis AG 2009 – Alle Rechte vorbehalten 2
  • 3. Persistente Klassen: nötiger Programmcode Person hat Adressen © itemis AG 2009 – Alle Rechte vorbehalten 3
  • 4. Persistente Klassen: fachlicher Gehalt © itemis AG 2009 – Alle Rechte vorbehalten 4
  • 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 5
  • 6. WSDL und XML-Schema: XML als Sprache? © itemis AG 2009 – Alle Rechte vorbehalten 6
  • 7. WSDL und XML-Schema: fachlicher Gehalt © itemis AG 2009 – Alle Rechte vorbehalten 7
  • 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 8
  • 9. Programmiersprachen und Problemdomänen Schnitt- stellen DSLs Persistenz User Unittests Interface Interpretation oder Übersetzung Turing-berechenbare GPL: Java, C++, C# Probleme © itemis AG 2009 – Alle Rechte vorbehalten 9
  • 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." Quelle: http://fragmental.tw/research-on-dsls/language-oriented-programming-lop/  LOP setzt domänenspezifische Sprachen (DSLs) an lohnenswerten Stellen ein. © itemis AG 2009 – Alle Rechte vorbehalten 10
  • 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 11
  • 12. Wo sind DSLs sinnvoll? User Interface Pageflow Mapping WSDL Geschäftsklassen XML-Schema OR-Mapping Queries © itemis AG 2009 – Alle Rechte vorbehalten 12
  • 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 13
  • 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 14
  • 15. Arbeitsschritte mit Xtext Architekturprototyp bauen Ausdruck in Sprache formulieren Grammatik definieren Auf Zielsprache abbilden Ins Team ausrollen © itemis AG 2009 – Alle Rechte vorbehalten 15
  • 16. Beispiel: User Interface Language Idee: http://martinfowler.com/eaaDev/PresentationModel.html © itemis AG 2009 – Alle Rechte vorbehalten 16
  • 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 17
  • 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 18
  • 19. Grammatik definieren © itemis AG 2009 – Alle Rechte vorbehalten 19
  • 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 20
  • 21. Ausrollen des sprachspezifischen Editors © itemis AG 2009 – Alle Rechte vorbehalten 21
  • 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 22
  • 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 23
  • 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 24
  • 25. Demonstration © itemis AG 2009 – Alle Rechte vorbehalten 25
  • 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 26
  • 27. Vielen Dank für die Aufmerksamkeit Fragen? © itemis AG 2009 – Alle Rechte vorbehalten 27