Die Programmierumgebung
       der Zukunft
         Andreas Zeller
       Universität des Saarlandes
Programmierumgebungen
Werkzeuge
Größere Werkzeuge
Integrierte Werkzeuge
Zusammenspiel
Zusammenspiel
Modelle   Specs     Code      Traces       Profile     Tests




e-mail    Fehler   Aufwand   Navigation   Versionen   Chats
Modelle   Specs     Code      Traces       Profile     Tests




e-mail    Fehler   Aufwand   Navigation   Versionen   Chats
Fehler   Versionen
Fehler auf
       Code abbilden




Bugs                   Versionen
Warum sind manche Komponenten
Fehlerdichte in Eclipse
   fehlerträchtiger als andere?
Sind es die Entwickler?


     Macht            Je mehr
Erfahrung einen   Erfahrung, desto
 Unterschied?       mehr Fehler!
Ist es die Geschichte?


Wir haben hier
                 Dann sind hier
 viele Fehler
                  noch mehr!
 gefunden…
Ist es die
Programmiersprache?

 Sind gotos
              Keine Korrelation!
 schädlich?
Wie steht es mit
        Metriken?

Korrelieren Metriken
 mit Fehlerdichte?
Projekte

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


A B C D E
Korrelieren Metriken
   mit Fehlerdichte?
Projekt          Korrelierte Metriken
  A       #Classes und 5 abgeleitete
  B  ...
Wie steht es mit
        Metriken?

Korrelieren Metriken
 mit Fehlerdichte?
                       Manchmal!
Vorhersage
fehlerträchtiger Module

• Grundidee: Metriken kombinieren
• Größtes Gewicht für vorhersagende Metriken
• Probl...
6           4
    4           8
    8           3
    1           5
    5           1
    7           7
    3          10
...
6           4
    4           8
    8           3
    1           5
    5           1
    7           7
    3          10
...
6           4
    4           8
    8           3
    1           5
    5           1
    7           7
    3          10
...
6           4
    4           8
    8           3
    1           5
    5           1
    7           7
    3          10
...
Ist es die Geschichte?


Wir haben hier       Dann sind
                 noch mehr Fehler
 viele Fehler
                  ...
Ok. Problembereich?


Welche Tokens    import • extends
sind relevant?     • implements
Eclipse Imports
                                   71% aller Komponenten, die compiler importieren,
                      ...
Eclipse Imports
                Korrelation mit Fehlschlagen
import   org.eclipse.jdt.internal.compiler.lookup.*;
import  ...
Vorhersage
                       Defekt     kein Defekt

              top 5%

                                10%
~300 P...
Sicherheitslücken
    in Firefox
✘           ✘       ✘
                                 ✘           ✘
                                     ✘
       nsICont...
✘       ✘       ✘
                           ✘       ✘
                       ✘       ✘       ✘
nsIPrivateDOMEvent.h
     ...
Vorhersage      Komponente          Tatsache
    1        nsDOMClassInfo            3

    2        SGridRowLayout        ...
• Wissen, wo die Fehler sind
• Kalibrieren der Fehlervorhersage
• Wissen, wo die nächsten Fehler sind
• Vollautomatisch!
Software-Archive
• enthalten komplette Projektgeschichte
• gepflegt durch Programmierumgebungen
• automatischer Zugang
• fr...
Modelle   Specs     Code      Traces       Profile     Tests




e-mail    Fehler   Aufwand   Navigation   Versionen   Chats
Modelle   Specs         Code      Traces       Profile     Tests




                    “Welche Module sollte
            ...
Modelle   Specs     Code      Traces       Profile     Tests




             “Wie lange wird es dauern,
             diese...
Modelle   Specs        Code      Traces       Profile     Tests




                   “Diese Anforderung
                 ...
Modelle   Specs     Code      Traces       Profile     Tests




e-mail    Fehler   Aufwand   Navigation   Versionen   Chats
Jazz.net




IBM Jazz Faculty Award
  für Fehlervorhersage
 aus Entwicklungsdaten
        25,000$
Daten sammeln
Aus Abläufen lernen
     <init>                  isEmpty()
     add(3)
   remove(2)
   remove(1)
   remove(3)
     add(2)
...
Strukturiertes Lernen
   Erfolgreiche Läufe                             Fehlschlagende Läufe
                             ...
Modelle   Specs     Code         Traces    Profile     Tests




                        Lerner




