SlideShare ist ein Scribd-Unternehmen logo
1 von 60
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 Codezeilen
Projekte


A B C D E
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
Wie steht es mit
        Metriken?

Korrelieren Metriken
 mit Fehlerdichte?
                       Manchmal!
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)
6           4
    4           8
    8           3
    1           5
    5           1
    7           7
    3          10
    9           2
   10           6
    2           9
Vorhersage   Tatsache
6           4
    4           8
    8           3
    1           5
    5           1
    7           7
    3          10
    9           2
   10           6
    2           9
Vorhersage   Tatsache
6           4
    4           8
    8           3
    1           5
    5           1
    7           7
    3          10
    9           2
   10           6
    2           9
Vorhersage   Tatsache
6           4
    4           8
    8           3
    1           5
    5           1
    7           7
    3          10
    9           2
   10           6
    2           9
Vorhersage   Tatsache
Ist es die Geschichte?


Wir haben hier       Dann sind
                 noch mehr Fehler
 viele Fehler
                    in ähnlichen
 gefunden…             Modulen!
Ok. Problembereich?


Welche Tokens    import • extends
sind relevant?     • implements
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
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
Vorhersage
                       Defekt     kein Defekt

              top 5%

                                10%
~300 Pakete




                          90%
Sicherheitslücken
    in Firefox
✘           ✘       ✘
                                 ✘           ✘
                                     ✘
       nsIContent.h
                             ✘           ✘       ✘
                                 ✘ ✘         ✘
    nsIContentUtils.h
                             ✘   ✘               ✘
                              ✘    ✘
                                ✘
nsIScriptSecurityManager.h
                             ✘ ✔ ✘   ✘
✘       ✘       ✘
                           ✘       ✘
                       ✘       ✘       ✘
nsIPrivateDOMEvent.h
                           ✘       ✘
                       ✘    ✘          ✘
                         ✘     ✘
 nsReadableUtils.h
                           ✘
                       ✘     ✘   ✘
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
• 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
• frei verfügbar durch Open-Source Projekte

      Bugs                        Changes
Modelle   Specs     Code      Traces       Profile     Tests




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




                    “Welche Module sollte
                   ich am meisten testen?”



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




             “Wie lange wird es dauern,
             diesen Fehler zu beheben?”



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




                   “Diese Anforderung
                       ist riskant”



e-mail    Fehler      Aufwand   Navigation   Versionen   Chats
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)
     add(1)     v:Vector
                               false
                                true
                1   2   3



<init>                                   add()
                add()

 isEmpty()                  ¬isEmpty()

               remove()
                                       remove()
Strukturiertes Lernen
   Erfolgreiche Läufe                             Fehlschlagende Läufe
                                 add()
  <init>          add()                           <init>         add()

     isEmpty()             ¬isEmpty                 isEmpty()              ¬isEmpty



   clear()
                 clear()

                                 ✔                              remove()
                                                                                  ↯
Programm                                 Lerner                 ✔          ↯
Modelle   Specs     Code         Traces    Profile     Tests




                        Lerner




e-mail    Fehler   Aufwand   Navigation   Versionen   Chats
Fehlerdichte in Eclipse
Studien


                                                   Make this
                                                   Actionable!




     Rosenberg, L. and Hyatt, L. “Developing An Effective Metrics Program”
European Space Agency Software Assurance Symposium, Netherlands, March, 1996
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
Wikis
                                                               Joy of Use
                Participation                        Usability
Recommendation        Social Software
                        Collaboration      Perpetual Beta   Simplicity


                     Empirie 2.0
                                                               Trust

                                                                Economy
        Remixability                                                   The Long Tail
   DataDriven
Herausforderungen
Modelle   Specs     Code      Traces       Profile     Tests




                   Programm-Daten



                    Prozess-Daten



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



          Deduktion

                                             Induktion




e-mail      Fehler    Aufwand   Navigation    Versionen   Chats
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

Weitere ähnliche Inhalte

Andere mochten auch

