Software Engineering II



Ähnliche Dokumente
Software Engineering II

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

Datenhaltung für Android Model First Christian Ingenhaag, Frederik Götz, Carl Steeg

Internet Explorer Version 6

EMF-GMF-Tutorial: Petrinet

WhiteStarUML Tutorial

Individuelle Erweiterung des generierten Codes. 16. Januar 2013

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Software Engineering Interaktionsdiagramme

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Installation des edu- sharing Plug- Ins für Moodle

ECLIPSE PLUG-IN. Redwood Anwendertage 2015

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Java: Vererbung. Teil 3: super()

Einführung in Javadoc

Software Engineering Klassendiagramme Einführung

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Objektorientierte Programmierung

Arbeiten mit UMLed und Delphi

Inhalt. meliarts. 1. Allgemeine Informationen Administration Aufruf Das Kontextmenü Vorlagen...

Anleitung zur Webservice Entwicklung unter Eclipse

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand Copyright

Innovator Anbindung an openarchitectureware. Connect. Klaus Weber.

Software Engineering Klassendiagramme Assoziationen

Installation und Inbetriebnahme von Microsoft Visual C Express

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Updatehinweise für die Version forma 5.5.5

Übungen zur Softwaretechnik

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Algorithmen und Datenstrukturen

Installationsanleitung

LEHRSTUHL FÜR DATENBANKEN

Diese Anleitung dient der Implementierung von PGP Verschlüsselung in Mozilla Thunderbird.

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Unsere Webapplikation erweitern

State Machine Workflow mit InfoPath Formularen für SharePoint 2010 Teil 6

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Studentische Lösung zum Übungsblatt Nr. 7

[DvBROWSER] Offline-Viewer für [DvARCHIV] und [DvARCHIVpersonal] Version 2.2

SJ OFFICE - Update 3.0

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

Übung: Verwendung von Java-Threads

JBuilderX: Installation und Kurzanleitung (Windows)

License Management SDK

Eclipse Plugins für die komfortablere Verwendung von ibatis SQLMaps

Applets I. Grundlagen der g Applet-Programmierung

GameGrid mit BlueJ Seite 1

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Eclipse 3.0 (Windows)

Code generieren mit Eclipse und oaw HowTo

Startseite von Prinect Remote Access

Große Übung Praktische Informatik 1

1 Vorraussetzungen. 2 Installiere Eclipse. FS 2015 Herausgabe: Dr. A. L. Schüpbach, D. Sidler, Z. István Departement Informatik, ETH Zurich

Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit

Bedienung von BlueJ. Klassenanzeige

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Import Zertifikate ELM

Lösungsvorschlag für Übungsblatt 6 Software Engineering 1 (WS 2012/13)

OP-LOG

Leitfaden zur Nutzung von binder CryptShare

Software-Engineering Grundlagen des Software-Engineering

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Leitfaden zur Installation von Bitbyters.WinShutdown

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

IDA ICE - Konvertieren und Importieren von mit TRY_Effekte_aufpraegen.exe erzeugten Datensätzen

Step by Step Remotedesktopfreigabe unter Windows Server von Christian Bartl

Python SVN-Revision 12

25 Import der Beispiele

Programmieren in Java

WebService in Java SE und EE

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Installation von MailON2!

Anleitung Typo3-Extension - Raumbuchungssystem

Outlook 2010 Daten importieren und exportieren

AristaFlow BPM Suit Installation

Hex Datei mit Atmel Studio 6 erstellen

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

Innovator 11 classix. Java Reverse Engineering. HowTo. Ralph Schönleber.

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Installationshinweise BEFU 2014

Installation des edu-sharing Plug-Ins für Moodle

Howto. Einrichten des TREX Monitoring mit SAP Solution Manager Diagnostics

Objektorientierte Programmierung. Kapitel 12: Interfaces

Programmierung für Mathematik (HS13)

Qt-Projekte mit Visual Studio 2005

