was software-archive erzählen

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

Upload: thomas-zimmermann

Post on 05-Jul-2015

890 views

Category:

Technology


2 download

DESCRIPTION

Presented at SE 2006.

TRANSCRIPT

Page 1: Was Software-Archive erzählen

Was Software-Archive erzählen

Stephan Diehl • Universität TrierAndreas Zeller • Universität des SaarlandesTom Zimmermann • Universität des Saarlandes

Page 2: Was Software-Archive erzählen

Was Software-Archive erzählen

Stephan Diehl • Universität TrierAndreas Zeller • Universität des SaarlandesTom Zimmermann • Universität des Saarlandes

Page 3: Was Software-Archive erzählen

Was Software-Archive erzählen

Stephan Diehl • Universität TrierAndreas Zeller • Universität des SaarlandesTom Zimmermann • Universität des Saarlandes

Page 4: Was Software-Archive erzählen
Page 5: Was Software-Archive erzählen

Fehler

Page 6: Was Software-Archive erzählen

Fehler

Page 7: Was Software-Archive erzählen

Fehler Korrekturen

Page 8: Was Software-Archive erzählen

Fehler • Änderungen • Versionen

Page 9: Was Software-Archive erzählen

Fehler • Änderungen • Versionen

Was muss ich noch ändern?

Page 10: Was Software-Archive erzählen

Fehler • Änderungen • Versionen

Was muss ich noch ändern?

Welche Module muss ich testen?

Page 11: Was Software-Archive erzählen

Fehler • Änderungen • Versionen

Was muss ich noch ändern?

Welche Module muss ich testen?

Page 12: Was Software-Archive erzählen
Page 13: Was Software-Archive erzählen
Page 14: Was Software-Archive erzählen

Entwickler, die diese Methode geändert haben, haben auch folgende Methoden geändert...

Page 15: Was Software-Archive erzählen

funded by IBM Eclipse Innovation Grant

eROSEeROSEZimmermann et al. (TSE 2005)

Page 16: Was Software-Archive erzählen

funded by IBM Eclipse Innovation GrantZimmermann et al. (TSE 2005)

Page 17: Was Software-Archive erzählen

funded by IBM Eclipse Innovation Grant

In 64% aller Änderungen enthalten die besten drei Vorschläge eine korrekte Stelle

Zimmermann et al. (TSE 2005)

Page 18: Was Software-Archive erzählen

Gleichzeitige Änderungen

internal files

icons

public API

Coupling for ComparePreferencePage.java

and plugin.properties

buildnotes_compare.html

EPOSEEwww.eposoft.org

Burch et al. (SoftVis 2005)

Page 19: Was Software-Archive erzählen

Fehler • Änderungen • Versionen

Was muss ich noch ändern?

Welche Module muss ich testen?

Page 20: Was Software-Archive erzählen

Welche Module muss ich testen?

Was muss ich noch ändern?

Fehler • Änderungen • Versionen

Page 21: Was Software-Archive erzählen

Module

Page 22: Was Software-Archive erzählen

Module

Page 23: Was Software-Archive erzählen

Module

Page 24: Was Software-Archive erzählen

Module

Welche sollte manam meisten testen?

Page 25: Was Software-Archive erzählen

Womit können wir Fehlschläge vorhersagen?

Page 26: Was Software-Archive erzählen

wenn wir Fehlschläge haben (und sie uns leisten können)

Früheres Fehlschlagen

15

12

8

14

7

6

2

2

1

1

1

Womit können wir Fehlschläge vorhersagen?

Page 27: Was Software-Archive erzählen

wenn wir Fehlschläge haben (und sie uns leisten können)

Früheres Fehlschlagen

15

12

8

14

7

6

2

2

1

1

1

Womit können wir Fehlschläge vorhersagen?

Früheres Fehlschlagen

Page 28: Was Software-Archive erzählen

wenn wir Fehlschläge haben (und sie uns leisten können)

