Top Banner
Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez, Kamal Hossen, Hoang Dang, Huzefa Kagdi, Malcom Gethers, Denys Poshyvanyk
55

Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Apr 11, 2018

Download

Documents

dangminh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ?

Mario Linares-Vásquez, Kamal Hossen, Hoang Dang, Huzefa Kagdi, Malcom Gethers, Denys Poshyvanyk

Page 2: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Recommending developers

Denys?

Mario?

Malcom?

Huzefa?

Kamal?

Hoang?

..........

Page 3: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Open source projects

http://blog.qa.ubuntu.com/qapkgstatus/

0

200

400

600

800

Firefox 3.5 Thunderbird Samba OpenOffice

Bug

s

Packages in Ubuntu (09/22/12)

New Triaged

Page 4: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Open source projects

http://blog.qa.ubuntu.com/qapkgstatus/

0

200

400

600

800

Firefox 3.5 Thunderbird Samba OpenOffice

Bug

s

Packages in Ubuntu (09/22/12)

New Triaged

Page 5: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Imagine you are a project manager...

Denys

Mario

Malcom

Huzefa

Kamal

Hoang

You

200 Change requests

and more are coming.... ..........

Page 6: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Imagine you are a project manager...

Denys

Malcom

Huzefa

Kamal

Hoang

You

200 Change requests

and more are coming....

Mario

..........

Page 7: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Imagine you are a project manager...

Denys

Malcom

Huzefa

Kamal

Hoang

You

200 Change requests

and more are coming....

Mario

..........

The copy-paste feature is not working when a html table is

copied directly from .....

Page 8: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Imagine you are a project manager...

Denys

Hey Doc.. Could you fix this bug ??

Page 9: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Imagine you are a project manager...

Denys

Hey Doc.. Could you fix this bug ??

Not mine.. please talk to Huzefa. He is the guy

Page 10: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Imagine you are a project manager...

Denys

Hey Doc.. Could you fix this bug ??

Not mine.. please talk to Huzefa. He is the guy

Huzefa.. Could you fix this bug ??

Huzefa

Page 11: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Imagine you are a project manager...

Denys

Hey Doc.. Could you fix this bug ??

Not mine.. please talk to Huzefa. He is the guy

Huzefa.. Could you fix this bug ??

HuzefaSorry man. I was watching the EuroCup final... Mario is in charge of

the copy-paste feature

Page 12: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Imagine you are a project manager...

Denys

Hey Doc.. Could you fix this bug ??

Not mine.. please talk to Huzefa. He is the guy

Huzefa.. Could you fix this bug ??

HuzefaSorry man. I was watching the EuroCup final... Mario is in charge of

the copy-paste feature

however... Mario is on holiday at Cartagena....

U U_

Page 13: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Challenges

You should know the features implemented in the application

You should know the skills of your developers

You should know about commit and change request history

Page 14: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Challenges

You should know the features implemented in the application.

You should know the skills of your developers

You should know about commit and change request history

What if the system is an open source project ?

Page 15: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Challenges

You should know the features implemented in the application.

You should know your developers skills.

You should know commit and change requests history.

What if the system is an open source project ?

..or you have to deal with many incoming change requests every day?

Page 16: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Challenges

You should know the features implemented in the application.

You should know your developers skills.

You should know commit and change requests history.

What if the system is an open source project ?

..or you have to deal with many incoming change requests every day?

Do you still have time to assign change requests manually?

Page 17: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Recommending developers

ICSE 2006 - Anvik et al.

Page 18: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Recommending developers

ICSM 2008 - Kagdi et al.

Page 19: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Recommending developers

ICPC 2009 - Kagdi and Poshyvanyk

Page 20: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Recommending developers

FSE 2009 - Jeong et al.

Page 21: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Recommending developers

FSE 2011 - Tamrawi et al.

Page 22: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Our motivation...

Previous approaches require mining of either commit or change request repositories

Location of relevant files using solely LSI is prone to false positives

Page 23: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Our motivation...

Could we assign developers to change requests without mining repositories ?

Previous approaches require mining of either commit or change request repositories