Software Engineering Klassendiagramme weiterführende Konzepte

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

ID VisitControl. Dokumentation Administration Equitania Software GmbH cmc Gruppe Seite 1

Verschlüsseln von USB-Sticks durch Installation und Einrichtung von TrueCrypt

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Transkript:

Software Engineering II Codegenerierung für den SmartIO Editor mit der Modeling Workflow Engine Wintersemester 10/111 Fachgebiet Software Engineering Albert Zündorf /

Wiederholung Bisher im Laufe des Semesters umgesetzt: Modellierung eines Meta-Modells für die Hausautomatisierung mit Fujaba Generierung von EMF Quelltext aus dem Fujaba Klassendiagramm Generieren eines Editor und eines Edit Eclipse Plugins für das EMF Modell (baumartiger Editor) Anfügen von Annotation an des Klassendiagramm und automatische Generierung des grafischen Editors aus diesen Annotationen mit Hilfe von Eugenia Implementierung von Refactoring Operationen mittels Fujaba Storydiagrammen. Modellieren der Operationen Generieren von Quelltext Einbinden der Operationen als PopupActions in den grafischen Editor Implementierung einer einfachen Interpreterlogik für den grafischen Editor Custom Figures zur weiteren Verfeinerung der grafischen Darstellung des Editors 2

Nächstes Ziel Per Rechtsklick auf den Hintergrund des Diagramms Java Quelltext aus dem Diagramm generieren Verwendung der MWE Engine zur Codegenerierung Verfassen von Templates und Workflow files Implementierung einer Action in Fujaba, die die Codegenerierung aus dem grafischen Editor heraus aufruft. 3

Installation der MWE Plugins ins Eclipse Von der Helios Update Site installieren (falls noch nicht in eurem Eclipse vorhanden): MWE 2 language SDK MWE 2 runtime SDK MWE SDK Xpand SDK 4

SmartIO Projekt auf die Codegenerierung vorbereiten Herunterladen von CodeGenClasses.ctr aus dem Blog Enthält notwendige Klassen aus dem MWE Framework als Referenz Hinzufügen der CodeGenClasses.ctr in euer Eclipse Projekt CodeGenClasses.ctr als Abhängigkeit in eurer SmartIO.ctr angeben Genau wie bei JavaClasses und EclipseClasses In die Manifest.MF zu den Plugin Dependencies hinzufügen: org.eclipse.emf.mwe.core 5

Action für die Codegenerierung anlegen Im Klassendiagramm in euerem Action package eine neue Klasse für die Codegenerierung anlegen Erbt von TransactionActionDelegate runimpl implementieren Action soll auf dem kompletten Diagramm aufgerufen werden, wird also als Contribution für das Board angelegt. 6

Implementierungsdetails runimpl 1. Board aus der IStructuredSelection holen (wie gehabt) 2. StatementActivity für das Setzen notwendiger MWE Parameter: //define parameters for MWE String resourceuri = #namedesboardobjektes.eresource().geturi().toplatformstring(false); String pathuri = resourceuri.subsequence(0, resourceuri.lastindexof('/')).tostring(); String filestring = ResourcesPlugin.getWorkspace().getRoot().getLocation().toString() + pathuri; System.out.println("Zielpfad: " + filestring); Map<String,String> properties = new HashMap<String,String>(); Map slotcontents = new HashMap(); slotcontents.put("model", #namedesboardobjektes); properties.put("srcgenpath", filestring); final String WORKFLOW_FILE = #namedesworkflowfiles"; 7

Implementierungsdetails runimpl 3. Neues NullProgressMonitor Objekt anlegen Klasse kommt aus CodeGenClasses.ctr 4. Neues WorkflowRunner Objekt anlegen Klasse kommt aus CodeGenClasses.ctr 5. Auf dem WorkflowRunner mittels CollaborationStatement aufrufen run(workflow_file, monitor, properties, slotcontents) 8

