Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben...

30
Projektpräsentation Vortrag im Rahmen der Vorlesung Modellgetriebene Softwareentwicklung Dozenten: Prof. Dr. Martin Buchheit & Bernhard Merkle WS 2011/2012 Referent: Florian Kalisch, Denis Radjenovic

Transcript of Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben...

Page 1: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

Projektpräsentation

Vortrag im Rahmen der Vorlesung

Modellgetriebene Softwareentwicklung

Dozenten: Prof. Dr. Martin Buchheit & Bernhard Merkle

WS 2011/2012

Referent: Florian Kalisch, Denis Radjenovic

Page 2: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

2 von 30 MDSD | SS 2011 | 19.01.2012

Projektaufgabe und Zielsetzung

Zielplattformen

Vorgehensweise

Metamodell

Generatoren

Spezialfälle: TableLayout, MouseEvents & Actions

Weitere umgesetzte Punkte (Live)

◦ Code-Formatter, Validatoren

Punkteliste & Zusammenfassung

Page 3: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

3 von 30 MDSD | SS 2011 | 19.01.2012

Projektaufgabe: ◦ Mit Hilfe von Xtext (ab Version 2.x) modellgetrieben

Benutzeroberflächen erstellen

Zielsetzung: ◦ Ein Metamodell

◦ Ein Modell

◦ Generierung von Oberflächen für zwei Plattformen, die genau das exakt gleiche Verhalten aufweisen

◦ Herausforderung: Die Generierung der Benutzer-oberflächen darf sich nur in den Generatoren unter-scheiden! Manuell nachgetragener Code ist tabu!

Page 4: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

4 von 30 MDSD | SS 2011 | 19.01.2012

Gtk+/gtkmm ◦ Programmiersprache: C (Gtk+) / C++ (gtkmm)

◦ Verwendete Version: gtkmm Version 2.2.4

Java Swing ◦ Programmiersprache: Java

◦ Verwendete Version: JDK 6 (Swing ist fester Bestandteil der Java-Runtime)

Page 5: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

5 von 30 MDSD | SS 2011 | 19.01.2012

Schritt 1: Erstellen der Prototypen ◦ dient zum Verständnis für den Aufbau und der

Syntax der Quelltexte beider Plattformen

Schritt 2: Erstellen der Referenzanwendungen ◦ notwendig um Gemeinsamkeiten der Plattformen

und aller zu verwendenden Komponenten festzustellen und daraus eine Domäne zu erstellen

Schritt 1 und 2 sind die Domänenanalyse

Page 6: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

6 von 30 MDSD | SS 2011 | 19.01.2012

Schritt 3: Erstellen des Metamodells (DSL)

Schritt 4: Erstellen der Modelle

Schritt 5: Erstellen der Generatoren

Schritt 6: Weitere „Features“ hinzufügen

◦ z.B. Validatoren oder Beautifier

Wichtig: Schritt 3, 4 und 5 sind iterative Prozesse gewesen (vom Prototyp zur Referenzanwendung)!

Page 7: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

7 von 30 MDSD | SS 2011 | 19.01.2012

gktmm

Swing

Mock-up

Page 8: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

8 von 30 MDSD | SS 2011 | 19.01.2012

Swing

Page 9: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

9 von 30 MDSD | SS 2011 | 19.01.2012

gtkmm

Page 10: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

10 von 30 MDSD | SS 2011 | 19.01.2012

Mock-up

Swing

gtkmm

Page 11: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

11 von 30 MDSD | SS 2011 | 19.01.2012

Mock-up

Page 12: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

12 von 30 MDSD | SS 2011 | 19.01.2012

Java Swing gtkmm

Layout

BoxLayout Gtk::HBox, Gtk::VBox

TableLayout (externe Library) Gtk::Table

Komponenten

JPanel -

JTabbedPane Gtk::Notebook

JButton Gtk::Button

JLabel Gtk::Label

JTextField Gtk::Entry

JCheckBox Gtk::CheckButton

JComboBox Gtk::ComboBoxText, Gtk::ComboBoxEntryText

JTextArea Gtk::TextView

JList diverse Komponenten im Zusammenspiel

Page 13: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

13 von 30 MDSD | SS 2011 | 19.01.2012

Page 14: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

14 von 30 MDSD | SS 2011 | 19.01.2012

Page 15: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

15 von 30 MDSD | SS 2011 | 19.01.2012

Page 16: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

16 von 30 MDSD | SS 2011 | 19.01.2012

Page 17: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