TDC2016SP - Automação de testes funcionais com Python e Mechanize
TDC2016SP - Automação de testes funcionais com Python e MechanizeTDC2016SP - Automação de testes funcionais com Python e Mechanize
TDC2016SP - Automação de testes funcionais com Python e Mechanizetdc-globalcode
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaLeonardo Kobus
 
Minoristas independientes y las Franquicias
Minoristas independientes y las FranquiciasMinoristas independientes y las Franquicias
Minoristas independientes y las Franquiciasmariag0419
 
Funciones Básicas - EMdH
Funciones Básicas - EMdHFunciones Básicas - EMdH
Funciones Básicas - EMdHAdela M. Ramos
 
Building a Quantitative Trading Strategy To Beat the S&P500
Building a Quantitative Trading Strategy To Beat the S&P500Building a Quantitative Trading Strategy To Beat the S&P500
Building a Quantitative Trading Strategy To Beat the S&P500Karen Rubin
 
Divisibility rules
Divisibility rulesDivisibility rules
Divisibility rulesAYSHA NADA
 
China Jade not jaded
China Jade not jadedChina Jade not jaded
China Jade not jadedJohn Jeffery
 
Stamping Machine Report
Stamping Machine ReportStamping Machine Report
Stamping Machine ReportOliver Terry
 
JavaFX no Falando em Java 2007 - Sergio Lopes
JavaFX no Falando em Java 2007 - Sergio LopesJavaFX no Falando em Java 2007 - Sergio Lopes
JavaFX no Falando em Java 2007 - Sergio LopesCaelum
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratórioMarcel Caraciolo
 

Andere mochten auch (12)

cblm-java-prog-ds
cblm-java-prog-dscblm-java-prog-ds
cblm-java-prog-ds
 
TDC2016SP - Automação de testes funcionais com Python e Mechanize
TDC2016SP - Automação de testes funcionais com Python e MechanizeTDC2016SP - Automação de testes funcionais com Python e Mechanize
TDC2016SP - Automação de testes funcionais com Python e Mechanize
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuida
 
Minoristas independientes y las Franquicias
Minoristas independientes y las FranquiciasMinoristas independientes y las Franquicias
Minoristas independientes y las Franquicias
 
Funciones Básicas - EMdH
Funciones Básicas - EMdHFunciones Básicas - EMdH
Funciones Básicas - EMdH
 
Building a Quantitative Trading Strategy To Beat the S&P500
Building a Quantitative Trading Strategy To Beat the S&P500Building a Quantitative Trading Strategy To Beat the S&P500
Building a Quantitative Trading Strategy To Beat the S&P500
 
Divisibility rules
Divisibility rulesDivisibility rules
Divisibility rules
 
China Jade not jaded
China Jade not jadedChina Jade not jaded
China Jade not jaded
 
Stamping Machine Report
Stamping Machine ReportStamping Machine Report
Stamping Machine Report
 
JavaFX no Falando em Java 2007 - Sergio Lopes
JavaFX no Falando em Java 2007 - Sergio LopesJavaFX no Falando em Java 2007 - Sergio Lopes
JavaFX no Falando em Java 2007 - Sergio Lopes
 
TRAN THI NGOC-CV
TRAN THI NGOC-CVTRAN THI NGOC-CV
TRAN THI NGOC-CV
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratório
 

Ähnlich wie 2008 02 01 Zeller

AdvancedTdd
AdvancedTddAdvancedTdd
AdvancedTddjlink
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenOdilo Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenPatrick Baumgartner
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerPatrick Baumgartner
 
Mögen die Tests mit dir sein
Mögen die Tests mit dir seinMögen die Tests mit dir sein
Mögen die Tests mit dir seincodepitbull
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptSebastian Springer
 
Mein Freund Der Legacy Code
Mein Freund Der Legacy CodeMein Freund Der Legacy Code
Mein Freund Der Legacy Codemattmatt
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Serverguest23319
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweiternjan_mindmatters
 