e-mail    Fehler   Aufw...
Fehlerdichte in Eclipse
Studien


                                                   Make this
                                                   ...
Zukünftige Programmierumgebungen werden
 • Muster in Programm und Prozess erkennen
 • Regeln anwenden, um Vorhersagen zu m...
Wikis
                                                               Joy of Use
                Participation             ...
Herausforderungen
Modelle   Specs     Code      Traces       Profile     Tests




                   Programm-Daten



                    P...
Modelle     Specs      Code      Traces        Profile     Tests



          Deduktion

                                  ...
Modelle   Specs     Code      Traces       Profile     Tests




e-mail    Fehler   Aufwand   Navigation   Versionen   Chats
Modelle   Specs     Code      Traces       Profile     Tests




e-mail    Fehler   Aufwand   Navigation   Versionen   Chats
Fazit
2008 02 01 Zeller
2008 02 01 Zeller
2008 02 01 Zeller
2008 02 01 Zeller
Upcoming SlideShare
Loading in...5
×

2008 02 01 Zeller

740

Published on

Andreas Zeller - Die Programmierumgebung der Zukunft

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

  • Be the first to like this

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

No notes for slide

2008 02 01 Zeller

  1. 1. Die Programmierumgebung der Zukunft Andreas Zeller Universität des Saarlandes
  2. 2. Programmierumgebungen
  3. 3. Werkzeuge
  4. 4. Größere Werkzeuge
  5. 5. Integrierte Werkzeuge
  6. 6. Zusammenspiel
  7. 7. Zusammenspiel
  8. 8. Modelle Specs Code Traces Profile Tests e-mail Fehler Aufwand Navigation Versionen Chats
  9. 9. Modelle Specs Code Traces Profile Tests e-mail Fehler Aufwand Navigation Versionen Chats
  10. 10. Fehler Versionen
  11. 11. Fehler auf Code abbilden Bugs Versionen
  12. 12. Warum sind manche Komponenten Fehlerdichte in Eclipse fehlerträchtiger als andere?
  13. 13. Sind es die Entwickler? Macht Je mehr Erfahrung einen Erfahrung, desto Unterschied? mehr Fehler!
  14. 14. Ist es die Geschichte? Wir haben hier Dann sind hier viele Fehler noch mehr! gefunden…
  15. 15. Ist es die Programmiersprache? Sind gotos Keine Korrelation! schädlich?
  16. 16. Wie steht es mit Metriken? Korrelieren Metriken mit Fehlerdichte?
  17. 17. Projekte • Internet Explorer 6 • IIS Server • Windows Process Messaging • DirectX • NetMeeting >1.000.000 Codezeilen
  18. 18. Projekte A B C D E
  19. 19. Korrelieren Metriken mit Fehlerdichte? Projekt Korrelierte Metriken A #Classes und 5 abgeleitete B fast alle C alle außer MaxInheritanceDepth D nur #Lines E #Functions, #Arcs, McCabe
  20. 20. Wie steht es mit Metriken? Korrelieren Metriken mit Fehlerdichte? Manchmal!
  21. 21. Vorhersage fehlerträchtiger Module • Grundidee: Metriken kombinieren • Größtes Gewicht für vorhersagende Metriken • Problem: Metriken sind untereinander korreliert • Lösung: Principal Component Analysis (PCA)
  22. 22. 6 4 4 8 8 3 1 5 5 1 7 7 3 10 9 2 10 6 2 9 Vorhersage Tatsache
  23. 23. 6 4 4 8 8 3 1 5 5 1 7 7 3 10 9 2 10 6 2 9 Vorhersage Tatsache
  24. 24. 6 4 4 8 8 3 1 5 5 1 7 7 3 10 9 2 10 6 2 9 Vorhersage Tatsache
  25. 25. 6 4 4 8 8 3 1 5 5 1 7 7 3 10 9 2 10 6 2 9 Vorhersage Tatsache
  26. 26. Ist es die Geschichte? Wir haben hier Dann sind noch mehr Fehler viele Fehler in ähnlichen gefunden… Modulen!
  27. 27. Ok. Problembereich? Welche Tokens import • extends sind relevant? • implements
  28. 28. Eclipse Imports 71% aller Komponenten, die compiler importieren, müssen nach dem Release 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 Joint work with Adrian Schröter • Tom Zimmermann
  29. 29. Eclipse Imports 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
  30. 30. Vorhersage Defekt kein Defekt top 5% 10% ~300 Pakete 90%
  31. 31. Sicherheitslücken in Firefox
  32. 32. ✘ ✘ ✘ ✘ ✘ ✘ nsIContent.h ✘ ✘ ✘ ✘ ✘ ✘ nsIContentUtils.h ✘ ✘ ✘ ✘ ✘ ✘ nsIScriptSecurityManager.h ✘ ✔ ✘ ✘
  33. 33. ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ nsIPrivateDOMEvent.h ✘ ✘ ✘ ✘ ✘ ✘ ✘ nsReadableUtils.h ✘ ✘ ✘ ✘
  34. 34. Vorhersage Komponente Tatsache 1 nsDOMClassInfo 3 2 SGridRowLayout 95 3 xpcprivate 6 4 jsxml 2 5 nsGenericHTMLElement 8 6 jsgc 3 7 nsISEnvironment 12 8 jsfun 1 9 nsHTMLLabelElement 18 10 nsHttpTransaction 35
  35. 35. • Wissen, wo die Fehler sind • Kalibrieren der Fehlervorhersage • Wissen, wo die nächsten Fehler sind • Vollautomatisch!
  36. 36. Software-Archive • enthalten komplette Projektgeschichte • gepflegt durch Programmierumgebungen • automatischer Zugang • frei verfügbar durch Open-Source Projekte Bugs Changes
  37. 37. Modelle Specs Code Traces Profile Tests e-mail Fehler Aufwand Navigation Versionen Chats
  38. 38. Modelle Specs Code Traces Profile Tests “Welche Module sollte ich am meisten testen?” e-mail Fehler Aufwand Navigation Versionen Chats
  39. 39. Modelle Specs Code Traces Profile Tests “Wie lange wird es dauern, diesen Fehler zu beheben?” e-mail Fehler Aufwand Navigation Versionen Chats
  40. 40. Modelle Specs Code Traces Profile Tests “Diese Anforderung ist riskant” e-mail Fehler Aufwand Navigation Versionen Chats
  41. 41. Modelle Specs Code Traces Profile Tests e-mail Fehler Aufwand Navigation Versionen Chats
  42. 42. Jazz.net IBM Jazz Faculty Award für Fehlervorhersage aus Entwicklungsdaten 25,000$
  43. 43. Daten sammeln
  44. 44. Aus Abläufen lernen <init> isEmpty() add(3) remove(2) remove(1) remove(3) add(2) add(1) v:Vector false true 1 2 3 <init> add() add() isEmpty() ¬isEmpty() remove() remove()
  45. 45. Strukturiertes Lernen Erfolgreiche Läufe Fehlschlagende Läufe add() <init> add() <init> add() isEmpty() ¬isEmpty isEmpty() ¬isEmpty clear() clear() ✔ remove() ↯ Programm Lerner ✔ ↯
  46. 46. Modelle Specs Code Traces Profile Tests Lerner e-mail Fehler Aufwand Navigation Versionen Chats
  47. 47. Fehlerdichte in Eclipse
  48. 48. Studien Make this Actionable! Rosenberg, L. and Hyatt, L. “Developing An Effective Metrics Program” European Space Agency Software Assurance Symposium, Netherlands, March, 1996
  49. 49. Zukünftige Programmierumgebungen werden • Muster in Programm und Prozess erkennen • Regeln anwenden, um Vorhersagen zu machen • alle Entwicklungsentscheidungen unterstützen • ihre Unterstützung an das Projekt anpassen
  50. 50. Wikis Joy of Use Participation Usability Recommendation Social Software Collaboration Perpetual Beta Simplicity Empirie 2.0 Trust Economy Remixability The Long Tail DataDriven
  51. 51. Herausforderungen
  52. 52. Modelle Specs Code Traces Profile Tests Programm-Daten Prozess-Daten e-mail Fehler Aufwand Navigation Versionen Chats
  53. 53. Modelle Specs Code Traces Profile Tests Deduktion Induktion e-mail Fehler Aufwand Navigation Versionen Chats
  54. 54. Modelle Specs Code Traces Profile Tests e-mail Fehler Aufwand Navigation Versionen Chats
  55. 55. Modelle Specs Code Traces Profile Tests e-mail Fehler Aufwand Navigation Versionen Chats
  56. 56. Fazit

×