Projektpräsentation. Referent: Florian Kalisch, Denis Radjenovic

Ähnliche Dokumente
Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum

itemis APPlause Referent: Florian Kalisch, Denis Radjenovic

Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum. Rückblick Themen Erste GUI-Anwendung Praktikum

Modellgetriebene Softwareentwicklung: Zusammenfassung und Ausblick. 7. Februar 2013

Modellgetriebene Softwareentwicklung: Zusammenfassung und Ausblick. 11. Februar 2015

JAVA Oberflächen mit Swing

Modellgetriebene Entwicklung von Pervasive Games

Definition von domänenspezifischen Sprachen mit Xtext: Einführung

JAVA Oberflächen mit Swing

Programmiermethodik. Übung 7

Potentiale modellgetriebener Softwareentwicklung

Komplettes Starterkit für den erfolgreichen Einstieg in die Programmierung

Codegenerierung mit Xtend. 21. Januar 2015

Java GUI Entwicklung mit Swing

Modellgetriebene Softwareentwicklung. Gabriele Taentzer WS 2012/2013 Philipps-Universität Marburg

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Vorlesung Programmieren

Medientechnik. Übung 2 Java Swing

Javakurs für Fortgeschrittene

Automatisierte Architekturanalyse unter Einsatz von UML 2.0 Modellen

MDSD Einführung und Überblick

