SlideShare ist ein Scribd-Unternehmen logo

Was Software-Archive erzählen

Thomas Zimmermann
Thomas Zimmermann
Thomas ZimmermannResearcher um Microsoft Research

Presented at SE 2006.

Was Software-Archive erzählen

1 von 80
Downloaden Sie, um offline zu lesen
Was Software-Archive
      erzählen


        Stephan Diehl • Universität Trier
        Andreas Zeller • Universität des Saarlandes
        Tom Zimmermann • Universität des Saarlandes
Was Software-Archive
      erzählen


        Stephan Diehl • Universität Trier
        Andreas Zeller • Universität des Saarlandes
        Tom Zimmermann • Universität des Saarlandes
Was Software-Archive
      erzählen


        Stephan Diehl • Universität Trier
        Andreas Zeller • Universität des Saarlandes
        Tom Zimmermann • Universität des Saarlandes
Was Software-Archive erzählen
Fehler
Fehler

Recomendados

Unit testing mit Javascript
Unit testing mit JavascriptUnit testing mit Javascript
Unit testing mit Javascriptjoergreichert
 
Optimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based ApplicationsOptimizing Performance in Qt-Based Applications
Optimizing Performance in Qt-Based Applicationsaccount inactive
 
Software Analytics = Sharing Information
Software Analytics = Sharing InformationSoftware Analytics = Sharing Information
Software Analytics = Sharing InformationThomas Zimmermann
 
Predicting Method Crashes with Bytecode Operations
Predicting Method Crashes with Bytecode OperationsPredicting Method Crashes with Bytecode Operations
Predicting Method Crashes with Bytecode OperationsThomas Zimmermann
 
Analytics for smarter software development
Analytics for smarter software development Analytics for smarter software development
Analytics for smarter software development Thomas Zimmermann
 

Más contenido relacionado

Mehr von Thomas Zimmermann

Characterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get ReopenedCharacterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get ReopenedThomas Zimmermann
 
Data driven games user research
Data driven games user researchData driven games user research
Data driven games user researchThomas Zimmermann
 
Not my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignmentsNot my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignmentsThomas Zimmermann
 
Empirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft ResearchEmpirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft ResearchThomas Zimmermann
 
Security trend analysis with CVE topic models
Security trend analysis with CVE topic modelsSecurity trend analysis with CVE topic models
Security trend analysis with CVE topic modelsThomas Zimmermann
 
Analytics for software development
Analytics for software developmentAnalytics for software development
Analytics for software developmentThomas Zimmermann
 
Characterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixedCharacterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixedThomas Zimmermann
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesThomas Zimmermann
 
Cross-project defect prediction
Cross-project defect predictionCross-project defect prediction
Cross-project defect predictionThomas Zimmermann
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesThomas Zimmermann
 
Predicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency GraphsPredicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency GraphsThomas Zimmermann
 
Quality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceQuality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceThomas Zimmermann
 
Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities Thomas Zimmermann
 
Got Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringGot Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringThomas Zimmermann
 
Mining Workspace Updates in CVS
Mining Workspace Updates in CVSMining Workspace Updates in CVS
Mining Workspace Updates in CVSThomas Zimmermann
 
Mining Software Archives to Support Software Development
Mining Software Archives to Support Software DevelopmentMining Software Archives to Support Software Development
Mining Software Archives to Support Software DevelopmentThomas Zimmermann
 
esolang: Esoterische Programmiersprachen
esolang: Esoterische Programmiersprachenesolang: Esoterische Programmiersprachen
esolang: Esoterische ProgrammiersprachenThomas Zimmermann
 

Mehr von Thomas Zimmermann (20)

Characterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get ReopenedCharacterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get Reopened
 
Klingon Countdown Timer
Klingon Countdown TimerKlingon Countdown Timer
Klingon Countdown Timer
 
Data driven games user research
Data driven games user researchData driven games user research
Data driven games user research
 
Not my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignmentsNot my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignments
 
Empirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft ResearchEmpirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft Research
 
Security trend analysis with CVE topic models
Security trend analysis with CVE topic modelsSecurity trend analysis with CVE topic models
Security trend analysis with CVE topic models
 
Analytics for software development
Analytics for software developmentAnalytics for software development
Analytics for software development
 
Characterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixedCharacterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixed
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development Activities
 
Cross-project defect prediction
Cross-project defect predictionCross-project defect prediction
Cross-project defect prediction
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development Activities
 
Predicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency GraphsPredicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency Graphs
 
Quality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceQuality of Bug Reports in Open Source
Quality of Bug Reports in Open Source
 
Meet Tom and his Fish
Meet Tom and his FishMeet Tom and his Fish
Meet Tom and his Fish
 
Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities
 
Got Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringGot Myth? Myths in Software Engineering
Got Myth? Myths in Software Engineering
 
Mining Workspace Updates in CVS
Mining Workspace Updates in CVSMining Workspace Updates in CVS
Mining Workspace Updates in CVS
 
Mining Software Archives to Support Software Development
Mining Software Archives to Support Software DevelopmentMining Software Archives to Support Software Development
Mining Software Archives to Support Software Development
 