Was Software-Archive erzählen
Was Software-Archive erzählenWas Software-Archive erzählen
Was Software-Archive erzählenThomas Zimmermann
 
Die nächste Generation des Unit Testing
Die nächste Generation des Unit TestingDie nächste Generation des Unit Testing
Die nächste Generation des Unit TestingDaniel Lehner
 
Next Level Unit Testing
Next Level Unit TestingNext Level Unit Testing
Next Level Unit TestingDaniel Lehner
 
Integration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineIntegration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineOPEN KNOWLEDGE GmbH
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018Christian Mücke
 
Test-driven Development mit TYPO3
Test-driven Development mit TYPO3Test-driven Development mit TYPO3
Test-driven Development mit TYPO3Oliver Klee
 
Rich Graphics & OpenGL mit Android
Rich Graphics & OpenGL mit AndroidRich Graphics & OpenGL mit Android
Rich Graphics & OpenGL mit AndroidDominik Helleberg
 
Django & Buildout
Django & BuildoutDjango & Buildout
Django & Buildoutzerok
 

Ähnlich wie 2008 02 01 Zeller (20)

AdvancedTdd
AdvancedTddAdvancedTdd
AdvancedTdd
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als Entwickler
 
Mögen die Tests mit dir sein
Mögen die Tests mit dir seinMögen die Tests mit dir sein
Mögen die Tests mit dir sein
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
 
Mein Freund Der Legacy Code
Mein Freund Der Legacy CodeMein Freund Der Legacy Code
Mein Freund Der Legacy Code
 
Codeception VisualCeption
Codeception VisualCeptionCodeception VisualCeption
Codeception VisualCeption
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Server
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweitern
 
Offline Arbeiten
Offline ArbeitenOffline Arbeiten
Offline Arbeiten
 
Was Software-Archive erzählen
Was Software-Archive erzählenWas Software-Archive erzählen
Was Software-Archive erzählen
 
Die nächste Generation des Unit Testing
Die nächste Generation des Unit TestingDie nächste Generation des Unit Testing
Die nächste Generation des Unit Testing
 
Next Level Unit Testing
Next Level Unit TestingNext Level Unit Testing
Next Level Unit Testing
 
Design OOA OOD
Design OOA OODDesign OOA OOD
Design OOA OOD
 
Integration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineIntegration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-Pipeline
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
 
Test-driven Development mit TYPO3
Test-driven Development mit TYPO3Test-driven Development mit TYPO3
Test-driven Development mit TYPO3
 
Rich Graphics & OpenGL mit Android
Rich Graphics & OpenGL mit AndroidRich Graphics & OpenGL mit Android
Rich Graphics & OpenGL mit Android
 
Django & Buildout
Django & BuildoutDjango & Buildout
Django & Buildout
 

Mehr von CHOOSE

Dissecting State-of-the-Art Android Malware Using Static and Dynamic Analysis
Dissecting State-of-the-Art Android Malware Using Static and Dynamic AnalysisDissecting State-of-the-Art Android Malware Using Static and Dynamic Analysis
Dissecting State-of-the-Art Android Malware Using Static and Dynamic AnalysisCHOOSE
 
Continuous Architecting of Stream-Based Systems
Continuous Architecting of Stream-Based SystemsContinuous Architecting of Stream-Based Systems
Continuous Architecting of Stream-Based SystemsCHOOSE
 
Modelling and Programming: Isn&rsquo;t it all the same?
Modelling and Programming: Isn&rsquo;t it all the same?Modelling and Programming: Isn&rsquo;t it all the same?
Modelling and Programming: Isn&rsquo;t it all the same?CHOOSE
 
Practical Models in Practice
Practical Models in PracticePractical Models in Practice
Practical Models in PracticeCHOOSE
 
Services and Models in a Large IT System
Services and Models in a Large IT SystemServices and Models in a Large IT System
Services and Models in a Large IT SystemCHOOSE
 