JLabel. dient zur Textanzeige. können auch Bilder anzeigen: mylabel.seticon( new ImageIcon( C:/Pfad/zum/Bild.jpg )

Eclipse Modeling Framework Modellgetriebene Softwareentwicklung Prof. Andreas Schmidt

Modellgetriebene Entwicklung einer Eclipse RAP-Anwendung unter Verwendung des Eclipse Modeling Frameworks

Swing Lernen am Code Teil 1

Ein Ansatz zum modellgetriebenen Integrationstest von EJB-basierten Informationssystemen

Grafische Benutzeroberflächen

Funktionale und Objekt-Orientierte Programmierkonzepte

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22

Validation und Quick Fixing mit Xtend. 3. Dezember 2014

Eine Testoberfläche Mockup simuliert die Vorgänge Betrag aufladen, Betrag bezahlen und Guthaben abfragen mit einer Geldkarte.

Code Beispiel: /* path element */ var el = rc.path("m l 0-50 l l 0-50 l l 0 50 l l 0 50 z");

Einführung in GUI-Programmierung. javax.swing

Inhaltsverzeichnis Einleitung...1 Die Begleit-CD zu diesem Buch...5 Erweiterungen für Java Ereignisse...15

Modellgetriebene Entwicklung eingebetteter Systeme mit Eclipse

Grafische Benutzeroberflächen

Arbeitsblatt 5 EAD II NetBeans

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Grafische Benutzeroberflächen

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke

GUI Programmierung mit JAVA Swing

Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt WS 2006/2007

Programmieren mit Swing

Ziele. Kapitel 8: Grafische Benutzerschnittstellen. AWT und Swing. Ziele (2)

Modelling in the Wild Domains and Abstraction in Model-Driven Software Development

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen

Java für Computerlinguisten

Einführung in die Programmierung für NF. Übung

Vorlesung Programmieren. Bisher... Apple Lisa Office System 3.1. GUIs mit Java

Universität Paderborn Prof. Dr. Stefan Böttcher. Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek

Objektorientierte Softwareentwicklung

7. GUI Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006

Eclipse Rieh Client Platform

Kapitel 8: Grafische Benutzerschnittstellen

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Einführung in die Modelltransformation mit Xtend

Oliver Brinkmann Java Swing-Applikationen & JApplets (mit NetBeans)

Software Factories WS 2017/18. Prof. Dr. Dirk Müller. 3 Modellgetriebene Softwareentwicklung

Language Workbench. Aktuelle Themen der Softwaretechnologie. Vortrag von: Arthur Rehm Steven Cardoso. Betreut von: Prof. Dr.

MDSD in der Praxis. Dr. Shota Okujava.

Best Practices für flexible und wartbare Codegeneratoren mit openarchitectureware Karsten Thoms Software Architekt

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Modellbasierte OberflächenentwicklungohneOberflächenundVerhaltensmodellierung

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets

Entwicklung von domänenspezifischen Sprachen. 23. Januar 2013

Rückblick. Geltungsbereich von lokalen Variablen? Wo leben lokale Variablen? Geltungsbereich von Instanzvariablen? Wo leben Instanzvariablen?

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Dynamisches EMF und Codegenerierung mit JET. 14. November 2012

DSLs mit Xtext entwerfen , A. Arnold

Generierung von Steuerungsprogrammcode für SPS und μc aus Petri-Netz-Modellen

Teilautomatisierte Migration von Forms- Anwendungen mit Hilfe des Oracle Forms Migration Framework. itemis AG 2010 Alle Rechte vorbehalten

...erinnern Sie sich? oopjs4b / kwhbkd4r

Grundkurs Programmieren in Java

Einführung in Swing. Graphical User Interface

Kurzanleitung Eclipse

Einführung in GUI-Programmierung. javax.swing

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

JavaFX 8: Grundlagen und fortgeschrittene Techniken. Click here if your download doesn"t start automatically

Integration von openarchitectureware in Innovator am Beispiel eines WSDL/XSD Generators für SOA- Plattformen. Nürnberg,

GroupLayout Anmerkung

Model-Driven Software Engineering (HS 2011)

22. Januar Gruppe 2: TOPCASED

Wer ich bin Christoph Knauf

Testen von grafischen Benutzeroberflächen

Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt

Model Driven Architecture

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Java Lab 2006/12/13 Client

Java Design und Event Handling. Natascha Hoebel Professur Prof. R. V. Zicari. AWT SWING Layout Design Event Handling

Graphische Entwicklungsumgebung für eine Echtzeitprogrammiersprache

Swing : Komponeneten I (Teil 1) Was ist Swing?

Modellgetriebene Softwareentwicklung von mobilen Anwendungen. Gabriele Taentzer WS 2014/15 Philipps-Universität Marburg

Transkript:

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

Projektaufgabe und Zielsetzung Zielplattformen Vorgehensweise Metamodell Generatoren Spezialfälle: TableLayout, MouseEvents & Actions Weitere umgesetzte Punkte (Live) Code-Formatter, Validatoren Punkteliste & Zusammenfassung 2 von 30

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 Benutzeroberflächen darf sich nur in den Generatoren unterscheiden! Manuell nachgetragener Code ist tabu! 3 von 30

Java Swing Programmiersprache: Java Verwendete Version: JDK 6 (Swing ist fester Bestandteil der Java-Runtime) Gtk+/gtkmm Programmiersprache: C (Gtk+) / C++ (gtkmm) Verwendete Version: gtkmm Version 2.2.4 4 von 30

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 5 von 30

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)! 6 von 30

Swing Mock-up gktmm 7 von 30

Swing 8 von 30

gtkmm 9 von 30

Swing Mock-up gtkmm 10 von 30

Mock-up 11 von 30

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 12 von 30

13 von 30

14 von 30

15 von 30

16 von 30

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 17 von 30

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 18 von 30

19 von 30

wenn Windowname = PrototypeGUI GeneratorExtensionsGtkmm.xtend GeneratorExtensionsSwing.xtend 20 von 30

21 von 30

Schematische Darstellung top bottom left right 0 1 y x 0 1 2 cellelement x y 2 22 von 30

Beispiel 1: X 0 1 2 0 Edit: Y 1 2 23 von 30

Beispiel 2: X 0 1 2 0 Y 1 2 24 von 30

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 25 von 30

Beispiel 1: ein MouseEvent zwei ActionTypes Beispiel 2: ein MouseEvent ein ActionType 26 von 30

27 von 30

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 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 30 28 von 30

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 29 von 30

Fragen? Anregungen? 30 von 30