SlideShare a Scribd company logo
1 of 24
Download to read offline
eROSE
  Guiding Programmers in Eclipse


Thomas Zimmermann, zimmerth@cs.uni-sb.de
                  Saarland University


Joint work with Valentin Dallmeier, Konstantin Halachev,
   Peter Weißgerber, Stephan Diehl, Andreas Zeller
Programming in the Large
                     What’s next?
         Program
         analysis


                                                 27,000 files
                   Missed by
                program analysis

And documentation?   xml   xml   xml   html   html   html


                                                 12,000 files
“Programmers who
changed this function also changed…”
Demo: eROSE
Your task:
Extend Eclipse with a new preference.
Demo: eROSE
You changed the field fKeys[].
eROSE recommends further changes:
Co-Change
40                                 69
                             20
ComparePreferencePage.java        plugin.properties
                                  #
                                  # Preference Page
                                  #
                                  ComparePreferencePage.name= Compare/Patch

              11                  ComparePreferencePage.generalTab.label= &General

                                  ComparePreferencePage.structureCompare.label= &Open
                                  structure compare automatically


              fKeys[]        10
                                  ComparePreferencePage.showMoreInfo.label= &Show
                                  additional compare information in the status line
                                  ComparePreferencePage.ignoreWhitespace.label= Ignore
                                  &white space
                                  ComparePreferencePage.saveBeforePatching.label=
                                  A&utomatically save dirty editors before patching

                                  ComparePreferencePage.filter.description= Enter member
                                  names that should be excluded from 'Compare With Each
                                  Other'.nList is comma separated (e.g. '*.class,
                                  .project, bin/')
                                  ComparePreferencePage.filter.label= &Filtered Members:

                 11               ComparePreferencePage.filter.invalidsegment.error=
                                  Filter is invalid: {0}

                                  ComparePreferencePage.textCompareTab.label= &Text
                                  Compare

         15                       ComparePreferencePage.initiallyShowAncestorPane.label=
                                  Initially show a&ncestor pane
                                  ComparePreferencePage.showPseudoConflicts.label= Show
                                  &pseudo conflicts
                                  ComparePreferencePage.synchronizeScrolling.label=

                             13
        initDefaults()            Synchronize &scrolling between panes in compare viewers
                                  ComparePreferencePage.useSingleLine.label= Connect
                                  &ranges with single line

                                  ComparePreferencePage.preview.label= Preview:
Demo: Co-Change
   buildnotes_compare.html



                                               public API




                               internal files

               Coupling for
ComparePreferencePage.java
      and plugin.properties




                                                            EPOSEE
                                                icons
                                                            www.eposoft.org
Learning from History

       2003-02-19 (aweinand): fixed #13332

       createGeneralPage()
       createTextComparePage()
       fKeys[]
       initDefaults()
       buildnotes_compare.html
       PatchMessages.properties
       plugin.properties        1/47,000
Mining Associations
   #42   fKeys[], initDefaults(), …, plugin.properties, …
  #752   fKeys[], initDefaults(), …, plugin.properties, …
 #9872   fKeys[], initDefaults(), …, plugin.properties, …
#11386   fKeys[], initDefaults(), …
#20814   fKeys[], initDefaults(), …, plugin.properties, …
#30989   fKeys[], initDefaults(), …, plugin.properties, …
#41999   fKeys[], initDefaults(), …, plugin.properties, …
#47423   fKeys[], initDefaults(), …, plugin.properties, …
Mining Associations
     #42 fKeys[], initDefaults(), …, plugin.properties, …
    #752 fKeys[], initDefaults(), …, plugin.properties, …
   #9872 fKeys[], initDefaults(), …, plugin.properties, …
  #11386 fKeys[], initDefaults(), …
  #20814 fKeys[], initDefaults(), …, plugin.properties, …
  #30989 fKeys[], initDefaults(), …, plugin.properties, …
  #41999 fKeys[], initDefaults(), …, plugin.properties, …
{fKeys[], initDefaults()}           {plugin.properties}
  #47423 fKeys[], initDefaults(), …, plugin.properties, …
Support 7, Confidence 7/8 = 0.875
Effective Mining
Changes made by user: A, B

Find transactions that contain A, B:
TxID   Itemset
100    A, B, C
                           TxID   Itemset                      Item   Count
