Your SlideShare is downloading. ×
0
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Was Software-Archive erzählen

884

Published on

Presented at SE 2006.

Presented at SE 2006.

Published in: Technology, Spiritual
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
884
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Was Software-Archive erzählen Stephan Diehl • Universität Trier Andreas Zeller • Universität des Saarlandes Tom Zimmermann • Universität des Saarlandes
  • 2. Was Software-Archive erzählen Stephan Diehl • Universität Trier Andreas Zeller • Universität des Saarlandes Tom Zimmermann • Universität des Saarlandes
  • 3. Was Software-Archive erzählen Stephan Diehl • Universität Trier Andreas Zeller • Universität des Saarlandes Tom Zimmermann • Universität des Saarlandes
  • 4. Fehler
  • 5. Fehler
  • 6. Fehler Korrekturen
  • 7. Fehler • Änderungen • Versionen
  • 8. Was muss ich noch ändern? Fehler • Änderungen • Versionen
  • 9. Was muss ich Welche Module noch ändern? muss ich testen? Fehler • Änderungen • Versionen
  • 10. Was muss ich Welche Module noch ändern? muss ich testen? Fehler • Änderungen • Versionen
  • 11. Entwickler, die diese Methode geändert haben, haben auch folgende Methoden geändert...
  • 12. eROSE Zimmermann et al. (TSE 2005) funded by IBM Eclipse Innovation Grant
  • 13. Zimmermann et al. (TSE 2005) funded by IBM Eclipse Innovation Grant
  • 14. In 64% aller Änderungen enthalten die besten drei Vorschläge eine korrekte Stelle Zimmermann et al. (TSE 2005) funded by IBM Eclipse Innovation Grant
  • 15. Gleichzeitige Änderungen buildnotes_compare.html public API internal files Coupling for ComparePreferencePage.java and plugin.properties Burch et al. (SoftVis 2005) EPOSEE icons www.eposoft.org
  • 16. Was muss ich Welche Module noch ändern? muss ich testen? Fehler • Änderungen • Versionen
  • 17. Was muss ich Welche Module noch ändern? muss ich testen? Fehler • Änderungen • Versionen
  • 18. Module
  • 19. Module
  • 20. Module
  • 21. Module Welche sollte man am meisten testen?
  • 22. Womit können wir Fehlschläge vorhersagen?
  • 23. Womit können wir Fehlschläge vorhersagen? Früheres Fehlschlagen 7 2 12 1 6 8 15 1 2 14 1 wenn wir Fehlschläge haben (und sie uns leisten können)
  • 24. Womit können wir Fehlschläge vorhersagen? Früheres Fehlschlagen 7 2 12 1 6 8 15 1 2 14 1 wenn wir Fehlschläge haben (und sie uns leisten können)
  • 25. Womit können wir Fehlschläge vorhersagen? Früheres Fehlschlagen Komplexitäts-Metriken 7 2 12 1 6 8 15 1 2 14 1 wenn wir wissen, wenn wir Fehlschläge haben welche die richtige ist (und sie uns leisten können)
  • 26. Womit können wir Fehlschläge vorhersagen? Früheres Fehlschlagen Komplexitäts-Metriken public static void main(String[] args) { 7 2 ! //{{{ Check for Java 1.4 or later 12 1 ! String javaVersion = System.getProperty(quot;java.versionquot;); ! if(javaVersion.compareTo(quot;1.4quot;) < 0) !{ ! ! System.err.println(quot;You are running Java version quot; 6 8 15 1 ! ! ! + javaVersion + quot;.quot;); 2 ! ! System.err.println(quot;jEdit requires Java 1.4 or later.quot;); ! ! System.exit(1); ! } //}}} 14 ! // later on we need to know if certain code is called from 1 ! // the main thread ! mainThread = Thread.currentThread(); ! settingsDirectory = quot;.jeditquot;; ! ... wenn wir wissen, wenn wir Fehlschläge haben welche die richtige ist (und sie uns leisten können)
  • 27. Womit können wir Fehlschläge vorhersagen? Früheres Fehlschlagen Komplexitäts-Metriken public static void main(String[] args) { 7 2 ! //{{{ Check for Java 1.4 or later 12 1 ! String javaVersion = System.getProperty(quot;java.versionquot;); Method Lines of Code ! ! ! 301 ! if(javaVersion.compareTo(quot;1.4quot;) < 0) !{ ! ! System.err.println(quot;You are running Java version quot; 6 ! ! ! + javaVersion Block Depth Nested + quot;.quot;); !! ! ! 5 8 15 1 2 ! ! System.err.println(quot;jEdit requires Java 1.4 or later.quot;); ! ! System.exit(1); McCabe Cylcomatic Complexity!! 62 ! } //}}} 14 ! // later on we need to know if certain code is called from 1 ! // the main thread Number of parameters ! ! ! ! 1 ! mainThread = Thread.currentThread(); ! settingsDirectory = quot;.jeditquot;; ! ... wenn wir wissen, wenn wir Fehlschläge haben welche die richtige ist (und sie uns leisten können)
  • 28. Metriken @ Microsoft Nagappan/Ball/Zeller (ICSE 2006)
  • 29. Metriken @ Microsoft Nagappan/Ball/Zeller (ICSE 2006) Fehler 1. Fehler beim Anwender sammeln
  • 30. Metriken @ Microsoft Nagappan/Ball/Zeller (ICSE 2006) Fehler 1. Fehler beim Anwender sammeln 2. Fehler auf Codestellen abbilden Korrekturen
  • 31. Metriken @ Microsoft Nagappan/Ball/Zeller (ICSE 2006) Fehler 1. Fehler beim Anwender sammeln 2. Fehler auf Codestellen abbilden Korrekturen 3. Fehler mit Metriken korrelieren
  • 32. Metriken @ Microsoft Nagappan/Ball/Zeller (ICSE 2006) Fehler 1. Fehler beim Anwender sammeln 2. Fehler auf Codestellen abbilden Korrekturen 3. Fehler mit Metriken korrelieren 4. Aus Metriken Fehlerträchtigkeit vorhersagen
  • 33. Projekte • Internet Explorer 6 • IIS Server • Windows Process Messaging • DirectX • NetMeeting >1.000.000 Codezeilen
  • 34. Projekte ABCDE
  • 35. Korrelieren Metriken mit Fehlverhalten?
  • 36. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken
  • 37. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken A #Classes und 5 abgeleitete
  • 38. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken A #Classes und 5 abgeleitete B fast alle
  • 39. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken A #Classes und 5 abgeleitete B fast alle C alle außer MaxInheritanceDepth
  • 40. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken A #Classes und 5 abgeleitete B fast alle C alle außer MaxInheritanceDepth D nur #Lines
  • 41. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken A #Classes und 5 abgeleitete B fast alle C alle außer MaxInheritanceDepth D nur #Lines E #Functions, #Arcs, McCabe
  • 42. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken JA A #Classes und 5 abgeleitete B fast alle C alle außer MaxInheritanceDepth D nur #Lines E #Functions, #Arcs, McCabe
  • 43. Gibt es universelle Metriken?
  • 44. Gibt es universelle Metriken? Projekt Korrelierte Metriken A #Classes und 5 abgeleitete B fast alle C alle außer MaxInheritanceDepth D nur #Lines E #Functions, #Arcs, McCabe
  • 45. Gibt es universelle Metriken? Projekt Korrelierte Metriken NEIN A #Classes und 5 abgeleitete B fast alle C alle außer MaxInheritanceDepth D nur #Lines E #Functions, #Arcs, McCabe
  • 46. Können wir Fehlerorte vorhersagen?
  • 47. Können wir Fehlerorte vorhersagen? • Grundidee: Metriken kombinieren und Regressions-Modelle ableiten
  • 48. Können wir Fehlerorte vorhersagen? • Grundidee: Metriken kombinieren und Regressions-Modelle ableiten • In diese können wir Metriken stecken, um die Fehlerwahrscheinlichkeit vorherzusagen
  • 49. Können wir Fehlerorte vorhersagen? • Grundidee: Metriken kombinieren und Regressions-Modelle ableiten • In diese können wir Metriken stecken, um die Fehlerwahrscheinlichkeit vorherzusagen • Module können anhand der Fehlerwahrscheinlichkeit sortiert werden
  • 50. Können wir Fehlerorte vorhersagen? Projekt #Komponenten R 2-Wert A 9 0.741 B 6 0.779 C 7 0.579 D 7 0.684 E 5 0.919
  • 51. Können wir Fehlerorte vorhersagen? Projekt #Komponenten R 2-Wert JA A 9 0.741 B 6 0.779 C 7 0.579 D 7 0.684 E 5 0.919
  • 52. HATARI Sliwerski/Zimmermann/Zeller (Demo@FSE 2005)
  • 53. HATARI
  • 54. HATARI
  • 55. Imports in Eclipse Schröter/Zimmermannl/Zeller (Tech. Report)
  • 56. Imports in Eclipse import org.eclipse.jdt.internal.compiler.lookup.*; import org.eclipse.jdt.internal.compiler.*; import org.eclipse.jdt.internal.compiler.ast.*; import org.eclipse.jdt.internal.compiler.util.*; ... import org.eclipse.pde.core.*; import org.eclipse.jface.wizard.*; import org.eclipse.ui.*; Schröter/Zimmermannl/Zeller (Tech. Report)
  • 57. Imports in Eclipse 71% aller Komponenten, die compiler importieren, müssen korrigiert werden import org.eclipse.jdt.internal.compiler.lookup.*; import org.eclipse.jdt.internal.compiler.*; import org.eclipse.jdt.internal.compiler.ast.*; import org.eclipse.jdt.internal.compiler.util.*; ... import org.eclipse.pde.core.*; import org.eclipse.jface.wizard.*; import org.eclipse.ui.*; Schröter/Zimmermannl/Zeller (Tech. Report)
  • 58. Imports in Eclipse 71% aller Komponenten, die compiler importieren, müssen korrigiert werden import org.eclipse.jdt.internal.compiler.lookup.*; import org.eclipse.jdt.internal.compiler.*; import org.eclipse.jdt.internal.compiler.ast.*; import org.eclipse.jdt.internal.compiler.util.*; ... import org.eclipse.pde.core.*; import org.eclipse.jface.wizard.*; import org.eclipse.ui.*; 14% aller Komponenten, die ui importieren, müssen korrigiert werden Schröter/Zimmermannl/Zeller (Tech. Report)
  • 59. Imports in Eclipse Korrelation mit Fehlschlagen import org.eclipse.jdt.internal.compiler.lookup.*; import org.eclipse.jdt.internal.compiler.*; import org.eclipse.jdt.internal.compiler.ast.*; import org.eclipse.jdt.internal.compiler.util.*; ... import org.eclipse.pde.core.*; import org.eclipse.jface.wizard.*; import org.eclipse.ui.*; Korrelation mit Erfolg
  • 60. Imports in Eclipse Korrelation mit Fehlschlagen Compiler-Code • Interna • Core-Funktionalität GUI-Code • Standard-Java-Klassen • Hilfstexte Korrelation mit Erfolg
  • 61. Imports in Eclipse Korrelation mit Fehlschlagen Compiler-Code • Interna • Core-Funktionalität Welche sollte man am meisten testen? GUI-Code • Standard-Java-Klassen • Hilfstexte Korrelation mit Erfolg
  • 62. Vorhersage fehlerträchtiger Module
  • 63. Vorhersage fehlerträchtiger Module • Analog zu Microsoft-Ansatz, aber Imports statt Metriken
  • 64. Vorhersage fehlerträchtiger Module • Analog zu Microsoft-Ansatz, aber Imports statt Metriken • Basis: Eclipse mit Fehlerdatenbank (Bugzilla) und Versionsdatenbank (CVS)
  • 65. Vorhersage fehlerträchtiger Module • Analog zu Microsoft-Ansatz, aber Imports statt Metriken • Basis: Eclipse mit Fehlerdatenbank (Bugzilla) und Versionsdatenbank (CVS) • 36% der Packages waren fehlerträchtig (= mussten nachträglich korrigiert werden)
  • 66. Vorhersage fehlerträchtiger Module • Analog zu Microsoft-Ansatz, aber Imports statt Metriken • Basis: Eclipse mit Fehlerdatenbank (Bugzilla) und Versionsdatenbank (CVS) • 36% der Packages waren fehlerträchtig (= mussten nachträglich korrigiert werden) • Vorhersage mit Support-Vektor-Maschine
  • 67. Ergebnis
  • 68. ~300 Packages Ergebnis
  • 69. Ergebnis top 5% ~300 Packages
  • 70. Ergebnis fehlerträchtig erfolgreich top 5% 10% ~300 Packages 90%
  • 71. Ergebnis fehlerträchtig erfolgreich top 5% 10% Vorhersage ~300 Packages zur Entwurfszeit! 90%
  • 72. Fazit
  • 73. Fazit Software-Archive erzählen viel über ein Projekt
  • 74. Fazit Software-Archive erzählen viel über ein Projekt Wertvolle Daten für neue Anwendungen:
  • 75. Fazit Software-Archive erzählen viel über ein Projekt Wertvolle Daten für neue Anwendungen: Vorhersage verwandter Änderungen
  • 76. Fazit Software-Archive erzählen viel über ein Projekt Wertvolle Daten für neue Anwendungen: Vorhersage verwandter Änderungen Vorhersage fehlerträchtiger Module
  • 77. Fazit Software-Archive erzählen viel über ein Projekt Wertvolle Daten für neue Anwendungen: Vorhersage verwandter Änderungen Vorhersage fehlerträchtiger Module Wenig zusätzlicher Aufwand nötig

×