17 von 30 MDSD | SS 2011 | 19.01.2012

Ziel ◦ der generierte Code muss aus Eclipse heraus starten

Feststellung ◦ mit Swing kein Problem da Java (einbinden von

Bibliotheken, z.B. TableLayout ist einfach)

◦ Mit gtkmm ein großes Problem, da die gtkmm Bibliotheken manuell in ein C++ Projekt eingebunden werden müssen -> SEHR AUFWENDIG!

Lösungsmöglichkeiten ◦ Die Projektstruktur wird mitgeneriert -> GESCHEITERT

◦ Manuelles kopieren eines Templateprojekts -> ERFOLG

Page 18: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

18 von 30 MDSD | SS 2011 | 19.01.2012

Pro Plattform ein eigener Generator

jeder Generator besteht aus 3 Files:

◦ GuiDslGenerator<Swing/gtkmm>.xtend

dient zur Sourcecode-Generierung

◦ GeneratorExtensions<Swing/gtkmm>.xtend

enthält kleine wiederkehrende Funktionen, z.B. zur Konvertierung von ENUMS in Sourcecode-Text

◦ GuiDslGenerator<Swing/gtkmm>Util.java

ermöglicht das Speichern und Manipulieren von Werten über die ganze Generierungsphase hinweg

Page 19: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

19 von 30 MDSD | SS 2011 | 19.01.2012

Page 20: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

20 von 30 MDSD | SS 2011 | 19.01.2012

wenn Windowname = „PrototypeGUI“

GeneratorExtensionsGtkmm.xtend

GeneratorExtensionsSwing.xtend

Page 21: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

21 von 30 MDSD | SS 2011 | 19.01.2012

Page 22: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

22 von 30 MDSD | SS 2011 | 19.01.2012

Schematische Darstellung

0 1 2

0

1

2

top

bottom

left right

y

x

x

y

cellelement

Page 23: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

23 von 30 MDSD | SS 2011 | 19.01.2012

Beispiel 1:

0 1 2

0

1

2

X

Y

Edit:

Page 24: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

24 von 30 MDSD | SS 2011 | 19.01.2012

Beispiel 2:

0 1 2

0

1

2

X

Y

Page 25: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

25 von 30 MDSD | SS 2011 | 19.01.2012

Im Moment wird nur der Button unterstützt

Unterteilung in Mouse Event und ActionType

Vorteil: Ein Button kann mehre Mouse Events unterstützen und ein Mouse Event mehrere ActionTypes

Page 26: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

26 von 30 MDSD | SS 2011 | 19.01.2012

Beispiel 1:

◦ ein MouseEvent

◦ zwei ActionTypes

Beispiel 2:

◦ ein MouseEvent

◦ ein ActionType

Page 27: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

27 von 30 MDSD | SS 2011 | 19.01.2012

Page 28: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

28 von 30 MDSD | SS 2011 | 19.01.2012

Aufgaben Punkte

Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30

Erstellen eines Prototyps für beide Plattformen 10

Erstellen eines Referenzmodells 10

Erstellen einer Referenzimplementierung für beide Plattformen 10

Erstellen einer Transformation von Modellen der DSL in eine gewählte Plattform auf Basis von Referenzmodell und -implementierung

30

Erweiterte komplexe GUI-Elemente (TableLayout) 20

Einbinden eines entsprechenden Code-Formatter 5

Generierte GUI direkt aus Eclipse startbar 5

Einbinden von Actions zu GUI-Elementen 20

Implementierung von Validatoren zur Prüfung der statischen Semantik 5

SUMME 145

Page 29: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

29 von 30 MDSD | SS 2011 | 19.01.2012

Die definierten Praktikumsziele wurden erreicht

Xtext und Xtend 2 bieten viele Möglichkeiten und Flexibilität bei der Generierung ◦ Die Weiterentwicklung von Xtext 1.x auf 2.x ist

deutlich spürbar

Vorteil der modellgetriebenen Softwareentwicklung ist deutlich geworden

Durch das Praktikum wurde gutes Grundlagenwissen in Xtext erworben ◦ Vertiefung z.B. in Form einer Thesis möglich

Page 30: Vortrag im Rahmen der Vorlesung Modellgetriebene ...MDSD | SS 2011 | 19.01.2012 28 von 30 Aufgaben Punkte Erstellen einer DSL zur GUI-Modellierung mit XTEXT 2.x 30 Erstellen eines

30 von 30 MDSD | SS 2011 | 19.01.2012

Fragen? Anregungen?