200    A,D
300    A, B, C             100    A, B, C                        A      3       { A, B }
                   find                       group & sort
400    B, D                300    A, B, C                        B      3       { A, B }
500    A, D                700    A, B                           C      2       { A, B, C }
600    B, E
700    A, B




Create recommendations on the fly:
Item    Count
                   { A, B } => { A } is trivial
  A    count = 3
                   { A, B } => { B } is trivial
  B       3
                   { A, B } => { C } has count=2, confidence=2/3 and is strong
  C       2
Demo: Association Rules
Evaluation

         changes             eROSE
                                                  xml
         one item            recommends

User
                     foo()                bar()



       Can eROSE suggest related entities?

       Evaluation using eight open-source projects
       Training: all transactions before evaluation
Precision vs. Recall
What EROSE finds                           What it should find




False positives                               False negatives
                      Correct prediction

     High precision = returned entities are relevant
      High recall = relevant entities are returned
Results #1
                      ENTITIES                   FILES
             Recall   Precision   Top 3 Recall Precision Top 3
   Eclipse    0.34      0.30       0.57 0.36      0.29    0.57
    GCC       0.45      0.31       0.91 0.59      0.35    0.88
    Gimp      0.35      0.30       0.92 0.48      0.28    0.92
    JBoss     0.36      0.31       0.62 0.36      0.19    0.51
     jEdit    0.21      0.31       0.86 0.41      0.31    0.88
  KOffice      0.24      0.23       0.54 0.45      0.30    0.70
 Postgres     0.29      0.29       0.65 0.37      0.29    0.72
  Python      0.37      0.27       0.54 0.46      0.34    0.61
AVERAGE       0.33      0.29       0.70 0.44      0.29    0.72
Results #1
                  ENTITIES                 FILES
           Recall Precision Top 3 Recall Precision Top 3
   Eclipse 0.34     0.30     0.57 0.36      0.29     0.57
      eROSE predicts 33% 0.91 changed 0.35
                             of all 0.59    entities 0.88
    GCC 0.45        0.31
      (files: 44%) 0.30
    Gimp 0.35                0.92 0.48      0.28     0.92
    JBoss70% of all0.31
      In 0.36        transactions, eROSE’s topmost 0.51
                             0.62 0.36      0.19
     jEdit 0.21
      three suggestions contain a 0.41
                    0.31     0.86 changed0.31entity 0.88
  KOffice 0.24
      (files: 72%) 0.23       0.54 0.45      0.30     0.70
 Postgres 0.29      0.29     0.65 0.37      0.29     0.72
  Python 0.37       0.27     0.54 0.46      0.34     0.61
AVERAGE 0.33        0.29     0.70 0.44      0.29     0.72
Results #2
0.8


0.7                                                                                   Likelihood 10


0.6
                                                                                      Feedback

0.5


0.4


0.3
                                                                                      Recall
                                                                                      Precision
0.2


0.1


                                                                                      Txs per Day
 0
      OSS
            (Xmas)



                     (Freeze)
                          2.0
                        2.0.1



                                (Xmas)


                                         2.1


                                               2.1.1



                                                       2.1.2
                                                               (Xmas)

                                                                        2.1.3


                                                                                3.0
                                                                                      Releases
Upcoming: Reorganizer
Upcoming: Reorganizer
Upcoming: HATARI

Movie with
John Wayne
   (1962)

                       Swahili for
                        “Danger”


     Raising Risk Awareness
HATARI: Annotations

“Safe” Location
    (green)


Risky Location
  (dark red)
HATARI: Risk History
Bug, Fix, or both?
                     Change information




  Bug information
Conclusion


The history of a software project
contains a multitude of information.
eROSE recommends related changes.
http://www.st.cs.uni-sb.de/softevo/

More Related Content

What's hot

DynaMine: Finding Common Error Patterns by Mining Software Revision Histories
DynaMine: Finding Common Error Patterns by Mining Software Revision HistoriesDynaMine: Finding Common Error Patterns by Mining Software Revision Histories
DynaMine: Finding Common Error Patterns by Mining Software Revision HistoriesThomas Zimmermann
 
Redux Deep Dive - ReactFoo Pune 2018
Redux Deep Dive - ReactFoo Pune 2018Redux Deep Dive - ReactFoo Pune 2018
Redux Deep Dive - ReactFoo Pune 2018Aziz Khambati
 
