2008 02 01 Zeller

953 Aufrufe

Veröffentlicht am

Andreas Zeller - Die Programmierumgebung der Zukunft

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
953
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
32
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

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

×