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