Java设置环境变量
Java设置环境变量Java设置环境变量
Java设置环境变量Zianed Hou
 
Elixir: the not-so-hidden path to Erlang
Elixir: the not-so-hidden path to ErlangElixir: the not-so-hidden path to Erlang
Elixir: the not-so-hidden path to ErlangLaura M. Castro
 
Undoing Event-driven Adaptation of Business Processes
Undoing Event-driven Adaptation of Business ProcessesUndoing Event-driven Adaptation of Business Processes
Undoing Event-driven Adaptation of Business ProcessesSébastien Mosser
 
2 introduction toentitybeans
2 introduction toentitybeans2 introduction toentitybeans
2 introduction toentitybeansashishkirpan
 
Teste de Integração com DbUnit e jIntegrity
Teste de Integração com DbUnit e jIntegrityTeste de Integração com DbUnit e jIntegrity
Teste de Integração com DbUnit e jIntegrityWashington Botelho
 
The Language for future-julia
The Language for future-juliaThe Language for future-julia
The Language for future-julia岳華 杜
 
Conf soat tests_unitaires_Mockito_jUnit_170113
Conf soat tests_unitaires_Mockito_jUnit_170113Conf soat tests_unitaires_Mockito_jUnit_170113
Conf soat tests_unitaires_Mockito_jUnit_170113SOAT
 
Talk - Query monad
Talk - Query monad Talk - Query monad
Talk - Query monad Fabernovel
 
Devoxx 2012 hibernate envers
Devoxx 2012   hibernate enversDevoxx 2012   hibernate envers
Devoxx 2012 hibernate enversRomain Linsolas
 
ATG Secure Repository
ATG Secure RepositoryATG Secure Repository
ATG Secure RepositorySanju Thomas
 
Event driven javascript
Event driven javascriptEvent driven javascript
Event driven javascriptFrancesca1980
 

What's hot (20)

DynaMine: Finding Common Error Patterns by Mining Software Revision Histories
DynaMine: Finding Common Error Patterns by Mining Software Revision HistoriesDynaMine: Finding Common Error Patterns by Mining Software Revision Histories
DynaMine: Finding Common Error Patterns by Mining Software Revision Histories
 
Redux Deep Dive - ReactFoo Pune 2018
Redux Deep Dive - ReactFoo Pune 2018Redux Deep Dive - ReactFoo Pune 2018
Redux Deep Dive - ReactFoo Pune 2018
 
Java设置环境变量
Java设置环境变量Java设置环境变量
Java设置环境变量
 
Elixir: the not-so-hidden path to Erlang
Elixir: the not-so-hidden path to ErlangElixir: the not-so-hidden path to Erlang
Elixir: the not-so-hidden path to Erlang
 
Operator overload rr
Operator overload  rrOperator overload  rr
Operator overload rr
 
Vaadin 7
Vaadin 7Vaadin 7
Vaadin 7
 
Undoing Event-driven Adaptation of Business Processes
Undoing Event-driven Adaptation of Business ProcessesUndoing Event-driven Adaptation of Business Processes
Undoing Event-driven Adaptation of Business Processes
 
2 introduction toentitybeans
2 introduction toentitybeans2 introduction toentitybeans
2 introduction toentitybeans
 
Teste de Integração com DbUnit e jIntegrity
Teste de Integração com DbUnit e jIntegrityTeste de Integração com DbUnit e jIntegrity
Teste de Integração com DbUnit e jIntegrity
 
Java
JavaJava
Java
 
The Language for future-julia
The Language for future-juliaThe Language for future-julia
The Language for future-julia
 
Introduction to hibernate
Introduction to hibernateIntroduction to hibernate
Introduction to hibernate
 
I regret nothing
I regret nothingI regret nothing
I regret nothing
 
Conf soat tests_unitaires_Mockito_jUnit_170113
Conf soat tests_unitaires_Mockito_jUnit_170113Conf soat tests_unitaires_Mockito_jUnit_170113
Conf soat tests_unitaires_Mockito_jUnit_170113
 
Talk - Query monad
Talk - Query monad Talk - Query monad
Talk - Query monad
 
Devoxx 2012 hibernate envers
Devoxx 2012   hibernate enversDevoxx 2012   hibernate envers
Devoxx 2012 hibernate envers
 
