Was Software-Archive
      erzählen


        Stephan Diehl • Universität Trier
        Andreas Zeller • Universität des S...
Was Software-Archive
      erzählen


        Stephan Diehl • Universität Trier
        Andreas Zeller • Universität des S...
Was Software-Archive
      erzählen


        Stephan Diehl • Universität Trier
        Andreas Zeller • Universität des S...
Fehler
Fehler
Fehler   Korrekturen
Fehler • Änderungen • Versionen
Was muss ich
noch ändern?




        Fehler • Änderungen • Versionen
Was muss ich                   Welche Module
noch ändern?                   muss ich testen?




        Fehler • Änderung...
Was muss ich                   Welche Module
noch ändern?                   muss ich testen?




        Fehler • Änderung...
Entwickler, die diese Methode geändert haben,
haben auch folgende Methoden geändert...
eROSE
Zimmermann et al. (TSE 2005)     funded by IBM Eclipse Innovation Grant
Zimmermann et al. (TSE 2005)   funded by IBM Eclipse Innovation Grant
In 64% aller Änderungen enthalten die besten
         drei Vorschläge eine korrekte Stelle




Zimmermann et al. (TSE 2005...
Gleichzeitige Änderungen
   buildnotes_compare.html



                                              public API




      ...
Was muss ich                   Welche Module
noch ändern?                   muss ich testen?




        Fehler • Änderung...
Was muss ich                   Welche Module
noch ändern?                   muss ich testen?




        Fehler • Änderung...
Module
Module
Module
Module


Welche sollte man
am meisten testen?
Womit können wir
Fehlschläge vorhersagen?
Womit können wir
 Fehlschläge vorhersagen?
      Früheres Fehlschlagen
               7         2
      12                ...
Womit können wir
 Fehlschläge vorhersagen?
      Früheres Fehlschlagen
               7         2
      12                ...
Womit können wir
 Fehlschläge vorhersagen?
      Früheres Fehlschlagen                  Komplexitäts-Metriken
            ...
Womit können wir
 Fehlschläge vorhersagen?
      Früheres Fehlschlagen                          Komplexitäts-Metriken
    ...
Womit können wir
 Fehlschläge vorhersagen?
      Früheres Fehlschlagen                          Komplexitäts-Metriken
    ...
Metriken @ Microsoft
Nagappan/Ball/Zeller (ICSE 2006)
Metriken @ Microsoft
  Nagappan/Ball/Zeller (ICSE 2006)




                                     Fehler
1. Fehler beim Anw...
Metriken @ Microsoft
  Nagappan/Ball/Zeller (ICSE 2006)




                                       Fehler
1. Fehler beim A...
Metriken @ Microsoft
  Nagappan/Ball/Zeller (ICSE 2006)




                                       Fehler
1. Fehler beim A...
Metriken @ Microsoft
  Nagappan/Ball/Zeller (ICSE 2006)




                                          Fehler
1. Fehler bei...
Projekte

• Internet Explorer 6
• IIS Server
• Windows Process Messaging
• DirectX
• NetMeeting
          >1.000.000 Codez...
Projekte


ABCDE
Korrelieren Metriken
 mit Fehlverhalten?
Korrelieren Metriken
   mit Fehlverhalten?
Projekt   Korrelierte Metriken
Korrelieren Metriken
   mit Fehlverhalten?
Projekt      Korrelierte Metriken
  A     #Classes und 5 abgeleitete
Korrelieren Metriken
   mit Fehlverhalten?
Projekt       Korrelierte Metriken
  A     #Classes und 5 abgeleitete
  B     f...
Korrelieren Metriken
   mit Fehlverhalten?
Projekt       Korrelierte Metriken
  A     #Classes und 5 abgeleitete
  B     f...
Korrelieren Metriken
   mit Fehlverhalten?
Projekt         Korrelierte Metriken
  A       #Classes und 5 abgeleitete
  B  ...
Korrelieren Metriken
   mit Fehlverhalten?
Projekt         Korrelierte Metriken
  A       #Classes und 5 abgeleitete
  B  ...
Korrelieren Metriken
   mit Fehlverhalten?
Projekt         Korrelierte Metriken




           JA
  A       #Classes und 5...
Gibt es universelle
    Metriken?
Gibt es universelle
        Metriken?
Projekt         Korrelierte Metriken
  A       #Classes und 5 abgeleitete
  B       ...
Gibt es universelle
        Metriken?
Projekt         Korrelierte Metriken




NEIN
  A       #Classes und 5 abgeleitete
 ...
Können wir Fehlerorte
    vorhersagen?
Können wir Fehlerorte
    vorhersagen?
• Grundidee: Metriken kombinieren und
  Regressions-Modelle ableiten
Können wir Fehlerorte
    vorhersagen?
• Grundidee: Metriken kombinieren und
  Regressions-Modelle ableiten
• In diese kön...
Können wir Fehlerorte
    vorhersagen?
• Grundidee: Metriken kombinieren und
  Regressions-Modelle ableiten
• In diese kön...
Können wir Fehlerorte
    vorhersagen?
Projekt #Komponenten   R 2-Wert

  A          9               0.741
  B          6 ...
Können wir Fehlerorte
    vorhersagen?
Projekt #Komponenten   R 2-Wert




         JA
  A          9               0.741
...
HATARI




Sliwerski/Zimmermann/Zeller (Demo@FSE 2005)
HATARI
HATARI
Imports in Eclipse




Schröter/Zimmermannl/Zeller (Tech. Report)
Imports in Eclipse

      import   org.eclipse.jdt.internal.compiler.lookup.*;
      import   org.eclipse.jdt.internal.com...
Imports in Eclipse
                                   71% aller Komponenten, die compiler importieren,
                   ...
Imports in Eclipse
                                   71% aller Komponenten, die compiler importieren,
                   ...
Imports in Eclipse
                Korrelation mit Fehlschlagen
import   org.eclipse.jdt.internal.compiler.lookup.*;
impor...
Imports in Eclipse
        Korrelation mit Fehlschlagen

Compiler-Code • Interna • Core-Funktionalität



GUI-Code • Stand...
Imports in Eclipse
        Korrelation mit Fehlschlagen

Compiler-Code • Interna • Core-Funktionalität
        Welche soll...
Vorhersage
fehlerträchtiger Module
Vorhersage
fehlerträchtiger Module
• Analog zu Microsoft-Ansatz,
  aber Imports statt Metriken
Vorhersage
fehlerträchtiger Module
• Analog zu Microsoft-Ansatz,
  aber Imports statt Metriken
• Basis: Eclipse mit Fehler...
Vorhersage
fehlerträchtiger Module
• Analog zu Microsoft-Ansatz,
  aber Imports statt Metriken
• Basis: Eclipse mit Fehler...
Vorhersage
fehlerträchtiger Module
• Analog zu Microsoft-Ansatz,
  aber Imports statt Metriken
• Basis: Eclipse mit Fehler...
Ergebnis
~300 Packages   Ergebnis
Ergebnis

                top 5%
~300 Packages
Ergebnis
                         fehlerträchtig     erfolgreich

                top 5%

                                ...
Ergebnis
                         fehlerträchtig     erfolgreich

                top 5%

                                ...
Fazit
Fazit

Software-Archive erzählen viel über ein Projekt
Fazit

Software-Archive erzählen viel über ein Projekt
Wertvolle Daten für neue Anwendungen:
Fazit

Software-Archive erzählen viel über ein Projekt
Wertvolle Daten für neue Anwendungen:
  Vorhersage verwandter Änder...
Fazit

Software-Archive erzählen viel über ein Projekt
Wertvolle Daten für neue Anwendungen:
  Vorhersage verwandter Änder...
Fazit

Software-Archive erzählen viel über ein Projekt
Wertvolle Daten für neue Anwendungen:
  Vorhersage verwandter Änder...
Was Software-Archive erzählen
Was Software-Archive erzählen
Was Software-Archive erzählen
Upcoming SlideShare
Loading in …5
×

Was Software-Archive erzählen

1,480 views

Published on

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
1,480
On SlideShare
0
From Embeds
0
Number of Embeds
37
Actions
Shares
0
Downloads
18
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Was Software-Archive erzählen

  1. 1. Was Software-Archive erzählen Stephan Diehl • Universität Trier Andreas Zeller • Universität des Saarlandes Tom Zimmermann • Universität des Saarlandes
  2. 2. Was Software-Archive erzählen Stephan Diehl • Universität Trier Andreas Zeller • Universität des Saarlandes Tom Zimmermann • Universität des Saarlandes
  3. 3. Was Software-Archive erzählen Stephan Diehl • Universität Trier Andreas Zeller • Universität des Saarlandes Tom Zimmermann • Universität des Saarlandes
  4. 4. Fehler
  5. 5. Fehler
  6. 6. Fehler Korrekturen
  7. 7. Fehler • Änderungen • Versionen
  8. 8. Was muss ich noch ändern? Fehler • Änderungen • Versionen
  9. 9. Was muss ich Welche Module noch ändern? muss ich testen? Fehler • Änderungen • Versionen
  10. 10. Was muss ich Welche Module noch ändern? muss ich testen? Fehler • Änderungen • Versionen
  11. 11. Entwickler, die diese Methode geändert haben, haben auch folgende Methoden geändert...
  12. 12. eROSE Zimmermann et al. (TSE 2005) funded by IBM Eclipse Innovation Grant
  13. 13. Zimmermann et al. (TSE 2005) funded by IBM Eclipse Innovation Grant
  14. 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. 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. 16. Was muss ich Welche Module noch ändern? muss ich testen? Fehler • Änderungen • Versionen
  17. 17. Was muss ich Welche Module noch ändern? muss ich testen? Fehler • Änderungen • Versionen
  18. 18. Module
  19. 19. Module
  20. 20. Module
  21. 21. Module Welche sollte man am meisten testen?
  22. 22. Womit können wir Fehlschläge vorhersagen?
  23. 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. 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. 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. 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. 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. 28. Metriken @ Microsoft Nagappan/Ball/Zeller (ICSE 2006)
  29. 29. Metriken @ Microsoft Nagappan/Ball/Zeller (ICSE 2006) Fehler 1. Fehler beim Anwender sammeln
  30. 30. Metriken @ Microsoft Nagappan/Ball/Zeller (ICSE 2006) Fehler 1. Fehler beim Anwender sammeln 2. Fehler auf Codestellen abbilden Korrekturen
  31. 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. 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. 33. Projekte • Internet Explorer 6 • IIS Server • Windows Process Messaging • DirectX • NetMeeting >1.000.000 Codezeilen
  34. 34. Projekte ABCDE
  35. 35. Korrelieren Metriken mit Fehlverhalten?
  36. 36. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken
  37. 37. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken A #Classes und 5 abgeleitete
  38. 38. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken A #Classes und 5 abgeleitete B fast alle
  39. 39. Korrelieren Metriken mit Fehlverhalten? Projekt Korrelierte Metriken A #Classes und 5 abgeleitete B fast alle C alle außer MaxInheritanceDepth
  40. 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. 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. 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. 43. Gibt es universelle Metriken?
  44. 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. 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. 46. Können wir Fehlerorte vorhersagen?
  47. 47. Können wir Fehlerorte vorhersagen? • Grundidee: Metriken kombinieren und Regressions-Modelle ableiten
  48. 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. 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. 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. 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. 52. HATARI Sliwerski/Zimmermann/Zeller (Demo@FSE 2005)
  53. 53. HATARI
  54. 54. HATARI
  55. 55. Imports in Eclipse Schröter/Zimmermannl/Zeller (Tech. Report)
  56. 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. 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. 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. 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. 60. Imports in Eclipse Korrelation mit Fehlschlagen Compiler-Code • Interna • Core-Funktionalität GUI-Code • Standard-Java-Klassen • Hilfstexte Korrelation mit Erfolg
  61. 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. 62. Vorhersage fehlerträchtiger Module
  63. 63. Vorhersage fehlerträchtiger Module • Analog zu Microsoft-Ansatz, aber Imports statt Metriken
  64. 64. Vorhersage fehlerträchtiger Module • Analog zu Microsoft-Ansatz, aber Imports statt Metriken • Basis: Eclipse mit Fehlerdatenbank (Bugzilla) und Versionsdatenbank (CVS)
  65. 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. 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. 67. Ergebnis
  68. 68. ~300 Packages Ergebnis
  69. 69. Ergebnis top 5% ~300 Packages
  70. 70. Ergebnis fehlerträchtig erfolgreich top 5% 10% ~300 Packages 90%
  71. 71. Ergebnis fehlerträchtig erfolgreich top 5% 10% Vorhersage ~300 Packages zur Entwurfszeit! 90%
  72. 72. Fazit
  73. 73. Fazit Software-Archive erzählen viel über ein Projekt
  74. 74. Fazit Software-Archive erzählen viel über ein Projekt Wertvolle Daten für neue Anwendungen:
  75. 75. Fazit Software-Archive erzählen viel über ein Projekt Wertvolle Daten für neue Anwendungen: Vorhersage verwandter Änderungen
  76. 76. Fazit Software-Archive erzählen viel über ein Projekt Wertvolle Daten für neue Anwendungen: Vorhersage verwandter Änderungen Vorhersage fehlerträchtiger Module
  77. 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

×