Unit testing with JUnit
Unit testing with JUnitUnit testing with JUnit
Unit testing with JUnit
 
esolang: Esoterische Programmiersprachen
esolang: Esoterische Programmiersprachenesolang: Esoterische Programmiersprachen
esolang: Esoterische Programmiersprachen
 

Was Software-Archive erzählen

  • 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
  • 7. Fehler Korrekturen
  • 8. Fehler • Änderungen • Versionen
  • 9. Was muss ich noch ändern? Fehler • Änderungen • Versionen
  • 10. Was muss ich Welche Module noch ändern? muss ich testen? Fehler • Änderungen • Versionen
  • 11. Was muss ich Welche Module noch ändern? muss ich testen? Fehler • Änderungen • Versionen
  • 14. Entwickler, die diese Methode geändert haben, haben auch folgende Methoden geändert...
  • 15. eROSE Zimmermann et al. (TSE 2005) funded by IBM Eclipse Innovation Grant
  • 16. Zimmermann et al. (TSE 2005) funded by IBM Eclipse Innovation Grant
  • 17. In 64% aller Änderungen enthalten die besten drei Vorschläge eine korrekte Stelle Zimmermann et al. (TSE 2005) funded by IBM Eclipse Innovation Grant
  • 18. 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
  • 19. Was muss ich Welche Module noch ändern? muss ich testen? Fehler • Änderungen • Versionen
  • 20. Was muss ich Welche Module noch ändern? muss ich testen? Fehler • Änderungen • Versionen
  • 24. Module Welche sollte man am meisten testen?
  • 26. 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)
  • 27. 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)
  • 28. 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)
  • 29. 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)
  • 30. 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)
  • 32. Metriken @ Microsoft Nagappan/Ball/Zeller (ICSE 2006) Fehler 1. Fehler beim Anwender sammeln
  • 33. Metriken @ Microsoft Nagappan/Ball/Zeller (ICSE 2006) Fehler 1. Fehler beim Anwender sammeln 2. Fehler auf Codestellen abbilden Korrekturen
  • 34. Metriken @ Microsoft Nagappan/Ball/Zeller (ICSE 2006) Fehler 1. Fehler beim Anwender sammeln 2. Fehler auf Codestellen abbilden Korrekturen 3. Fehler mit Metriken korrelieren
  • 35. 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
  • 36. Projekte • Internet Explorer 6 • IIS Server • Windows Process Messaging • DirectX • NetMeeting >1.000.000 Codezeilen
  • 38. Korrelieren Metriken mit Fehlverhalten?
  • 39. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken
  • 40. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken A #Classes und 5 abgeleitete
  • 41. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken A #Classes und 5 abgeleitete B fast alle
  • 42. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken A #Classes und 5 abgeleitete B fast alle C alle außer MaxInheritanceDepth
  • 43. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken A #Classes und 5 abgeleitete B fast alle C alle außer MaxInheritanceDepth D nur #Lines
  • 44. 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
  • 45. 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
  • 47. 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
  • 48. 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
  • 49. Können wir Fehlerorte vorhersagen?
  • 50. Können wir Fehlerorte vorhersagen? • Grundidee: Metriken kombinieren und Regressions-Modelle ableiten
  • 51. Können wir Fehlerorte vorhersagen? • Grundidee: Metriken kombinieren und Regressions-Modelle ableiten • In diese können wir Metriken stecken, um die Fehlerwahrscheinlichkeit vorherzusagen
  • 52. 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
  • 53. 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
  • 54. 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
  • 59. 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)
  • 60. 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)
  • 61. 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)
  • 62. 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
  • 63. Imports in Eclipse Korrelation mit Fehlschlagen Compiler-Code • Interna • Core-Funktionalität GUI-Code • Standard-Java-Klassen • Hilfstexte Korrelation mit Erfolg
  • 64. 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
  • 66. Vorhersage fehlerträchtiger Module • Analog zu Microsoft-Ansatz, aber Imports statt Metriken
  • 67. Vorhersage fehlerträchtiger Module • Analog zu Microsoft-Ansatz, aber Imports statt Metriken • Basis: Eclipse mit Fehlerdatenbank (Bugzilla) und Versionsdatenbank (CVS)
  • 68. 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)
  • 69. 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
  • 71. ~300 Packages Ergebnis
  • 72. Ergebnis top 5% ~300 Packages
  • 73. Ergebnis fehlerträchtig erfolgreich top 5% 10% ~300 Packages 90%
  • 74. Ergebnis fehlerträchtig erfolgreich top 5% 10% Vorhersage ~300 Packages zur Entwurfszeit! 90%
  • 75. Fazit
  • 77. Fazit Software-Archive erzählen viel über ein Projekt Wertvolle Daten für neue Anwendungen:
  • 78. Fazit Software-Archive erzählen viel über ein Projekt Wertvolle Daten für neue Anwendungen: Vorhersage verwandter Änderungen
  • 79. Fazit Software-Archive erzählen viel über ein Projekt Wertvolle Daten für neue Anwendungen: Vorhersage verwandter Änderungen Vorhersage fehlerträchtiger Module
  • 80. 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