Ecom lec4 fall16_jpa
Ecom lec4 fall16_jpaEcom lec4 fall16_jpa
Ecom lec4 fall16_jpa
 
ATG Secure Repository
ATG Secure RepositoryATG Secure Repository
ATG Secure Repository
 
Event driven javascript
Event driven javascriptEvent driven javascript
Event driven javascript
 
Google guava
Google guavaGoogle guava
Google guava
 

Similar to eROSE: Guiding programmers in Eclipse

Testing survival Guide
Testing survival GuideTesting survival Guide
Testing survival GuideThilo Utke
 
Behavior driven oop
Behavior driven oopBehavior driven oop
Behavior driven oopPiyush Verma
 
Web-based application development part 31MINIMIZE .docx
Web-based application development part 31MINIMIZE .docxWeb-based application development part 31MINIMIZE .docx
Web-based application development part 31MINIMIZE .docxcelenarouzie
 
Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1Michał Orman
 
Making Django and NoSQL Play Nice
Making Django and NoSQL Play NiceMaking Django and NoSQL Play Nice
Making Django and NoSQL Play NiceAlex Gaynor
 
Testing Legacy Rails Apps
Testing Legacy Rails AppsTesting Legacy Rails Apps
Testing Legacy Rails AppsRabble .
 
Integration Testing With ScalaTest and MongoDB
Integration Testing With ScalaTest and MongoDBIntegration Testing With ScalaTest and MongoDB
Integration Testing With ScalaTest and MongoDBMichal Bigos
 
Rails vs Web2py
Rails vs Web2pyRails vs Web2py
Rails vs Web2pyjonromero
 
JUG Berlin Brandenburg: What's new in Java EE 7?
JUG Berlin Brandenburg: What's new in Java EE 7?JUG Berlin Brandenburg: What's new in Java EE 7?
JUG Berlin Brandenburg: What's new in Java EE 7?gedoplan
 
2011-02-03 LA RubyConf Rails3 TDD Workshop
2011-02-03 LA RubyConf Rails3 TDD Workshop2011-02-03 LA RubyConf Rails3 TDD Workshop
2011-02-03 LA RubyConf Rails3 TDD WorkshopWolfram Arnold
 
Design Summit - Rails 4 Migration - Aaron Patterson
Design Summit - Rails 4 Migration - Aaron PattersonDesign Summit - Rails 4 Migration - Aaron Patterson
Design Summit - Rails 4 Migration - Aaron PattersonManageIQ
 
Javascript unit testing, yes we can e big
Javascript unit testing, yes we can   e bigJavascript unit testing, yes we can   e big
Javascript unit testing, yes we can e bigAndy Peterson
 
Nested subqueries and subquery chaining in openCypher
Nested subqueries and subquery chaining in openCypherNested subqueries and subquery chaining in openCypher
Nested subqueries and subquery chaining in openCypheropenCypher
 
Experiments in genetic programming
Experiments in genetic programmingExperiments in genetic programming
Experiments in genetic programmingLars Marius Garshol
 
Front End Development: The Important Parts
Front End Development: The Important PartsFront End Development: The Important Parts
Front End Development: The Important PartsSergey Bolshchikov
 

Similar to eROSE: Guiding programmers in Eclipse (20)

Refactoring
RefactoringRefactoring
Refactoring
 
Refactoring
RefactoringRefactoring
Refactoring
 
Java beans
Java beansJava beans
Java beans
 
Testing survival Guide
Testing survival GuideTesting survival Guide
Testing survival Guide
 
Behavior driven oop
Behavior driven oopBehavior driven oop
Behavior driven oop
 
Web-based application development part 31MINIMIZE .docx
Web-based application development part 31MINIMIZE .docxWeb-based application development part 31MINIMIZE .docx
Web-based application development part 31MINIMIZE .docx
 
Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1Integration of Backbone.js with Spring 3.1
Integration of Backbone.js with Spring 3.1
 
Making Django and NoSQL Play Nice
Making Django and NoSQL Play NiceMaking Django and NoSQL Play Nice
Making Django and NoSQL Play Nice
 
Testing Legacy Rails Apps
Testing Legacy Rails AppsTesting Legacy Rails Apps
Testing Legacy Rails Apps
 
Integration Testing With ScalaTest and MongoDB
Integration Testing With ScalaTest and MongoDBIntegration Testing With ScalaTest and MongoDB
Integration Testing With ScalaTest and MongoDB
 
