Visualisierung von Softwareevolution Seminar über Softwarevisualisierung TU Kaiserslautern SS 2006 Betreuer: Dr. Andreas Kerren Sebastian Bachtler 21.07.2006 Übersicht • Motivation • Multidimensional Scaling Views • Discret Time Figures • Evolutionäre Spektrographen • Zusammenfassung Übersicht 2 / 38 Motivation • Warum visualisieren wir Softwareevolution? – Aufdecken versteckter Zusammenhänge • Beispiel: Schnittstellenänderung verursacht Inkompatibilität – Bessere Behandlung komplexer Fehler möglich – Besseres Vermitteln von Funktionsweisen an Dritte – Analyse der Arbeitsweise der am Projekt Beteiligten • Erfahrenen Entwickler ändern mehr Dateien synchron 3 / 38 Motivation Multidimensional Scaling Views • Motivation • Multidimensional Scaling Views Quelle: [1] • Discret Time Figures • Evolutionäre Spektrographen • Zusammenfassung Multidimensional Scaling Views 4 / 38 Datengrundlage: RHDB • Release History Data Base • Enthält Änderungs- und Fehlerberichte 5 / 38 Multidimensional Scaling Views Features • Zum Beispiel: Fähigkeit zur SSH2 Verschlüsselung • Definition über aufgerufene Dateien • Dateiaufrufe während Testszenarien aufgezeichnet • Dateien mittels Mengenoperationen den einzelnen Features zugeordnet. Xml = (MathML ∩ XML ) / (Core ∪ HTML ∪ PNG ∪ fBlank ∪ hBlank ∪ ChromeGIF ) Multidimensional Scaling Views 6 / 38 Multidimensionales Scaling: Grundlagen • Wiedergabe der Unterschiede zwischen einzelnen Objekten möglichst exakt durch Abstände Î Statistisches Verfahren ([6]), Minimierung von: ( ⎛ Stress D ( x1 ,..., x N ) = ⎜⎜ ∑ Di , j − xi − x j ⎝ i≠ j ) 2 ⎞ ⎟ ⎟ ⎠ 1 2 Stress= Unterschied zwischen Abstand und Unterschiedlichkeit Multidimensional Scaling Views 7 / 38 Unterschiedsmatrix • Erstellen einer Fehlerberichtsbeschreibung d i = {an an Rmk ∧ mk Rpi } di = Menge der Softwareeinheiten die über einen Änderungsbericht mit dem Fehlerbericht verbunden ist • Berechnen des Abstandes ⎧ ⎛ ⎞ n 1⎜ ⎟ if pi Rp j ⎪ 1− dist (d i , d j ) = ⎨ 2 ⎜ min (si , s j ) ⎟ ⎝ ⎠ ⎪ sonst 1 ⎩ Multidimensional Scaling Views 8 / 38 Gewichtete Kanten • Abstandsdarstellung durch Kantengewichte • Definieren einer Verbindung zwischen 2 Objekten an Rmk ∧ mk Rpi ∧ mk Rp j an Rmk ∧ mk Rpi ∧ an Rml ∧ ml Rp j Î es existiert ein verbindender Änderungsbericht oder eine über zwei Änderungsberichte mit dem Fehlerbericht verbundene Softwareeinheit • Gewicht berechnen ⎢ ln n ⎥ * 8 + 1,5⎥ weight (vi , v j ) = 10 − ⎢ ⎣ ln nmax ⎦ Multidimensional Scaling Views 9 / 38 Erste Sicht: Feature View • Alle Dateien eines Features an die selbe Stelle • Liniendicke gibt Gewicht an Multidimensional Scaling Views 10 / 38 Zweite Sicht: Project View • schwarze Linien : Verzeichnisbaum • rosa Linien: Verbindung durch Fehlerbericht • minchildsize: Mindestanzahl Kinder pro Knoten • compact: Mindestanzahl Fehlerberichte Multidimensional Scaling Views 11 / 38 Discrete Time Figures • Motivation • Multidimensional Scaling Views • Discret Time Figures Quelle: [2] • Evolutionäre Spektrographen • Zusammenfassung Discrete Time Figures 12 / 38 Enstehung und Idee • Basiert auf Zeitstrahldarstellung • Probleme : – Schlecht skalierbar – Anzahl Aktionen pro Zeiteinheit nicht erkennbar 13 / 38 Discrete Time Figures Enstehung und Idee • Besser bei Discrete Time Figure: • Aber: Keine Zuordnung zur Datei, zum Entwickler Discrete Time Figures 14 / 38 Färbung und Phasen Rot: Viele Einträge Blau: Wenig Einträge High Stable Phase: min. vier rote Abschnitte Stable Phase: min. vier gleiche Abschnitte Spike Phase: min. 2 blaue + 1 roter + min. 2 blaue Abschnitte Discrete Time Figures 15 / 38 Skalierung durch Phasen • In der skalierten Ansicht werden die Randfarben als Füllfarben verwendet. Discrete Time Figures 16 / 38 Muster • Persistent: • Bug Persistent: min. 80 % der Lebenszeit enthalten Einträge min 80% der Revisionseinträge stehen Fehlereinträge gegenüber • High Production Persistent: min. 80% haben hohe Produktivität 17 / 38 Discrete Time Figures Muster • Day Fly: • Dead Day Fly: Discrete Time Figures max. 20% der Lebenszeit enthalten Einträge max. 20% der Lebenszeit, danach gelöscht 18 / 38 Muster • Introduced for Fixing: erste Revision nach erstem Fehler 19 / 38 Discrete Time Figures Muster • Stabilization: Discrete Time Figures min. 5 Zeiteinheiten mit hohen Revisionseinträgen und eine High Stable oder Spike Phase, Fehler und Revisionen enden mit Stable Phase 20 / 38 Muster • Addition of Features: R − Spike begin ≤ F − Spike begin ≤ R − Spike end + 2 R − Spike begin ≤ F − HighStable begin ≤ R − Spike end + 2 R − HighStable begin ≤ F − HighStable begin ≤ R − HighStable end − 2 R − HighStable begin ≤ F − Spike begin ≤ R − HighStable end − 2 21 / 38 Discrete Time Figures Muster • Bug Fixing: R − Spike begin ≤ F − Stable begin ≤ R − Spike end + 2 R − HighStable begin ≤ F − Stable begin ≤ R − HighStable end − 2 Discrete Time Figures 22 / 38 Muster • Refactoring / Code Cleaning R − HighStable begin > F − Stable begin ∧ R − HighStable end < F − Stable end R − Spike begin > F − Stable begin ∧ R − Spike end < F − Stable end Discrete Time Figures 23 / 38 Evolutionäre Spektrographen • Motivation • Multidimensional Scaling Views • Discret Time Figures • Evolutionäre Spektrographen Quellen: [3] und [4] • Zusammenfassung Evolutionäre Spektrographen 24 / 38 Idee • Darstellung wie bei der Schallanalyse • Drei Dimensionen: – Spektrum: Einheiten die gemessen werden – Zeit: entweder kontinuierlich oder nach Ereignissen unterteilt – Messung: Pro Zeiteinheit und Spektrumseinheit wird ein Messwert eingetragen. Evolutionäre Spektrographen 25 / 38 Spektrographenmatrix • Die drei Dimensionen werden gespeichert in einer Matrix • Diese Matrix kann später durch einfaches Einfärben in einen Spektrographen umgesetzt werden Evolutionäre Spektrographen 26 / 38 Kanonische Netzwerke • Mögliche Datengrundlage für evolutionäre Spektrographen, wird nur in [3] verwendet Î Graph mit gewichteten Knoten • Ermöglichen gleichberechtigte Erfassung unterschiedlicher Daten, auch nicht softwarebezogene Daten 27 / 38 Evolutionäre Spektrographen Kanonische Netzwerke Software Paper Knoten Entwickler Autoren Gewicht Anzahl Änderungen Anzahl Paper Kanten Mitarbeiter Co - Autoren • Gemessen werden Knotengewicht und Anzahl Nachbarn W (x ) = Gewichtsänderung von Knoten x während Zeit t Summe aller Gewichtsänderungen während Zeit t Evolutionäre Spektrographen 28 / 38 Färbung • Man unterscheidet drei Möglichkeiten – Quartile Coloring, nur in [3]: – Lineare Färbung, aus [4]: definiere maximalen und minimalen Farbwert Zwischenfarben werden durch lineare Abstufung festgelegt 29 / 38 Evolutionäre Spektrographen Färbung – Exponentieller Zerfall, aus [4]: HSV Farbraum drei Farben Chot, Ccold,CBG Annährung von Chot nach Ccold HSV Farbraum aus: [5] ⎧ ⎪ ⎪ C[i ][ j ] = ⎨ ⎪ ⎪⎩ C BG if M [i ][ j ] ohne Wert Chot Chot else if M [i ][ j ] ≥ T else if M [i ][ j − 1] ohne Wert g (C[i ][ j − 1]) Evolutionäre Spektrographen sonst 30 / 38 Färbung – Definition der Hilfsfunktion g(x): g (c ) = [h' , s ' , b' ] h' = h(c ) + (h(Ccold ) − h(c ))* decay s ' = s(c ) + (s (Ccold ) − s(c ))* decay b' = b(c ) + (b(Ccold ) − b(c ))* decay Î Expotentielle Annährung an die Farbe Ccold Decay ist ein Zerfallsfaktor zwischen 0 und 1 31 / 38 Evolutionäre Spektrographen Beispiel • • • • Zeit : Softwarerevisionen Spektrum: Dateien Messung : ein- und ausgehende Abhängigkeiten Zuordnung großer Releases zum Graphen Evolutionäre Spektrographen 32 / 38 Zusammenfassung • Motivation • Multidimensional Scaling Views • Discret Time Figures • Evolutionäre Spektrographen • Zusammenfassung 33 / 38 Zusammenfassung Zusammenfassung • Alle drei Ansätze setzen auf die menschliche Fähigkeit zur Mustererkennung • Trotzdem verschiedene Ansätze und Schwerpunkte • Jede Methode mit Zukunftspotential Zusammenfassung 34 / 38 Zusammenfassung • Multidimensional Scaling Views: + - Erforschung der Abhängigkeiten und Grundlagen von Features. Anzahl der verschiedenen Verbindungen im Feture View schlecht erkennbar • Discrete Time Figures: + - Skalierbarkeit und Verbindung mit Strukturinformationen keine Zuordnung zum Entwickler oder der dargestellten Datei möglich. 35 / 38 Zusammenfassung Zusammenfassung • Evolutionäre Spektrographen: + - Zusammenfassung guter Verlaufüberblick. kanonischen Netzwerken = leicht auf andere Systeme übertragbare Analysemethode. durch verschiedene Färbemethoden keine einheitliche Darstellung 36 / 38 Quellenangabe • [1] Michael Fischer and Harald Gall. MDS-Views: Visualizing Problem Report Data of Large Scale Software using Multidimensional Scaling, Technical Report TUV-1841-2003-17, Vienna University of Technology, June 2003. http://www.infosys.tuwien.ac.at/reports/repository/TUV-1841-2004-01.ps • [2] Marco D’Ambros and Michele Lanza. Software bugs and evolution: A visual approach to uncover their relationships. In Proceedings of CSMR 2006 (10th European Conference on Software Maintenance and Reengineering), pages 227–236. IEEE CS Press, March 2006. • [3] Ahmed E. Hassan, Jingwei Wu and Richard C. Holt. Visualizing Historical Data Using Spectrographs. In Proceedings of the 11th IEEE International Software Metrics Symposium (METRICS 2005), pp. Como, Italy, September 1922, 2005. • [4] Jingwei Wu, Richard C. Holt and Ahmed E. Hassan. Exploring Software Evolution Using Spectrographs In Proceedings of the 11th IEEE Working Conference on Reverse Engineering (WCRE 2004), pp. 80-89, Delft, Netherlands, November 9-12, 2004. • [5] http://en.wikipedia.org/wiki/HSV_color_space • [6] http://de.wikipedia.org/wiki/Multidimensionale_Skalierung 37 / 38 Quellenangabe Vielen Dank Noch Fragen? 38 / 38