Location of relevant files using solely LSI is prone to false positives

Page 24: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Our premise..... Code authorship

!

Authors are typically found in the header comments of source code

entities

Page 25: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Our premise..... Code authorship

!

Page 26: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Our premise..... Code authorship

!

Authors of source code entitiesare best equipped to tackle any

changes needed in them

Page 27: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Our solution...

1. Find the relevant code for a given change request using an IR based

concept location technique

Page 28: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Our solution...

Argo UML bug #4078: Operation box in CallAction proppanel is too small

Page 29: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Our solution...

Argo UML bug #4078: Operation box in CallAction proppanel is too small

Release/version wherethe bug was reported

Page 30: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Our solution...

Argo UML bug #4078: Operation box in CallAction proppanel is too small

LSI 0.3 0.5... 0.10.1 0.4... 0.9.....................0.6 0.1... 0.2

Release/version wherethe bug was reported

Page 31: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Our solution...

Argo UML bug #4078: Operation box in CallAction proppanel is too small

LSI 0.3 0.5... 0.10.1 0.4... 0.9.....................0.6 0.1... 0.2

1. mdr/CommonBehaviorHelperMDRImpl.java2. uml/OperationNotationUml.java3. common_behavior/PropPanelCallAction.java

......10. mdr/CommonBehaviorFactoryMDRImpl.java

......

Top files relevant to the bug

Release/version wherethe bug was reported

Page 32: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Our solution...

2. Extract authorship information from relevant code to recommend a ranked

list of developers.

Page 33: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Our solution...

Argo UML bug #4078: Operation box in CallAction proppanel is too small

LSI 0.3 0.5... 0.10.1 0.4... 0.9.....................0.6 0.1... 0.2

1. mdr/CommonBehaviorHelperMDRImpl.java2. uml/OperationNotationUml.java3. common_behavior/PropPanelCallAction.java

......10. mdr/CommonBehaviorFactoryMDRImpl.java

......

Top files relevant to the bug

1. tfmorris, rastaman2. mvw, jaap3. mvw

......10. tfmorris, rastaman, thierrylach

Release/version wherethe bug was reported

Authors extracted from relevant files

Page 34: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Our solution...

Argo UML bug #4078: Operation box in CallAction proppanel is too small

Release/version wherethe bug was reported

LSI 0.3 0.5... 0.10.1 0.4... 0.9.....................0.6 0.1... 0.2

1. mdr/CommonBehaviorHelperMDRImpl.java2. uml/OperationNotationUml.java3. common_behavior/PropPanelCallAction.java

......10. mdr/CommonBehaviorFactoryMDRImpl.java

......

Top files relevant to the bug

Authors extracted from relevant files

1. tfmorris, rastaman2. mvw, jaap3. mvw

......10. tfmorris, rastaman, thierrylach

Final ranked list1. mvw (5)2. tfmorris (3)3. rastaman (2)

......8. thierrylach (1)

Page 35: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Our solution...

Argo UML bug #4078: Operation box in CallAction proppanel is too small

Release/version wherethe bug was reported

LSI 0.3 0.5... 0.10.1 0.4... 0.9.....................0.6 0.1... 0.2

1. mdr/CommonBehaviorHelperMDRImpl.java2. uml/OperationNotationUml.java3. common_behavior/PropPanelCallAction.java

......10. mdr/CommonBehaviorFactoryMDRImpl.java

......

Top files relevant to the bug

Authors extracted from relevant files

1. tfmorris, rastaman2. mvw, jaap3. mvw

......10. tfmorris, rastaman, thierrylach

Final ranked list1. mvw (5)2. tfmorris (3)3. rastaman (2)

......8. thierrylach (1)

In fact, the bug was fixed by mvw.

Page 36: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Research questions

RQ1: How does the accuracy of our approach compare to the other techniques based on software repository mining [Anvik et al. 2006, Kagdi and Poshyvanyk 2009]?

RQ2: Is there an impact of filtering IR-based results using execution traces on the proposed approach?

Page 37: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Software systems and benchmarks

System Version LOC Files Methods Terms Change requests (goldset)

