Language Workbench

509 Aufrufe

Veröffentlicht am

Language Workbenches sind Tools zur effizienten Erstellung von externen domänenspezifische Sprache.

Seminar: Aktuelle Themen der Softwaretechnologie
von Prof. Dr. Christoph Reichenbach

an der Goethe-Universität Frankfurt am Main

Veröffentlicht in: Bildung
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
509
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
4
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Language Workbench

  1. 1. Language Workbench ! Aktuelle Themen der Softwaretechnologie Vortrag von: Arthur Rehm Steven Cardoso Betreut von: Prof. Dr. Reichenbach [1]
  2. 2. !2 Index Kontext Domain Specific Language (DSL) Language Workbench (LW) MPS Spoofax Xtext Auswertung und Vergleich Fazit und Ausblick
  3. 3. !3 Kontext Spezifikation Synthese Implementierung Was Wie Verifizierung sehr teuer (Komplexitätstheorie)
  4. 4. !4 Kontext Spezifikation Implementierung Synthese Was DSL Verifizierung Wie
  5. 5. !5 Einleitung GPLs: Allzweckwerkzeuge [3]
  6. 6. !6 Einleitung DSLs: Ein Werkzeug für einen Task [4]
  7. 7. !7 DSL • Domain Specific Language • Auf eine „Domäne“ zugeschnitten • Hohe Abstraktion • Wunsch: Soll von Domänenexperten (nichtProgrammierern) verwendet werden • z.B. mittels einfacher Syntax
  8. 8. !8 DSL konkreter Syntax! - Repräsentation des abstrakten Syntax abstrakter Syntax! - interne Darstellung der Syntax für weitere Prozesse - z.B. Anwendung von Generatoren auf den AST
  9. 9. !9 DSL Interne DSL! - Vollwertige IDE bereits vorhanden - An Syntax des Hosts gebunden - „Laien“ können durch Funktionsumfang „erschlagen“ werden Externe DSL! - Syntax frei wählbar, an „Laien“ anpassbar - Jedoch: - keine IDE - keine Interpreter usw.
  10. 10. !10 DSL Vorteile! - Effizient - wenn gut umgesetzt - Steile Lernkurve - Reduktion von Kommunikationsaufwänden Nachteile! - Entwicklungsaufwand: ‣ Konzeption (Schema) ‣ Parser, Interpreter, etc. (Generator) ‣ Komfortable Entwicklungsumgebung (Editor) ➡ Language Workbench
  11. 11. !11 Language Workbench Martin Fowler • Tool Sammlung zum Definieren und Erweitern von Sprachen • IDE für externe DSLs
  12. 12. !12 Language Workbench • Syntax • Semantik • Editor
  13. 13. !13 Language Workbench Syntax Text Grammatik Semantik Grafik Diagramme Editor Tabular Tabellen / Zellen
  14. 14. !14 Language Workbench Syntax Semantik Editor Translation Model zu Text Model zu Model
  15. 15. !15 Language Workbench Syntax Semantik Editor Editor Mode Syntax Service Frei-Text Projektional Highlighting Folding Completion Diff Semantik Service Referenzen auflösen Semantic completion Refactoring Error Marking Legende obligatorisch optional
  16. 16. !16 Language Workbench Challenge • Wettbewerb, um aktuelle Language Workbenches (LW) untereinander zu vergleichen • Seit 2011 wird jedes Jahr eine Aufgabe gestellt, die mit einem LW zu lösen ist.
  17. 17. !17 Language Workbench Challenge LWC - 2013: DSL für Formulare
  18. 18. !18 LW Vergleich • Ziel: Simple DSL zum definieren von Formularen • Eingabefelder • Radiobuttons • Checkboxes • Transformation zu HTML
  19. 19. !19 MPS Meta Programming System • Projektionale Editoren • MPS arbeitet direkt am Abstrakten Syntaxbaum
  20. 20. !20 MPS Idee hinter projektionalen Editoren ! • [2] Jeder Node im AST ist eine Projektion im MPS Editor
  21. 21. !21 MPS Workflow: DSLs in MPS 1. Structure • Concept (Model) 2. Editor 3. Generator • Model-zu-Model (M2M) • Model-zu-Text (M2T)
  22. 22. !22 MPS structure editor generator
  23. 23. !23 MPS structure editor generator
  24. 24. !24 MPS structure editor generator
  25. 25. !25 MPS structure editor generator
  26. 26. !26 MPS Poll DSL in Action
  27. 27. !27 MPS Poll DSL Ergebnis M2T
  28. 28. !28 MPS: Anwendung mbeddr • LW auf Basis MPS für Embedded Systems • C Erweiterungen + eigene Erweiterungen
  29. 29. !29 Spoofax • IDE auf Eclipse Basis • Dateien auf Textbasis • Stratego als mächtiges Werkzeug (Analyse, Transformation und Generierung von Code) • Strategien und dynamische Regeln • Konkrete und abstrakte Syntax kombiniert • Sprachen können kombiniert werden
  30. 30. !30 Spoofax Grammatik in SDF definieren
  31. 31. !31 Spoofax Eclipse als Editor
  32. 32. !32 Spoofax Transformationen in Stratego definieren
  33. 33. !33 Spoofax • Implementierbare IDE Features • Code folding, Outline view • Syntax highlighting • Code completion • Error checking und Tests • Refactoring (rename, extract, usw.)
  34. 34. !34 Xtext • IDE auf Eclipse Basis • EMF Metamodell und konkrete Syntax in einer Grammatik • Transformationen mit Kontrollstrukturen • Generiert Java-Klassen aus Grammatik
  35. 35. !35 Xtext Grammatik in Xtext definieren
  36. 36. !36 Xtext Editor starten
  37. 37. !37 Xtext Eigenständiges Eclipse
  38. 38. !38 Xtext Transformationen in Xtend definieren
  39. 39. !39 Xtext • Steile Lernkuve für Java-Entwickler • • • Weniger formale schreibweise Viel Java(-ähnlicher) Code —> lesbarer Auch hier: viele IDE Features implementiert
  40. 40. !40 Vergleich LW • MPS • Spoofax • Xtext
  41. 41. !41 Auswertung • MPS • • projektionale LW Spoofax • Stratego als Base Language für verschiedene Tasks • Wissenschaftlicher Hintergrund ➡ • Gut durchdachte Konzepte Xtext • Eigenständige IDE zum Arbeiten • Sehr ausgereift
  42. 42. !42 Fazit • Language Workbenches sind ein mächtiges Entwicklungswerkzeug • Für wiederkehrende und sicherheitskritische Aufgaben • Mit LW lassen sich Domain Sprachen effizient entwerfen und erweitern
  43. 43. !43 Ausblick • Language Workbenches werden in Zukunft häufiger eingesetzt • Große Chance - die Kommunikation zwischen Entwicklern und Domain Experten zu verbessern!
  44. 44. Bildquellen: • [1] http://www.istockphoto.com/stock-photo-6864190-old-workbench.php?st=cd622ef • [2] http://www.voelter.de/data/presentations/DSLDesign-Models2013.pdf • [3] http://www.istockphoto.com/stock-photo-9153291-multipurpose-knife-isolated.php?st=1484c3a • [4] Rainer Sturm / pixelio.de • [5] http://www.projectcartoon.com

×