• Keine Ergebnisse gefunden

Hauptziel dieser Diplomarbeit war es, das bisherige GraLab als Java-Klassenbibliothek JGraLab neu zu entwickeln und dabei insbesondere einen Fokus auf eine objektorien-tiertere Sicht zu legen. Diese Anforderung konnte eindeutig erf¨ullt werden. Die Erstel-lung der objektorientierten Zugriffsschicht nahm den gr¨oßten und komplexesten Teil dieser Arbeit ein, das Resultat kann die meisten OOAccess-relevanten Punkte der An-forderungsliste erf¨ullen und auch teilweise sogar ¨ubertreffen.

Als Einf¨uhrung in die Verwendung von JGraLab hat man die M¨oglichkeit, sowohl die-se Diplomarbeit (insbesondere das Beispiel des Kapitels 5) als auch die Spezifikation der Java-Methoden (zu finden auf der beiliegenden CD als JavaDoc-generierte HTML-Seiten) zur Rate zu ziehen.

Das im Entwurfs-Kapitel erstellte JGraLab-Metamodell kann als wohldefinierte Basis f¨ur weitere Entwicklungen dienen. Durch seine Anlehnung an GXL, Ecore und MOF werden nicht nur aktuelle Entwicklungen aus der Softwaretechnik beachtet, es bietet zus¨atzlich demjenigen, welcher bereits mit diesen Sprachen gearbeitet hat, einen einfa-chen Einstieg in das Verst¨andnis von JGraLab.

Des Weiteren wurde die Erstellung eines neuen Dateiformats notwendig, da das bishe-rige .G-Dateiformat nicht ausreichte, um alle Funktionalit¨aten des neuen JGraLab zu realisieren. Bei dieser Gelegenheit konnte das neue .TG-Format nach einer Analyse von .G und .TED grundlegend neu konzipiert werden. Dies hatte zum Vorteil, dass vor al-lem die Lesbarkeit und damit das Verst¨andnis des neuen Formats gegen¨uber .G deutlich verbessert werden konnten.

Die Realisierung der internen Performanz-bestimmenden Struktur von Graphen kann nun wahlweise durch den Anwender festgelegt werden. Es stehen ihm zwei M¨oglich-keiten zur Auswahl: Einerseits die auch im C/C++-Gralab verwendeten internen Inzi-denzfelder und andererseits eine vollst¨andig objektorientierte Implementierung. Beide M¨oglichkeiten bieten Vor- und Nachteile, welche vor allem bei extrem großen Graphen (mehrere Millionen Elemente) an Bedeutung gewinnen.

Durch die eigene Exception-Hierarchie und das optionale Checking mittels Assertions k¨onnen Fehler im eigenen Programm einfach identifiziert werden. Die Ausf¨uhrungs-geschwindigkeit der Ein- und Ausgabemethoden konnte mittels mehrerer Tricks stark beschleunigt werden, so dass diese trotz ihres enormen Funktions-Overheads ihre Auf-gabe schnell erledigen k¨onnen.

Erkl¨arung

Ich versichere, dass ich die vorliegende Arbeit selbstst¨andig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt habe.

Mit der Einstellung dieser Arbeit in die Bibliothek bin ich einverstanden. Der Ver¨offentlichung dieser Arbeit im Internet stimme ich nicht zu.

Steffen Kahle

Literaturverzeichnis

[AhSeUl86] Aho, A.; Sethi, R.; Ullman, J.: Compilers - Principles, Techniques, and Tools, Addison-Wesley, 1986

[BaGra05] Bacvanski, V.; Graff, P. (2005): Mastering Eclipse Modeling Frame-work. EclipseCon 2005, Burlingame

http://www.eclipsecon.org/2005/presentations/

EclipseCon2005_Tutorial28.pdf, letzter Zugriff: 17.11.2005 [DaKaMo98] Dahm, P.; Kamp, M.; Moskopp, F.: Das Schemamodul - Dokumentati-on, Projektbericht 1/98 im Projekt GUPRO, Institut f¨ur Softwaretechnik, Informatik, Fachbereich 4, Universit¨at Koblenz-Landau, August 1998 [DaWi03] Dahm, P.; Widmann, F.: Das Graphenlabor - Benutzungshandbuch,

Ver-sion 4.3.0, Universit¨at Koblenz-Landau, Juli 2003

http://www.uni-koblenz.de/˜ems/GraLab4/, letzter Zu-griff: 04.01.2006