Choose'10: Uwe Zdun - Compliance in service-oriented architectures: A model-d...
Choose'10: Uwe Zdun - Compliance in service-oriented architectures: A model-d...Choose'10: Uwe Zdun - Compliance in service-oriented architectures: A model-d...
Choose'10: Uwe Zdun - Compliance in service-oriented architectures: A model-d...CHOOSE
 
Choose'10: Jean-Marie Favre - Domain and Technique Specific Languages – A Jou...
Choose'10: Jean-Marie Favre - Domain and Technique Specific Languages – A Jou...Choose'10: Jean-Marie Favre - Domain and Technique Specific Languages – A Jou...
Choose'10: Jean-Marie Favre - Domain and Technique Specific Languages – A Jou...CHOOSE
 
Choose'10: Stephane Ducasse - Powerful DSL engineering in Smalltalk
Choose'10: Stephane Ducasse - Powerful DSL engineering in SmalltalkChoose'10: Stephane Ducasse - Powerful DSL engineering in Smalltalk
Choose'10: Stephane Ducasse - Powerful DSL engineering in SmalltalkCHOOSE
 
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of TonguesChoose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of TonguesCHOOSE
 
Ralph Jocham The Risks Of Scrum Handout
Ralph Jocham The Risks Of Scrum HandoutRalph Jocham The Risks Of Scrum Handout
Ralph Jocham The Risks Of Scrum HandoutCHOOSE
 
Ralph Jocham The Risks Of Scrum
Ralph Jocham The Risks Of ScrumRalph Jocham The Risks Of Scrum
Ralph Jocham The Risks Of ScrumCHOOSE
 
Denker - Pharo: Present and Future - 2009-07-14
Denker - Pharo: Present and Future - 2009-07-14Denker - Pharo: Present and Future - 2009-07-14
Denker - Pharo: Present and Future - 2009-07-14CHOOSE
 
Hausi Müller - Towards Self-Adaptive Software-Intensive Systems
Hausi Müller - Towards Self-Adaptive Software-Intensive SystemsHausi Müller - Towards Self-Adaptive Software-Intensive Systems
Hausi Müller - Towards Self-Adaptive Software-Intensive SystemsCHOOSE
 
Ralf Laemmel - Not quite a sales pitch for C# 3.0 and .NET's LINQ - 2008-03-05
Ralf Laemmel - Not quite a sales pitch for C# 3.0 and .NET's LINQ - 2008-03-05Ralf Laemmel - Not quite a sales pitch for C# 3.0 and .NET's LINQ - 2008-03-05
Ralf Laemmel - Not quite a sales pitch for C# 3.0 and .NET's LINQ - 2008-03-05CHOOSE
 

Mehr von CHOOSE (14)

Dissecting State-of-the-Art Android Malware Using Static and Dynamic Analysis
Dissecting State-of-the-Art Android Malware Using Static and Dynamic AnalysisDissecting State-of-the-Art Android Malware Using Static and Dynamic Analysis
Dissecting State-of-the-Art Android Malware Using Static and Dynamic Analysis
 
Continuous Architecting of Stream-Based Systems
Continuous Architecting of Stream-Based SystemsContinuous Architecting of Stream-Based Systems
Continuous Architecting of Stream-Based Systems
 
Modelling and Programming: Isn&rsquo;t it all the same?
Modelling and Programming: Isn&rsquo;t it all the same?Modelling and Programming: Isn&rsquo;t it all the same?
Modelling and Programming: Isn&rsquo;t it all the same?
 
Practical Models in Practice
Practical Models in PracticePractical Models in Practice
Practical Models in Practice
 
Services and Models in a Large IT System
Services and Models in a Large IT SystemServices and Models in a Large IT System
Services and Models in a Large IT System
 
Choose'10: Uwe Zdun - Compliance in service-oriented architectures: A model-d...
Choose'10: Uwe Zdun - Compliance in service-oriented architectures: A model-d...Choose'10: Uwe Zdun - Compliance in service-oriented architectures: A model-d...
Choose'10: Uwe Zdun - Compliance in service-oriented architectures: A model-d...
 
