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

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
Sébastien Mosser
 

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

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
celenarouzie
 
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
Michał Orman
 
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
Andy Peterson
 

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

Analytics for software development
Analytics for software developmentAnalytics for software development
Analytics for software development
Thomas 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

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
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
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
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
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 

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/