Rails vs Web2py
Rails vs Web2pyRails vs Web2py
Rails vs Web2py
 
JUG Berlin Brandenburg: What's new in Java EE 7?
JUG Berlin Brandenburg: What's new in Java EE 7?JUG Berlin Brandenburg: What's new in Java EE 7?
JUG Berlin Brandenburg: What's new in Java EE 7?
 
2011-02-03 LA RubyConf Rails3 TDD Workshop
2011-02-03 LA RubyConf Rails3 TDD Workshop2011-02-03 LA RubyConf Rails3 TDD Workshop
2011-02-03 LA RubyConf Rails3 TDD Workshop
 
Design Summit - Rails 4 Migration - Aaron Patterson
Design Summit - Rails 4 Migration - Aaron PattersonDesign Summit - Rails 4 Migration - Aaron Patterson
Design Summit - Rails 4 Migration - Aaron Patterson
 
Javascript unit testing, yes we can e big
Javascript unit testing, yes we can   e bigJavascript unit testing, yes we can   e big
Javascript unit testing, yes we can e big
 
Java Quiz - Meetup
Java Quiz - MeetupJava Quiz - Meetup
Java Quiz - Meetup
 
Nested subqueries and subquery chaining in openCypher
Nested subqueries and subquery chaining in openCypherNested subqueries and subquery chaining in openCypher
Nested subqueries and subquery chaining in openCypher
 
Practical Celery
Practical CeleryPractical Celery
Practical Celery
 
Experiments in genetic programming
Experiments in genetic programmingExperiments in genetic programming
Experiments in genetic programming
 
Front End Development: The Important Parts
Front End Development: The Important PartsFront End Development: The Important Parts
Front End Development: The Important Parts
 

More from Thomas Zimmermann

Software Analytics = Sharing Information
Software Analytics = Sharing InformationSoftware Analytics = Sharing Information
Software Analytics = Sharing InformationThomas Zimmermann
 
Predicting Method Crashes with Bytecode Operations
Predicting Method Crashes with Bytecode OperationsPredicting Method Crashes with Bytecode Operations
Predicting Method Crashes with Bytecode OperationsThomas Zimmermann
 
Analytics for smarter software development
Analytics for smarter software development Analytics for smarter software development
Analytics for smarter software development Thomas Zimmermann
 
Characterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get ReopenedCharacterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get ReopenedThomas Zimmermann
 
Data driven games user research
Data driven games user researchData driven games user research
Data driven games user researchThomas Zimmermann
 
Not my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignmentsNot my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignmentsThomas Zimmermann
 
Empirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft ResearchEmpirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft ResearchThomas Zimmermann
 
Security trend analysis with CVE topic models
Security trend analysis with CVE topic modelsSecurity trend analysis with CVE topic models
Security trend analysis with CVE topic modelsThomas Zimmermann
 
Analytics for software development
Analytics for software developmentAnalytics for software development
Analytics for software developmentThomas Zimmermann
 
Characterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixedCharacterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixedThomas Zimmermann
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesThomas Zimmermann
 
Cross-project defect prediction
Cross-project defect predictionCross-project defect prediction
Cross-project defect predictionThomas Zimmermann
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesThomas Zimmermann
 
Predicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency GraphsPredicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency GraphsThomas Zimmermann
 
Quality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceQuality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceThomas Zimmermann
 
Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities Thomas Zimmermann
 
Got Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringGot Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringThomas Zimmermann
 

More from Thomas Zimmermann (20)

Software Analytics = Sharing Information
Software Analytics = Sharing InformationSoftware Analytics = Sharing Information
Software Analytics = Sharing Information
 
MSR 2013 Preview
MSR 2013 PreviewMSR 2013 Preview
MSR 2013 Preview
 
Predicting Method Crashes with Bytecode Operations
Predicting Method Crashes with Bytecode OperationsPredicting Method Crashes with Bytecode Operations
Predicting Method Crashes with Bytecode Operations
 
Analytics for smarter software development
Analytics for smarter software development Analytics for smarter software development
Analytics for smarter software development
 
Characterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get ReopenedCharacterizing and Predicting Which Bugs Get Reopened
Characterizing and Predicting Which Bugs Get Reopened
 
Klingon Countdown Timer
Klingon Countdown TimerKlingon Countdown Timer
Klingon Countdown Timer
 
