Zum Erleichtern des Einstiegs haben wir auch ein Cookbook erstellt, das aus den Erfahrungen beruht, die wir während des Learning-Friday Projekts gesammelt haben. Dies geht von einem typischen Anwendungsfall im Rahmen der Software-Modernisierung mit einigen hundert Knoten aus und empfiehlt das Verwenden des ForceAtlas Algorithmus.
- Importieren der Daten
- Algorithmus Force Atlas auswählen
- Parameter Abstoßung/Repusion Stregth und Anziehung/Attraction Strength abwechselnd verdoppeln oder halbieren und dabei beobachten ob sich das Ergebnis verbessert
- Schalter wie Attraction Distribution ausprobieren
Folgende Konfiguration hat für uns gute Ergebnisse gebracht:
- Anziehung: 2
- Maximale Verdrängung: 10
- Stabilisierungsfunktion: Ja
- Gravitation: 50
- Größenanpassung: Ja (je nachdem, ob die Knoten überlappen oder nicht)
Basierend auf diesen Werten lässt sich in den meisten Fällen ein gut strukturierter Graph erstellen, der jedoch zur besseren Lesbarkeit noch überarbeitet werden muss.
Dazu können sowohl die Knoten, als auch die Kanten nach bestimmten Kriterien eingefärbt und vergrößert/verkleinert werden.
In unseren Tests haben wir zusätzlich zu den Knoten (die meist nur über einen Identifier verfügen) weitere Informationen ergänzt, wie z.B. das Modul, in dem sich eine Klasse befindet oder die Lines of Code (LoC) des entsprechenden Moduls oder der Klasse. Um diese Informationen aus einem bestehenden Projekt zu extrahieren, haben wir neben passendem Maven-Plugins auch selbst entwickelte Perl-Skripts eingesetzt.
So wurde z.B. das Maven Plugin “Source Lines of Code”eingesetzt, um die LoC eines Moduls oder einer Klasse in separate Textfiles zu extrahieren, die dann mittels Perl in ein für Gephi passendes Format zusammengefasst werden.
Um die Abhängigkeiten der Maven-Module untereinander zu extrahieren, wurde das Maven-Plugin “Depgraph” verwendet. Die Auswertung des Plugins liegt nach Anwendung in einem .dot File (zur Verwendung in GraphViz) vor. aus dem wieder mit Perl-Scripts nützliche Information gewonnen werden kann.