[Eb03] Ebert, J.: GraLab, AG Ebert, Institut f¨ur Softwaretechnik, Informatik, Fachbereich 4, Universit¨at Koblenz-Landau, Oktober 2003

http://www.uni-koblenz.de/FB4/Institutes/IST/

AGEbert/Main%20Research/GraphTechnology/GraLab/, letzter Zugriff: 09.05.2006

[Eb03-2] Ebert, J.: Graph Technology, AG Ebert, Institut f¨ur Softwaretechnik, In-formatik, Fachbereich 4, Universit¨at Koblenz-Landau, Oktober 2003 http://www.uni-koblenz.de/FB4/Institutes/IST/

AGEbert/Main%20Research/GraphTechnology, letzter Zugriff: 22.05.2006

[Eb81] Ebert, J.: Effiziente Graphenalgorithmen, Akademische Verlagsgesell-schaft, 1981

[EbKu02] Ebert, J.; Kullbach, B.; Riediger, V.; Winter, A.: General Understanding of PROgrams, Institut f¨ur Softwaretechnik, Informatik, Fachbereich 4, Universit¨at Koblenz-Landau, 2002

http://www.uni-koblenz.de/FB4/Contrib/

GUPRO/Downloads/Publications/PDF/Documents/

Ebert02Generic.pdf, letzter Zugriff: 20.03.2006

[Ecl05] Eclipse Foundation Inc.: Eclipse Modeling Framework, EMF Overview, Juni 2005

http://www.eclipse.org/emf/, letzter Zugriff: 09.03.2006 [Gali04] Galileo Press GmbH: Der Sun-Compiler, Galileo Computing: Java ist

auch eine Insel, 3. Auflage, 2004

http://www.galileocomputing.de/openbook/

javainsel3/javainsel_080005.htm, letzter Zugriff:

08.02.2006

[Gali05] Galileo Press GmbH: Base64-Kodierung, Galileo Computing: Java ist auch eine Insel, 5. Auflage, 2005

http://www.galileocomputing.de/openbook/

javainsel5/javainsel04_005.htm, letzter Zugriff:

02.05.2006

[GeRa03] Gerber, A.; Raymond, K. (2003): MOF to EMF - There and Back Again.

In: Burke, M.G. (Hrsg.): Proceedings of the 2003 OOPSLA Workshop on Eclipse Technology eXchange, Oktober 2003, Anaheim

http://www.dstc.edu.au/Research/

Projects/Pegamento/publications/

MOF-to-EMF-There-and-Back-Again.pdf, letzter Zugriff:

17.11.2005

[HoSc02-1] Holt, R.; Sch¨urr, A.; Sim S.; Winter, A.: Graph eXchange Language, Abstract, Version 1.0, Juli 2002

http://www.gupro.de/GXL/Introduction/intro.html, letzter Zugriff: 05.12.2005

[HoSc02-2] Holt, R.; Sch¨urr, A.; Sim S.; Winter, A.: Graph eXchange Language, Metaschema, Version 1.0, Juli 2002

http://www.gupro.de/GXL/MetaSchema/metaSchema.

html, letzter Zugriff: 17.11.2005

Literaturverzeichnis [IBM04] IBM Corporation (2004): Package org.eclipse.emf.ecore. EMF Javadoc,

2001-2004.

http://download.eclipse.org/tools/emf/2.2.0/

javadoc/org/eclipse/emf/ecore/package-summary.

html, letzter Zugriff: 21.12.2005

[Kacz03] Kaczmarek, A.: GXL-Validator, Studienarbeit, Universit¨at Koblenz-Landau, 2003

[Laen98] L¨anger, M.: Entwicklung, Implementierung und Bewertung einer objek-torientierten, datenbankgest¨utzten Java-Klassenbibliothek f¨ur Graphen, Diplomarbeit, Universit¨at Koblenz-Landau, 1998

[OMG02] Object Management Group (2002): Meta Object Facility (MOF) Speci-fication, Version 1.4, April 2002

http://www.omg.org/docs/formal/02-04-03.pdf, letz-ter Zugriff: 17.11.2005

[OMG04] Object Management Group (2004): Meta Object Facility (MOF) Speci-fication, Version 2.0 (finalization underway), Oktober 2004

http://www.omg.org/docs/ptc/04-10-15.pdf, letzter Zu-griff: 05.01.2006

[OMG05] Object Management Group (2005): OMG Specification Summary, Sep-tember 2005

http://www.omg.org/technology/documents/spec_

summary.htm, letzter Zugriff: 05.01.2006