Data driven games user research
Data driven games user researchData driven games user research
Data driven games user research
 
Not my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignmentsNot my bug! Reasons for software bug report reassignments
Not my bug! Reasons for software bug report reassignments
 
Empirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft ResearchEmpirical Software Engineering at Microsoft Research
Empirical Software Engineering at Microsoft Research
 
Security trend analysis with CVE topic models
Security trend analysis with CVE topic modelsSecurity trend analysis with CVE topic models
Security trend analysis with CVE topic models
 
Analytics for software development
Analytics for software developmentAnalytics for software development
Analytics for software development
 
Characterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixedCharacterizing and predicting which bugs get fixed
Characterizing and predicting which bugs get fixed
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development Activities
 
Cross-project defect prediction
Cross-project defect predictionCross-project defect prediction
Cross-project defect prediction
 
Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development Activities
 
Predicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency GraphsPredicting Defects using Network Analysis on Dependency Graphs
Predicting Defects using Network Analysis on Dependency Graphs
 
Quality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceQuality of Bug Reports in Open Source
Quality of Bug Reports in Open Source
 
Meet Tom and his Fish
Meet Tom and his FishMeet Tom and his Fish
Meet Tom and his Fish
 
Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities Predicting Subsystem Defects using Dependency Graph Complexities
Predicting Subsystem Defects using Dependency Graph Complexities
 
Got Myth? Myths in Software Engineering
Got Myth? Myths in Software EngineeringGot Myth? Myths in Software Engineering
Got Myth? Myths in Software Engineering
 

Recently uploaded

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 

Recently uploaded (20)

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