jEdit 4.3 103896 503 6413 4372 143

ArgoUML 0.22 148892 1439 11000 5488 91

muCommander 0.8.5 76649 1069 8187 4262 92

Page 38: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Evaluation metrics

Precision: proportion of the correctly recommended developers over the total of recommendations.

Recall: proportion of the correctly recommended developers over the total of correct developers.

Correctdevelopers

Recommendation

Correctly recommendeddevelopers

Page 39: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Results (ArgoUML)

0

0.150

0.300

0.450

0.600

0 0.2 0.4 0.5 0.7

Avg

. Pre

cisi

on

Avg. Recall

Page 40: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Results (ArgoUML)

0

0.150

0.300

0.450

0.600

0 0.2 0.4 0.5 0.7

Avg

. Pre

cisi

on

Avg. Recall

Top 1developer

Page 41: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Results (ArgoUML)

0

0.150

0.300

0.450

0.600

0 0.2 0.4 0.5 0.7

Avg

. Pre

cisi

on

Avg. Recall

Top 10developers

Page 42: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Authorship vs Machine Learning (ArgoUML)

0

0.150

0.300

0.450

0.600

0 0.25 0.50 0.75 1.00

Avg

. Pre

cisi

on

Avg. Recall

Authorship Machine Learning

Page 43: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Authorship vs IR-based (ArgoUML)

0

0.150

0.300

0.450

0.600

0 0.23 0.45 0.68 0.90

Avg

. Pre

cisi

on

Recall

Authorship IR-based

Page 44: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Authorship vs Machine Learning (JEdit)

0

0.038

0.075

0.113

0.150

0 0.175 0.350 0.525 0.700

Avg

. Pre

cisi

on

Avg. Recall

Authorship Machine Learning

Page 45: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Authorship vs IR-based (JEdit)

0

0.05

0.10

0.15

0.20

0 0.225 0.450 0.675 0.900

Avg

. Pre

cisi

on

Avg. Recall

Authorship IR-based

Page 46: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Authorship vs Machine Learning (MuCommander)

0

0.175

0.350

0.525

0.700

0 0.225 0.450 0.675 0.900

Avg

. Pre

cisi

on

Avg. Recall

Authorship Machine Learning

Page 47: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Authorship vs IR-based (MuCommander)

0

0.175

0.350

0.525

0.700

0 0.25 0.50 0.75 1.00

Avg

. Pre

cisi

on

Avg. Recall

Authorship IR-based

Page 48: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Authorship vs Authorship+traces (ArgoUML)

0

0.150

0.300

0.450

0.600

0 0.20 0.40 0.60 0.80

Pre

cisi

on

Avg. Recall

Authorship Authorship+traces

Page 49: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Authorship vs Authorship+traces (JEdit)

0

0.038

0.075

0.113

0.150

0 0.18 0.35 0.53 0.70

Avg

. Pre

cisi

on

Avg. Recall

Authorship Authorship+traces

Page 50: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Authorship vs Authorship+traces (MuCommander)

0

0.175

0.350

0.525

0.700

0 0.23 0.45 0.68 0.90

Avg

. Pre

cisi

on

Avg. Recall

Authorship Authorship+traces

Page 51: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Statistically Significant Difference

RQ1:

Authorship vs. Machine Learning: statistically significant differences between precisions on JEdit and MuCommander

Authorship vs. IR-based: statistically significant differences between precisions on MuCommander

Page 52: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Statistically Significant Difference

RQ2:

No statistically significant difference between authorship and using execution traces for filtering relevant files

Page 53: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Conclusions

Our approach does not require mining of either a bug or commit repository

Our approach perform as well as, or better than, the two other approaches in terms of recommendation accuracy

Additional overhead of dynamic analysis was not justified

Page 54: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

We are working on...

Page 55: Triaging Incoming Change Requests: Bug or Commit …denys/pubs/talks/ICSM'12-TriagingChange...Triaging Incoming Change Requests: Bug or Commit History, or Code Authorship ? Mario Linares-Vásquez,

Presentation YOU

Questions ??

IntroFiguresExperimentsResultsConclusion