Uebung - Software Engineering Research Group Kassel

Download Report

Transcript Uebung - Software Engineering Research Group Kassel

Software Engineering 2 Übung –
Konstruktion interaktiver (CASE) Tools
SS 2007
Leif Geiger, Carsten Reckord, Software Engineering
Meta Modell

Download Fujaba
http://www.se.eecs.uni-kassel.de/se/fileadmin/se/courses/SE207/Fujaba%205.zip

Meta Modell des Petri-Netz Tools erstellen

Packagenamen vergeben!

Compositions verwenden, wo sinnvoll!
SS 2007
Software Engineering 2
Leif Geiger, Carsten Reckord, University of Kassel
2
Codegenerierung

Eclipse 3.2 downloaden
http://www.eclipse.org/

EMF und GMF installieren über Help  Software Updates  Find and
Install

Java Projekt anlegen

In Fujaba den Codestyle des Root Packages auf EMF stellen (mit dem
Property Editor)

Das Output Directory des Fujaba Projekts auf ein Verzeichnis im
Eclipse Projekt stellen

Code generieren
SS 2007
Software Engineering 2
Leif Geiger, Carsten Reckord, University of Kassel
3
Codegenerierung Teil 2

In generated/model das ecore File auswählen

Über New  Other ein EMF Model anlegen

Im genmodel File das Model Directory anpassen

Auf dem genmodel File das Model generieren

features.jar, utils.jar und RuntimeTools.jar aus dem Fujaba/libs
Verzeichnis als Bibliotheken hinzufügen

Fertig!
SS 2007
Software Engineering 2
Leif Geiger, Carsten Reckord, University of Kassel
4
Editor generieren

Auf dem genmodel File den Edit Code und den Editor Code generieren

Eclipse Runtime Workspace starten

Ein Projekt anlegen

Im Projekt über New  Other  Example EMF Model Creation Wizard
ein neues Modell anlegen

Beispiel Petrinetz anlegen
SS 2007
Software Engineering 2
Leif Geiger, Carsten Reckord, University of Kassel
5
Actions in Eclipse

Plugin.xml um org.eclipse.ui erweitern

Erben von IActionDelegate, selection merken

Methode run(IAction) überschreiben

Extensionpoint z.B. org.eclipse.ui.popupMenus erweitern

Siehe Beispielprojekt
SS 2007
Software Engineering 2
Leif Geiger, Carsten Reckord, University of Kassel
6
Persistenz

XMI Import / Export
 org.eclipse.emf.ecore.xmi in plugin.xml hinzufügen
 Mit Fujaba
 An Beispiel Petrinetz ausprobieren
 Versuchen XMI vom Editor zu laden

CoObRA
 Mit Fujaba
 EMF Erweiterungen in coobra2_emf_1.0.0.jar und
emfbindings_1.0.0.jar
 Laden / Speichern
 Mit Server
 Undo / Redo
 Siehe
http://www.se.eecs.uni-kassel.de/~fujabawiki/index.php/CoObRA2_developer_guide
SS 2007
Software Engineering 2
Leif Geiger, Carsten Reckord, University of Kassel
7
XMI Speichern
// Create a resource set.
ResourceSet resourceSet = new ResourceSetImpl();
// Get the URI of the model file.
URI fileURI = URI.createFileURI(new File(„petri.xmi").getAbsolutePath());
// Create a resource for this file.
Resource resource = resourceSet.createResource(fileURI);
// Add the book and writer objects to the contents.
resource.getContents().add(net);
// Save the contents of the resource to the file system.
try
{
resource.save(Collections.EMPTY_MAP);
}
catch (IOException e) {}
SS 2007
Software Engineering 2
Leif Geiger, Carsten Reckord, University of Kassel
8
XMI Laden
// Create a resource set.
ResourceSet resourceSet = new ResourceSetImpl();
// Get the URI of the model file.
URI fileURI = URI.createFileURI(new File(„petri.xmi").getAbsolutePath());
// Demand load the resource for this file.
Resource resource = resourceSet.getResource(fileURI, true);
// Print the contents of the resource to System.out.
try
{
resource.save(System.out, Collections.EMPTY_MAP);
}
catch (IOException e) {}
SS 2007
Software Engineering 2
Leif Geiger, Carsten Reckord, University of Kassel
9
CoObRA Speichern
public void storeRepository( final Repository repository, File file )
{
// create copy-repository
Repository copyRepository = new Repository();
// set new PersistencyModule
copyRepository.setPersistencyModule( new FilePersistencyModule( file ) );
copyRepository.getPersistencyModule().open( false );
// set the old repository's IdentifierModule
copyRepository.setIdentifierModule( repository.getIdentifierModule() );
// copy changes
TransactionEntry entry = repository.getPersistencyModule().receiveFirst();
while( entry != null )
{
boolean autoResolving = entry.isAutoResolving();
entry.setAutoResolving( false );
copyRepository.acknowledgeUpdate( entry );
entry.setAutoResolving( autoResolving );
entry = repository.getPersistencyModule().receiveNext( entry );
}
// close repository
copyRepository.getPersistencyModule().close();
}
SS 2007
Software Engineering 2
Leif Geiger, Carsten Reckord, University of Kassel
10
eDOBS

eDOBS Plugin installieren über update site
http://www.se.eecs.uni-kassel.de/se/fileadmin/se/projects/eDOBS/update/

im Test-Eclipse
 im XMI Editor ein Element auswählen
 Browse in eDOBS in der Toolbar wählen
 Expand Object auf dem Objekt ausführen

eDOBS Aktion bauen
 eDOBS_core plugin einbinden
 Dobs.get().browseObject(net);
SS 2007
Software Engineering 2
Leif Geiger, Carsten Reckord, University of Kassel
11
GMF

GEF machen wir erstmal nicht, vielleicht später
 Wer‘s genauer wissen will:
http://eclipsewiki.editme.com/GefDescription
http://publib-b.boulder.ibm.com/Redbooks.nsf/RedbookAbstracts/sg246302.html?OpenDocument
http://www.eclipse.org/gef/reference/articles.html

GMF: Per Wizard oder von Hand
Wir machen das mal von Hand

Erstmal Places, Transitions und Arcs:
1.
Graphical Definition Model: Figures und Nodes
2.
Tooling Definition
3.
Mapping Model
4.
Generation Model aus Mapping Model
5.
Code generieren, fertig…
SS 2007
Software Engineering 2
Leif Geiger, Carsten Reckord, University of Kassel
12
Figures

File->New->GMFGraph

Im model-Verzeichnis
neben ecore-File
SS 2007
Software Engineering 2
Leif Geiger, Carsten Reckord, University of Kassel
13
Tools

File->New->GMFTool

Im model-Verzeichnis
neben ecore-File …
SS 2007
Software Engineering 2
Leif Geiger, Carsten Reckord, University of Kassel
14
Mapping

File->New->GMFMap
…

Canvas->PetriNet

Top Node References
für alles, was direkt auf
dem Canvas liegt
 Containment feature
ist die Modellkante zum Element
 Child: Node Mapping für Klasse<->Node…

Am Ende Rechtsklick auf Mapping Model -> Create Generator
Model
 Typ: Gen Diagram
 .gmfgen Datei: Rechtsklick -> Generate Diagram code
SS 2007
Software Engineering 2
Leif Geiger, Carsten Reckord, University of Kassel
15