Optional Folders refreshen //// refresh folder IResource tmpfile = ResourcesPlugin.getWorkspace().getRoot().findMember(pathUri); if (tmpfile == null) return; try { tmpfile.refreshlocal(iresource.depth_infinite, null); } catch (CoreException e) { e.printstacktrace(); } Genaues Beispiel meiner GenerateCodeAction im Blog als PDF downloadbar!!! 9

Edit Imports Klassen aus den Statement Activities müssen per Hand in die GenerateCodeAction importiert werden Klasse im Klassendiagramm selektieren Rechtsklick -> Edit Imports java.util.map java.util.hashmap org.eclipse.core.resources.resourcesplugin org.eclipse.core.resources.iresource org.eclipse.core.runtime.coreexception Falls auf linker Seite nicht bereits vorhanden über new -> Auswahl Class hinzufügen und auf die rechte Seite des Dialogs übernehmen. Projekt speichern. 10

Workflow file anlegen In den src Ordner eures Projektes eine Workflow Datei anlegen: Rechtsklick -> New -> Other -> Modeling Workflow Engine -> Workflow File Gleichen Namen verwenden wie in der Statement Activity eurer GenerateCodeAction, sonst wird die Datei nicht gefunden. 11

Inhalt der Workflow Datei <?xml version="1.0"?> <workflow> <component id="generator" class="org.eclipse.xpand2.generator" skiponerrors="true"> <fileencoding value="iso-8859-1"/> <metamodel id="mm" class="org.eclipse.xtend.typesystem.emf.emfmetamodel"> <metamodelpackage value="#vollqualifizierter Name eurer Package Klasse"/> </metamodel> <outlet path="${srcgenpath}"> </outlet> <postprocessor class="org.eclipse.xpand2.output.javabeautifier"/> <!--protected regions configuration --> <prsrcpaths value="${srcgenpath}"/> Wert wird in Statement Activity gesetzt <prdefaultexcludes value="false"/> <expand value="smartiomain::main FOR model"/> </component> Name der Template Datei ist SmartIOMain, Name des Templates darin ist main </workflow> 12

Template Datei anlegen Im src Ordner eures Projektes: New -> Other -> Xpand -> Xpand Template Name muss dem im Workflow file angegebenen entsprechen Importieren eures Meta Modells ins Template «IMPORT de::unikassel::se::smartio::model» Zugriff auf die Elemente des Meta Modells über Code Completion möglich «DEFINE main FOR model::board» Genaue Syntax und Verwendung der Xpand language unter: http://www.openarchitectureware.org/pub/documentation/4.3.1/html/contents/core_ reference.html#xpand_reference_introduction 13

Aus Template zu generierender Code Eine Java Klasse pro Board main Methode in Java Klasse init ()Methode die aus main aufgerufen wird und die Struktur des Boardes, wie in Diagramm spezifiziert anlegt Alle Objekte anlegen (EMF Objekte, nicht mit new, sondern über die Factory anlegen) Alle Links ziehen Alle Attribute setzen Eine public void toggleswitch(switch switch) Kann über edobs aufgerufen werden. Toggelt einen Switch on/off und liefert die entsprechenden Nachrichten aus. (Nachrichten müssen natürlich erst erstellt werden) Eine public void delivermessage(channel channel) Kann über edobs aufgerufen werden. Liefert die im Channel befindlichen Nachrichten an alle angrenzenden Komponenten aus. 14

Fertigstellung Action Code wie gewohnt aus Fujaba generieren Action in der Manifest.MF eintragen Plugin starten und testen Code wird im Runtime Eclipse in das gleiche Projekt generiert, in welchem auch die Diagrammdatei liegt. TIPP: Beim Codegenerieren ist es immer sinnvoll, sich den Quelltext, der herauskommen soll einmal per Hand zu schreiben und anschließend nur die dynamischen Teile im Template auszutauschen 15