• Save
2008 02 01 Zeller
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

2008 02 01 Zeller

on

  • 1,265 views

Andreas Zeller - Die Programmierumgebung der Zukunft

Andreas Zeller - Die Programmierumgebung der Zukunft

Statistics

Views

Total Views
1,265
Views on SlideShare
1,246
Embed Views
19

Actions

Likes
0
Downloads
0
Comments
0

2 Embeds 19

http://choose.s-i.ch 18
http://www.slideee.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

2008 02 01 Zeller Presentation Transcript

  • 1. Die Programmierumgebung der Zukunft Andreas Zeller Universität des Saarlandes
  • 2. Programmierumgebungen
  • 3. Werkzeuge
  • 4. Größere Werkzeuge
  • 5. Integrierte Werkzeuge
  • 6. Zusammenspiel
  • 7. Zusammenspiel
  • 8. Modelle Specs Code Traces Profile Tests e-mail Fehler Aufwand Navigation Versionen Chats
  • 9. Modelle Specs Code Traces Profile Tests e-mail Fehler Aufwand Navigation Versionen Chats
  • 10. Fehler Versionen
  • 11. Fehler auf Code abbilden Bugs Versionen
  • 12. Warum sind manche Komponenten Fehlerdichte in Eclipse fehlerträchtiger als andere?
  • 13. Sind es die Entwickler? Macht Je mehr Erfahrung einen Erfahrung, desto Unterschied? mehr Fehler!
  • 14. Ist es die Geschichte? Wir haben hier Dann sind hier viele Fehler noch mehr! gefunden…
  • 15. Ist es die Programmiersprache? Sind gotos Keine Korrelation! schädlich?
  • 16. Wie steht es mit Metriken? Korrelieren Metriken mit Fehlerdichte?
  • 17. Projekte • Internet Explorer 6 • IIS Server • Windows Process Messaging • DirectX • NetMeeting >1.000.000 Codezeilen
  • 18. Projekte A B C D E
  • 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. Wie steht es mit Metriken? Korrelieren Metriken mit Fehlerdichte? Manchmal!
  • 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. 6 4 4 8 8 3 1 5 5 1 7 7 3 10 9 2 10 6 2 9 Vorhersage Tatsache
  • 23. 6 4 4 8 8 3 1 5 5 1 7 7 3 10 9 2 10 6 2 9 Vorhersage Tatsache
  • 24. 6 4 4 8 8 3 1 5 5 1 7 7 3 10 9 2 10 6 2 9 Vorhersage Tatsache
  • 25. 6 4 4 8 8 3 1 5 5 1 7 7 3 10 9 2 10 6 2 9 Vorhersage Tatsache
  • 26. Ist es die Geschichte? Wir haben hier Dann sind noch mehr Fehler viele Fehler in ähnlichen gefunden… Modulen!
  • 27. Ok. Problembereich? Welche Tokens import • extends sind relevant? • implements
  • 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. 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. Vorhersage Defekt kein Defekt top 5% 10% ~300 Pakete 90%
  • 31. Sicherheitslücken in Firefox
  • 32. ✘ ✘ ✘ ✘ ✘ ✘ nsIContent.h ✘ ✘ ✘ ✘ ✘ ✘ nsIContentUtils.h ✘ ✘ ✘ ✘ ✘ ✘ nsIScriptSecurityManager.h ✘ ✔ ✘ ✘
  • 33. ✘ ✘ ✘ ✘ ✘ ✘ ✘ ✘ nsIPrivateDOMEvent.h ✘ ✘ ✘ ✘ ✘ ✘ ✘ nsReadableUtils.h ✘ ✘ ✘ ✘
  • 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. • Wissen, wo die Fehler sind • Kalibrieren der Fehlervorhersage • Wissen, wo die nächsten Fehler sind • Vollautomatisch!
  • 36. Software-Archive • enthalten komplette Projektgeschichte • gepflegt durch Programmierumgebungen • automatischer Zugang • frei verfügbar durch Open-Source Projekte Bugs Changes
  • 37. Modelle Specs Code Traces Profile Tests e-mail Fehler Aufwand Navigation Versionen Chats
  • 38. Modelle Specs Code Traces Profile Tests “Welche Module sollte ich am meisten testen?” e-mail Fehler Aufwand Navigation Versionen Chats
  • 39. Modelle Specs Code Traces Profile Tests “Wie lange wird es dauern, diesen Fehler zu beheben?” e-mail Fehler Aufwand Navigation Versionen Chats
  • 40. Modelle Specs Code Traces Profile Tests “Diese Anforderung ist riskant” e-mail Fehler Aufwand Navigation Versionen Chats
  • 41. Modelle Specs Code Traces Profile Tests e-mail Fehler Aufwand Navigation Versionen Chats
  • 42. Jazz.net IBM Jazz Faculty Award für Fehlervorhersage aus Entwicklungsdaten 25,000$
  • 43. Daten sammeln
  • 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. Strukturiertes Lernen Erfolgreiche Läufe Fehlschlagende Läufe add() <init> add() <init> add() isEmpty() ¬isEmpty isEmpty() ¬isEmpty clear() clear() ✔ remove() ↯ Programm Lerner ✔ ↯
  • 46. Modelle Specs Code Traces Profile Tests Lerner e-mail Fehler Aufwand Navigation Versionen Chats
  • 47. Fehlerdichte in Eclipse
  • 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. 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. Wikis Joy of Use Participation Usability Recommendation Social Software Collaboration Perpetual Beta Simplicity Empirie 2.0 Trust Economy Remixability The Long Tail DataDriven
  • 51. Herausforderungen
  • 52. Modelle Specs Code Traces Profile Tests Programm-Daten Prozess-Daten e-mail Fehler Aufwand Navigation Versionen Chats
  • 53. Modelle Specs Code Traces Profile Tests Deduktion Induktion e-mail Fehler Aufwand Navigation Versionen Chats
  • 54. Modelle Specs Code Traces Profile Tests e-mail Fehler Aufwand Navigation Versionen Chats
  • 55. Modelle Specs Code Traces Profile Tests e-mail Fehler Aufwand Navigation Versionen Chats
  • 56. Fazit