[Stef06] Steffens, T.: Kontextfreie Suche auf Graphen, Diplomarbeit, Institut f¨ur Softwaretechnik, Informatik, Fachbereich 4, Universit¨at Koblenz-Landau, Januar 2006

[Sun05] Sun Microsystems, Inc. (2005): Using JConsole to Monitor Applicati-ons. Sun Developer Network (SDN), 2005.

http://java.sun.com/developer/

technicalArticles/J2SE/jconsole.html, letzter Zu-griff: 13.12.2005

[Vau04] Vauclair, S.: Extensible Java Profiler, Diploma Thesis, Programming Methods Laboratory (LAMP), School of Computer and Communication Sciences, Swiss Federal Institute of Technology, 2002-2004

http://ejp.sourceforge.net, letzter Zugriff: 22.02.2006

1.1 Beispiel f¨ur einen TGraphen . . . 13

1.2 Beispielgraph zur Erl¨auterung der Terminologie . . . 15

1.3 Orientierung von Kanten . . . 16

3.1 Die Ebenen von JGraLab . . . 29

3.2 Metamodell GXL . . . 30

3.3 Metamodell MOF . . . 32

3.4 Metamodell ecore . . . 35

3.5 Beispiel f¨ur ein Graphenschema . . . 36

3.6 Beispiel f¨ur ein Graphenschema in GXL . . . 37

3.7 Beispiel f¨ur ein Graphenschema in MOF . . . 38

3.8 Beispiel f¨ur ein Graphenschema in ecore . . . 40

3.9 Alternatives Beispiel f¨ur ein Graphenschema in ecore . . . 41

3.10 Erweiterte Visualisierung der Meta-Ebenen . . . 45

3.11 ¨Ubersichts-Klassendiagramm JGraLab . . . 47

3.12 Beispiel f¨ur ein Graphenschema in JGraLab, Objektdiagramm . . . 55

3.13 Beispiel f¨ur ein Graphenschema in JGralab . . . 55

3.14 Implementations-Klassendiagramm der Schemaebene . . . 57

3.15 Implementations-Klassendiagramm der Schemaebene . . . 58

3.16 Implementations-Klassendiagramm der Graphen . . . 62

3.17 Implementations-Klassendiagramm des Wertebereichsystems . . . 66

3.18 Flussdiagramm zur Erstellung der Attribute . . . 70

3.19 M2-Beispiel zur Demonstration der Attributzugriffe . . . 71

3.20 Klassendiagramm des Beispiels zur Generierung der Attribute . . . 76

3.21 Objektdiagramm zur Darstellung der Attribute . . . 79

4.1 Beispielgraph zur Durchf¨uhrung der beiden Experimente . . . 83

4.2 Klassendiagramm zur Durchf¨uhrung des Tests der feingranularen Graph-Architektur . . . 84 4.3 Vereinfachte Darstellung des Beispielgraphen in einem Objektdiagramm 84 4.4 Verfeinerte Darstellung des Beispielgraphen in einem Objektdiagramm . 85

Abbildungsverzeichnis

4.5 Klassendiagramm zur Durchf¨uhrung des Tests der Inzidenzliste . . . 88

4.6 Darstellung des JGraLab-Beispiels als internes Klassendiagramm . . . . 99

4.7 Die Factory-Methoden innerhalb der generierten M1-Klassen . . . 104

4.8 Internes Klassendiagramm zur Generierung der Attribute . . . 106

4.9 Ablaufskizze von JGraLab . . . 107

4.10 Beispiel f¨ur ein Schema . . . 110

4.11 Beispiel f¨ur einen Graphen . . . 111

4.12 Klassendiagramm f¨ur die GraphIO-Klasse . . . 134

4.13 Klassendiagramm des Interfaces ProgressFunction . . . 135

4.14 Hilfs-Interfaces zur Umgehung von Reflection beim Laden und Speichern138 4.15 Hierarchie der Exceptions in JGraLab . . . 140

5.1 Beispiel-Schema als Objektdiagramm . . . 145

5.2 Beispiel-Schema in alternativer Notation . . . 146

5.3 Beispiel-Graph als Objektdiagramm . . . 146

3.1 Ubersetzungen der Value-Klassen in echte Java-Attribute . . . .¨ 68 4.1 Darstellung des Beispielgraphen mittels einer Inzidenzliste . . . 89 4.2 Auswertung des Speicherplatzverbrauchs sowie des Laufzeitverhaltens

eines Beispielgraphen . . . 92 4.3 Beschreibung der Factory Methoden in den generierten M1-Interfaces . 102