eROSE: Guiding programmers in Eclipse

  • 1. eROSE Guiding Programmers in Eclipse Thomas Zimmermann, zimmerth@cs.uni-sb.de Saarland University Joint work with Valentin Dallmeier, Konstantin Halachev, Peter Weißgerber, Stephan Diehl, Andreas Zeller
  • 2. Programming in the Large What’s next? Program analysis 27,000 files Missed by program analysis And documentation? xml xml xml html html html 12,000 files
  • 3.
  • 4. “Programmers who changed this function also changed…”
  • 5. Demo: eROSE Your task: Extend Eclipse with a new preference.
  • 6. Demo: eROSE You changed the field fKeys[]. eROSE recommends further changes:
  • 7. Co-Change 40 69 20 ComparePreferencePage.java plugin.properties # # Preference Page # ComparePreferencePage.name= Compare/Patch 11 ComparePreferencePage.generalTab.label= &General ComparePreferencePage.structureCompare.label= &Open structure compare automatically fKeys[] 10 ComparePreferencePage.showMoreInfo.label= &Show additional compare information in the status line ComparePreferencePage.ignoreWhitespace.label= Ignore &white space ComparePreferencePage.saveBeforePatching.label= A&utomatically save dirty editors before patching ComparePreferencePage.filter.description= Enter member names that should be excluded from 'Compare With Each Other'.nList is comma separated (e.g. '*.class, .project, bin/') ComparePreferencePage.filter.label= &Filtered Members: 11 ComparePreferencePage.filter.invalidsegment.error= Filter is invalid: {0} ComparePreferencePage.textCompareTab.label= &Text Compare 15 ComparePreferencePage.initiallyShowAncestorPane.label= Initially show a&ncestor pane ComparePreferencePage.showPseudoConflicts.label= Show &pseudo conflicts ComparePreferencePage.synchronizeScrolling.label= 13 initDefaults() Synchronize &scrolling between panes in compare viewers ComparePreferencePage.useSingleLine.label= Connect &ranges with single line ComparePreferencePage.preview.label= Preview:
  • 8. Demo: Co-Change buildnotes_compare.html public API internal files Coupling for ComparePreferencePage.java and plugin.properties EPOSEE icons www.eposoft.org
  • 9. Learning from History 2003-02-19 (aweinand): fixed #13332 createGeneralPage() createTextComparePage() fKeys[] initDefaults() buildnotes_compare.html PatchMessages.properties plugin.properties 1/47,000
  • 10. Mining Associations #42 fKeys[], initDefaults(), …, plugin.properties, … #752 fKeys[], initDefaults(), …, plugin.properties, … #9872 fKeys[], initDefaults(), …, plugin.properties, … #11386 fKeys[], initDefaults(), … #20814 fKeys[], initDefaults(), …, plugin.properties, … #30989 fKeys[], initDefaults(), …, plugin.properties, … #41999 fKeys[], initDefaults(), …, plugin.properties, … #47423 fKeys[], initDefaults(), …, plugin.properties, …
  • 11. Mining Associations #42 fKeys[], initDefaults(), …, plugin.properties, … #752 fKeys[], initDefaults(), …, plugin.properties, … #9872 fKeys[], initDefaults(), …, plugin.properties, … #11386 fKeys[], initDefaults(), … #20814 fKeys[], initDefaults(), …, plugin.properties, … #30989 fKeys[], initDefaults(), …, plugin.properties, … #41999 fKeys[], initDefaults(), …, plugin.properties, … {fKeys[], initDefaults()} {plugin.properties} #47423 fKeys[], initDefaults(), …, plugin.properties, … Support 7, Confidence 7/8 = 0.875
  • 12. Effective Mining Changes made by user: A, B Find transactions that contain A, B: TxID Itemset 100 A, B, C TxID Itemset Item Count 200 A,D 300 A, B, C 100 A, B, C A 3 { A, B } find group & sort 400 B, D 300 A, B, C B 3 { A, B } 500 A, D 700 A, B C 2 { A, B, C } 600 B, E 700 A, B Create recommendations on the fly: Item Count { A, B } => { A } is trivial A count = 3 { A, B } => { B } is trivial B 3 { A, B } => { C } has count=2, confidence=2/3 and is strong C 2
  • 14. Evaluation changes eROSE xml one item recommends User foo() bar() Can eROSE suggest related entities? Evaluation using eight open-source projects Training: all transactions before evaluation
  • 15. Precision vs. Recall What EROSE finds What it should find False positives False negatives Correct prediction High precision = returned entities are relevant High recall = relevant entities are returned
  • 16. Results #1 ENTITIES FILES Recall Precision Top 3 Recall Precision Top 3 Eclipse 0.34 0.30 0.57 0.36 0.29 0.57 GCC 0.45 0.31 0.91 0.59 0.35 0.88 Gimp 0.35 0.30 0.92 0.48 0.28 0.92 JBoss 0.36 0.31 0.62 0.36 0.19 0.51 jEdit 0.21 0.31 0.86 0.41 0.31 0.88 KOffice 0.24 0.23 0.54 0.45 0.30 0.70 Postgres 0.29 0.29 0.65 0.37 0.29 0.72 Python 0.37 0.27 0.54 0.46 0.34 0.61 AVERAGE 0.33 0.29 0.70 0.44 0.29 0.72
  • 17. Results #1 ENTITIES FILES Recall Precision Top 3 Recall Precision Top 3 Eclipse 0.34 0.30 0.57 0.36 0.29 0.57 eROSE predicts 33% 0.91 changed 0.35 of all 0.59 entities 0.88 GCC 0.45 0.31 (files: 44%) 0.30 Gimp 0.35 0.92 0.48 0.28 0.92 JBoss70% of all0.31 In 0.36 transactions, eROSE’s topmost 0.51 0.62 0.36 0.19 jEdit 0.21 three suggestions contain a 0.41 0.31 0.86 changed0.31entity 0.88 KOffice 0.24 (files: 72%) 0.23 0.54 0.45 0.30 0.70 Postgres 0.29 0.29 0.65 0.37 0.29 0.72 Python 0.37 0.27 0.54 0.46 0.34 0.61 AVERAGE 0.33 0.29 0.70 0.44 0.29 0.72
  • 18. Results #2 0.8 0.7 Likelihood 10 0.6 Feedback 0.5 0.4 0.3 Recall Precision 0.2 0.1 Txs per Day 0 OSS (Xmas) (Freeze) 2.0 2.0.1 (Xmas) 2.1 2.1.1 2.1.2 (Xmas) 2.1.3 3.0 Releases
  • 21. Upcoming: HATARI Movie with John Wayne (1962) Swahili for “Danger” Raising Risk Awareness
  • 22. HATARI: Annotations “Safe” Location (green) Risky Location (dark red)
  • 23. HATARI: Risk History Bug, Fix, or both? Change information Bug information
  • 24. Conclusion The history of a software project contains a multitude of information. eROSE recommends related changes. http://www.st.cs.uni-sb.de/softevo/