wenn wir wissen,welche die richtige ist

Komplexitäts-MetrikenFrüheres Fehlschlagen

15

12

8

14

7

6

2

2

1

1

1

Womit können wir Fehlschläge vorhersagen?

Früheres Fehlschlagen

Page 29: Was Software-Archive erzählen

wenn wir Fehlschläge haben (und sie uns leisten können)

wenn wir wissen,welche die richtige ist

Komplexitäts-MetrikenKomplexitäts-Metrikenpublic static void main(String[] args)

{

! //{{{ Check for Java 1.4 or later

! String javaVersion = System.getProperty("java.version");

! if(javaVersion.compareTo("1.4") < 0)

! {

! ! System.err.println("You are running Java version "

! ! ! + javaVersion + ".");

! ! System.err.println("jEdit requires Java 1.4 or later.");

! ! System.exit(1);

! } //}}}

! // later on we need to know if certain code is called from

! // the main thread

! mainThread = Thread.currentThread();

! settingsDirectory = ".jedit";

! ...

Früheres Fehlschlagen

15

12

8

14

7

6

2

2

1

1

1

Womit können wir Fehlschläge vorhersagen?

Früheres Fehlschlagen

Page 30: Was Software-Archive erzählen

wenn wir Fehlschläge haben (und sie uns leisten können)

wenn wir wissen,welche die richtige ist

Komplexitäts-MetrikenKomplexitäts-Metrikenpublic static void main(String[] args)

{

! //{{{ Check for Java 1.4 or later

! String javaVersion = System.getProperty("java.version");

! if(javaVersion.compareTo("1.4") < 0)

! {

! ! System.err.println("You are running Java version "

! ! ! + javaVersion + ".");

! ! System.err.println("jEdit requires Java 1.4 or later.");

! ! System.exit(1);

! } //}}}

! // later on we need to know if certain code is called from

! // the main thread

! mainThread = Thread.currentThread();

! settingsDirectory = ".jedit";

! ...

Komplexitäts-Metrikenpublic static void main(String[] args)

{

! //{{{ Check for Java 1.4 or later

! String javaVersion = System.getProperty("java.version");

! if(javaVersion.compareTo("1.4") < 0)

! {

! ! System.err.println("You are running Java version "

! ! ! + javaVersion + ".");

! ! System.err.println("jEdit requires Java 1.4 or later.");

! ! System.exit(1);

! } //}}}

! // later on we need to know if certain code is called from

! // the main thread

! mainThread = Thread.currentThread();

! settingsDirectory = ".jedit";

! ...

Nested Block Depth ! ! ! ! 5

Number of parameters ! ! ! ! 1

McCabe Cylcomatic Complexity!! 62

Method Lines of Code ! ! ! 301

Früheres Fehlschlagen

15

12

8

14

7

6

2

2

1

1

1

Womit können wir Fehlschläge vorhersagen?

Früheres Fehlschlagen

Page 31: Was Software-Archive erzählen

Metriken @ MicrosoftNagappan/Ball/Zeller (ICSE 2006)

Page 32: Was Software-Archive erzählen

Metriken @ Microsoft

1. Fehler beim Anwender sammeln Fehler

Nagappan/Ball/Zeller (ICSE 2006)

Page 33: Was Software-Archive erzählen

Metriken @ Microsoft

1. Fehler beim Anwender sammeln

2. Fehler auf Codestellen abbildenKorrekturen

Fehler

Nagappan/Ball/Zeller (ICSE 2006)

Page 34: Was Software-Archive erzählen

Metriken @ Microsoft

1. Fehler beim Anwender sammeln

2. Fehler auf Codestellen abbilden

3. Fehler mit Metriken korrelierenKorrekturen

Fehler

Nagappan/Ball/Zeller (ICSE 2006)

Page 35: Was Software-Archive erzählen

Metriken @ Microsoft

1. Fehler beim Anwender sammeln

2. Fehler auf Codestellen abbilden

3. Fehler mit Metriken korrelieren

4. Aus Metriken Fehlerträchtigkeit vorhersagen

Korrekturen

Fehler

Nagappan/Ball/Zeller (ICSE 2006)

Page 36: Was Software-Archive erzählen

Projekte

• Internet Explorer 6

• IIS Server

• Windows Process Messaging

• DirectX

• NetMeeting

>1.000.000 Codezeilen

Page 37: Was Software-Archive erzählen

Projekte

A B C D E

Page 38: Was Software-Archive erzählen

Korrelieren Metrikenmit Fehlverhalten?

Page 39: Was Software-Archive erzählen

Korrelieren Metrikenmit Fehlverhalten?

Projekt Korrelierte Metriken

Page 40: Was Software-Archive erzählen

Korrelieren Metrikenmit Fehlverhalten?

Projekt Korrelierte MetrikenA #Classes und 5 abgeleitete

Page 41: Was Software-Archive erzählen

Korrelieren Metrikenmit Fehlverhalten?

Projekt Korrelierte MetrikenA #Classes und 5 abgeleiteteB fast alle

Page 42: Was Software-Archive erzählen

Korrelieren Metrikenmit Fehlverhalten?

Projekt Korrelierte MetrikenA #Classes und 5 abgeleiteteB fast alleC alle außer MaxInheritanceDepth

Page 43: Was Software-Archive erzählen

Korrelieren Metrikenmit Fehlverhalten?

Projekt Korrelierte MetrikenA #Classes und 5 abgeleiteteB fast alleC alle außer MaxInheritanceDepthD nur #Lines

Page 44: Was Software-Archive erzählen

Korrelieren Metrikenmit Fehlverhalten?

Projekt Korrelierte MetrikenA #Classes und 5 abgeleiteteB fast alleC alle außer MaxInheritanceDepthD nur #LinesE #Functions, #Arcs, McCabe

Page 45: Was Software-Archive erzählen

Projekt Korrelierte MetrikenA #Classes und 5 abgeleiteteB fast alleC alle außer MaxInheritanceDepthD nur #LinesE #Functions, #Arcs, McCabe

Korrelieren Metrikenmit Fehlverhalten?

JA

Page 46: Was Software-Archive erzählen

Gibt es universelle Metriken?

Page 47: Was Software-Archive erzählen

Gibt es universelle Metriken?

Projekt Korrelierte MetrikenA #Classes und 5 abgeleiteteB fast alleC alle außer MaxInheritanceDepthD nur #LinesE #Functions, #Arcs, McCabe

Page 48: Was Software-Archive erzählen

Projekt Korrelierte MetrikenA #Classes und 5 abgeleiteteB fast alleC alle außer MaxInheritanceDepthD nur #LinesE #Functions, #Arcs, McCabe

Gibt es universelle Metriken?

NEIN

Page 49: Was Software-Archive erzählen

Können wir Fehlerorte vorhersagen?

Page 50: Was Software-Archive erzählen

Können wir Fehlerorte vorhersagen?

• Grundidee: Metriken kombinieren undRegressions-Modelle ableiten

Page 51: Was Software-Archive erzählen

Können wir Fehlerorte vorhersagen?

• Grundidee: Metriken kombinieren undRegressions-Modelle ableiten

• In diese können wir Metriken stecken, um die Fehlerwahrscheinlichkeit vorherzusagen

Page 52: Was Software-Archive erzählen

Können wir Fehlerorte vorhersagen?

• Grundidee: Metriken kombinieren undRegressions-Modelle ableiten

• In diese können wir Metriken stecken, um die Fehlerwahrscheinlichkeit vorherzusagen

• Module können anhand der Fehlerwahrscheinlichkeit sortiert werden

Page 53: Was Software-Archive erzählen

Können wir Fehlerorte vorhersagen?

Projekt #Komponenten R2-WertA 9 0.741B 6 0.779C 7 0.579D 7 0.684E 5 0.919

Page 54: Was Software-Archive erzählen

Projekt #Komponenten R2-WertA 9 0.741B 6 0.779C 7 0.579D 7 0.684E 5 0.919

JA

Können wir Fehlerorte vorhersagen?

Page 55: Was Software-Archive erzählen

HATARI

Sliwerski/Zimmermann/Zeller (Demo@FSE 2005)

Page 56: Was Software-Archive erzählen

HATARI

Page 57: Was Software-Archive erzählen

HATARI

Page 58: Was Software-Archive erzählen

Imports in Eclipse

Schröter/Zimmermannl/Zeller (Tech. Report)

Page 59: Was Software-Archive erzählen

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)

Page 60: Was Software-Archive erzählen

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.*;

71% aller Komponenten, die compiler importieren, müssen korrigiert werden

Schröter/Zimmermannl/Zeller (Tech. Report)

Page 61: Was Software-Archive erzählen

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.*;

14% aller Komponenten, die ui importieren, müssen korrigiert werden

71% aller Komponenten, die compiler importieren, müssen korrigiert werden

Schröter/Zimmermannl/Zeller (Tech. Report)

Page 62: Was Software-Archive erzählen

Imports in Eclipse

Korrelation mit Fehlschlagen

Korrelation mit Erfolg

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.*;

Page 63: Was Software-Archive erzählen

Imports in Eclipse

Korrelation mit Fehlschlagen

Korrelation mit Erfolg

Compiler-Code • Interna • Core-Funktionalität

GUI-Code • Standard-Java-Klassen • Hilfstexte

Page 64: Was Software-Archive erzählen

Imports in Eclipse

Korrelation mit Fehlschlagen

Korrelation mit Erfolg

Compiler-Code • Interna • Core-Funktionalität

GUI-Code • Standard-Java-Klassen • Hilfstexte

Welche sollte manam meisten testen?

Page 65: Was Software-Archive erzählen

Vorhersage fehlerträchtiger Module

Page 66: Was Software-Archive erzählen

Vorhersage fehlerträchtiger Module

• Analog zu Microsoft-Ansatz,aber Imports statt Metriken

Page 67: Was Software-Archive erzählen

Vorhersage fehlerträchtiger Module

• Analog zu Microsoft-Ansatz,aber Imports statt Metriken

• Basis: Eclipse mit Fehlerdatenbank (Bugzilla) und Versionsdatenbank (CVS)

Page 68: Was Software-Archive erzählen

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)

Page 69: Was Software-Archive erzählen

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

Page 70: Was Software-Archive erzählen

Ergebnis

Page 71: Was Software-Archive erzählen

Ergebnis~

300

Pack

ages

Page 72: Was Software-Archive erzählen

Ergebnis~

300

Pack

ages

top 5%

Page 73: Was Software-Archive erzählen

Ergebnis~

300

Pack

ages

10%

90%

fehlerträchtig erfolgreich

top 5%

Page 74: Was Software-Archive erzählen

Ergebnis~

300

Pack

ages

10%

90%

fehlerträchtig erfolgreich

top 5%

Vorhersagezur Entwurfszeit!

Page 75: Was Software-Archive erzählen

Fazit

Page 76: Was Software-Archive erzählen

Fazit

Software-Archive erzählen viel über ein Projekt

Page 77: Was Software-Archive erzählen

Fazit

Software-Archive erzählen viel über ein Projekt

Wertvolle Daten für neue Anwendungen:

Page 78: Was Software-Archive erzählen

Fazit

Software-Archive erzählen viel über ein Projekt

Wertvolle Daten für neue Anwendungen:

Vorhersage verwandter Änderungen

Page 79: Was Software-Archive erzählen

Fazit

Software-Archive erzählen viel über ein Projekt

Wertvolle Daten für neue Anwendungen:

Vorhersage verwandter Änderungen

Vorhersage fehlerträchtiger Module

Page 80: Was Software-Archive erzählen

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