Choose'10: Jean-Marie Favre - Domain and Technique Specific Languages – A Jou...
Choose'10: Jean-Marie Favre - Domain and Technique Specific Languages – A Jou...Choose'10: Jean-Marie Favre - Domain and Technique Specific Languages – A Jou...
Choose'10: Jean-Marie Favre - Domain and Technique Specific Languages – A Jou...
 
Choose'10: Stephane Ducasse - Powerful DSL engineering in Smalltalk
Choose'10: Stephane Ducasse - Powerful DSL engineering in SmalltalkChoose'10: Stephane Ducasse - Powerful DSL engineering in Smalltalk
Choose'10: Stephane Ducasse - Powerful DSL engineering in Smalltalk
 
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of TonguesChoose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
Choose'10: Ralf Laemmel - Dealing Confortably with the Confusion of Tongues
 
Ralph Jocham The Risks Of Scrum Handout
Ralph Jocham The Risks Of Scrum HandoutRalph Jocham The Risks Of Scrum Handout
Ralph Jocham The Risks Of Scrum Handout
 
Ralph Jocham The Risks Of Scrum
Ralph Jocham The Risks Of ScrumRalph Jocham The Risks Of Scrum
Ralph Jocham The Risks Of Scrum
 
Denker - Pharo: Present and Future - 2009-07-14
Denker - Pharo: Present and Future - 2009-07-14Denker - Pharo: Present and Future - 2009-07-14
Denker - Pharo: Present and Future - 2009-07-14
 
Hausi Müller - Towards Self-Adaptive Software-Intensive Systems
Hausi Müller - Towards Self-Adaptive Software-Intensive SystemsHausi Müller - Towards Self-Adaptive Software-Intensive Systems
Hausi Müller - Towards Self-Adaptive Software-Intensive Systems
 
Ralf Laemmel - Not quite a sales pitch for C# 3.0 and .NET's LINQ - 2008-03-05
Ralf Laemmel - Not quite a sales pitch for C# 3.0 and .NET's LINQ - 2008-03-05Ralf Laemmel - Not quite a sales pitch for C# 3.0 and .NET's LINQ - 2008-03-05
Ralf Laemmel - Not quite a sales pitch for C# 3.0 and .NET's LINQ - 2008-03-05
 

2008 02 01 Zeller

  • 1. Die Programmierumgebung der Zukunft Andreas Zeller Universität des Saarlandes
  • 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
  • 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$
  • 44.
  • 45.
  • 46. 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()
  • 47. Strukturiertes Lernen Erfolgreiche Läufe Fehlschlagende Läufe add() <init> add() <init> add() isEmpty() ¬isEmpty isEmpty() ¬isEmpty clear() clear() ✔ remove() ↯ Programm Lerner ✔ ↯
  • 48. Modelle Specs Code Traces Profile Tests Lerner e-mail Fehler Aufwand Navigation Versionen Chats
  • 50. Studien Make this Actionable! Rosenberg, L. and Hyatt, L. “Developing An Effective Metrics Program” European Space Agency Software Assurance Symposium, Netherlands, March, 1996
  • 51.
  • 52. 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
  • 53. Wikis Joy of Use Participation Usability Recommendation Social Software Collaboration Perpetual Beta Simplicity Empirie 2.0 Trust Economy Remixability The Long Tail DataDriven
  • 55. Modelle Specs Code Traces Profile Tests Programm-Daten Prozess-Daten e-mail Fehler Aufwand Navigation Versionen Chats
  • 56. Modelle Specs Code Traces Profile Tests Deduktion Induktion e-mail Fehler Aufwand Navigation Versionen Chats
  • 57. Modelle Specs Code Traces Profile Tests e-mail Fehler Aufwand Navigation Versionen Chats
  • 58. Modelle Specs Code Traces Profile Tests e-mail Fehler Aufwand Navigation Versionen Chats
  • 59.
  • 60. Fazit