Using Information Fragments to Answer the Questions Developers Ask
description
Transcript of Using Information Fragments to Answer the Questions Developers Ask
![Page 1: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/1.jpg)
Using Information Fragments to Answer the Questions
Developers Ask
Thomas Fritz and Gail C. Murphy
University of British Columbia
![Page 2: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/2.jpg)
2
Who is working on what?
What is the evolution of the code?
What [have] people done lately?What classes has my team
been working on?
Who is working on the same classes as I am and for which work item?
Who has made changes to my classes?
What classes have been changed?
Which features and functions have been changing?
Has progress been made on blockers (blocking work items)
in your milestone?
What caused this build to break?
Who owns a test case?
Which API has changed?
Who owns this piece of code?
How is the team organized?
![Page 3: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/3.jpg)
3
Who is working on what?
What is the evolution of the code?
What [have] people done lately?What classes has my team
been working on?
Who is working on the same classes as I am and for which work item?
Who has made changes to my classes?
What classes have been changed?
Which features and functions have been changing?
Has progress been made on blockers (blocking work items)
in your milestone?
What caused this build to break?
Who owns a test case?
Which API has changed?
Who owns this piece of code?
How is the team organized?
Test
Who
people team
Who Who
Who
Who
team
Team
![Page 4: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/4.jpg)
4
Who is working on what?
What is the evolution of the code?
What [have] people done lately?What classes has my team
been working on?
Who is working on the same classes as I am and for which work item?
Who has made changes to my classes?
What classes have been changed?
Which features and functions have been changing?
Has progress been made on blockers (blocking work items)
in your milestone?
What caused this build to break?
Who owns a test case?
Which API has changed?
Who owns this piece of code?
How is the team organized?
Test
what
features
work item
blockers
What
What
Team
Work Items
![Page 5: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/5.jpg)
5
Who is working on what?
What is the evolution of the code?
What [have] people done lately?What classes has my team
been working on?
Who is working on the same classes as I am and for which work item?
Who has made changes to my classes?
What classes have been changed?
Which features and functions have been changing?
Has progress been made on blockers (blocking work items)
in your milestone?
What caused this build to break?
Who owns a test case?
Which API has changed?
Who owns this piece of code?
How is the team organized?
Test
changing
changed
changes
changed
evolution
Changes
progress
Team
Work Items
![Page 6: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/6.jpg)
6
Who is working on what?
What is the evolution of the code?
What [have] people done lately?What classes has my team
been working on?
Who is working on the same classes as I am and for which work item?
Who has made changes to my classes?
What classes have been changed?
Which features and functions have been changing?
Has progress been made on blockers (blocking work items)
in your milestone?
What caused this build to break?
Who owns a test case?
Which API has changed?
Who owns this piece of code?
How is the team organized?
Test
API
classes
classes classes
codeCode
classes
code
ChangesTeam
Work Items
![Page 7: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/7.jpg)
7
Code
ChangesTeam
Work Items
TeamChanges
Work Items
Code
![Page 8: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/8.jpg)
8
TeamChanges
Code
Work Items
![Page 9: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/9.jpg)
9
TeamChanges
Code
Work Items
Can we automate the integration of information
from multiple domains?
![Page 10: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/10.jpg)
10
![Page 11: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/11.jpg)
11
“What has my team been working on?”
Team Fragment
![Page 12: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/12.jpg)
12
“What has my team been working on?”
Work Item Fragment
![Page 13: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/13.jpg)
13
“What has my team been working on?”
Change Set Fragment
![Page 14: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/14.jpg)
14
“What has my team been working on?”
Source Code Fragment
![Page 15: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/15.jpg)
15
“What has my team been working on?”
![Page 16: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/16.jpg)
16
“What has my team been working on?”
![Page 17: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/17.jpg)
17
Team Fragment
Work Item Fragment
Change Set Fragment
Source Code Fragment
“What has my team been working on?”
![Page 18: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/18.jpg)
18
Information Fragment Model
Defect 303
WI 315
Work Item Fragment
id
Team Fragment
David
Julie
Allen
Φ(,)
Φ (,)
Presentation 1
Presentation 2
Composition
![Page 19: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/19.jpg)
19
Information Fragments
Subset of information
F =(V, E, lF )
WI 315: Can’t ...id: 315owner: David
duplicate of
D303: Popup can ...id: 303owner: Julie
V: uniquely identifiable items with domain, type and properties
E: relationships between nodes
l F : mapping V → {Fragments}
![Page 20: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/20.jpg)
20
Composition
F' : union of input fragments (nodes/edges)
+ newly created edges based on properties
Julie
id: Julie
FWI
WI 315: Can’t ...id: 315owner: David
D303: Popup can ...id: 303owner: Julie
David
id: David
Allen
id: Allen
FT
owner
owner duplicate of
idF' =
![Page 21: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/21.jpg)
21
Presentation
WI 315
D 303David
Julie
WI 316
Φ (t, wi)
Φ(wi, t)
owner
owner
creator
creator, owner
Allen
![Page 22: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/22.jpg)
22
![Page 23: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/23.jpg)
23
Who is working on what?
What is the evolution of the code?
What [have] people done lately?What classes has my team
been working on?
Who is working on the same classes as I am and for which work item?
Who has made changes to my classes?
What classes have been changed?
Which features and functions have been changing?
Has progress been made on blockers (blocking work items)
in your milestone?
What caused this build to break?
Who owns a test case?
Which API has changed?
Who owns this piece of code?
How is the team organized?
Information Fragment
Model
![Page 24: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/24.jpg)
24
1. Can developers use the model to answer the questions?
1. A2. Can developers use the model effectively
without detailed understanding of the model ?
Multiple Cases Study with 18 professional developers
Evaluating our Model
![Page 25: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/25.jpg)
25
Source Code
Change Sets
Teams
Work Items
(1) What classes have been changed? X X(2) Who has made changes to my classes? X X X(3) What has changed between two builds and who
has changed it?X X X
(4) What have people been working on? X X(5) What classes has my team been working on? X X X X(6) What’s the most popular class? (changed most) X X(7) Who owns this piece of code? (modified most) X X X(8) How do recently delivered changes affect changes
that I am working on?X X
Evaluation – Method
• 8 questions from original 78 to cover domains of interest
![Page 26: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/26.jpg)
26
Evaluation – Method
• Questions made more specific to reduce interpretations and match available data
“What classes has my team been working on?”
Yesterday, on which classes (of the SCM code) have Alex and Allen on the SCM team been
working on and why? For each developer name one class and
the reason for the change.
• 10-15 minute tutorial
• 18 developers from 4 different teams
• 8 questions from original 78 to cover domains of interest
![Page 27: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/27.jpg)
27
Evaluation – Prototype
![Page 28: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/28.jpg)
28
Evaluation – Results (Success)
(1) (2) (3) (4) (5) (6) (7) (8)0
6
12
18
Questions
# S
ub
ject
s
94%success
Failure
Hint Given
Success
![Page 29: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/29.jpg)
29
(1) (2) (3) (4) (5) (6) (7) (8)0
2.5
5
7.5
10
Questions
Tim
e (i
n m
inu
tes)
Evaluation – Results (Time)
mean time2.3 mins
![Page 30: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/30.jpg)
30
1. Can developers use the model to answer the questions?
2. Can developers use the model effectively without detailed understanding of the model?
• 94 % success rate• 2.3 mins mean time• 10 – 15 mins training• hint given in only 9 cases (6%)
Evaluation – Results
pp
![Page 31: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/31.jpg)
31
Easy to use
Evaluation – User Comments
“I throw everything in and reorder it [...] and see if it seems reasonable.”
Answers multi-domain questions
“for this type of thing I never really thought of trying to solve these problems [...], I try and find
some obscure way [instead]?”
“it is answering questions that I don’t think we can answer right now”
![Page 32: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/32.jpg)
32
Understanding links takes time
Evaluation – User Comments
“lot of trial and error”, but “made sense in the end”
Participants liked the tool
“pretty nifty”
“pretty cool”
“cool”
“neat tool”“definitely useful”
“really really cool”
“well done”
![Page 33: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/33.jpg)
33
Evaluation – Threats
Predefined information fragments
8 questions may not be representative
Unfamiliar data
![Page 34: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/34.jpg)
34
Discussion
How to best select information fragments?– actual selection– predefined
Is it possible to automatically choose composition?
![Page 35: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/35.jpg)
35
Related Work
Following information linksFeldspar [Chau et al. 2008], JQuery [Janzen et al. 2003]
Querying for informationRelational views [Linton 1984], CodeQuest [Hajiyev et al. 2006]
Automatically linking informationHipikat [Cubranic et al. 2005], Deep Intellisense [Holmes et al. 2008]
Composing different informationFerret [de Alwis et al. 2008]
![Page 36: Using Information Fragments to Answer the Questions Developers Ask](https://reader035.fdocuments.us/reader035/viewer/2022062305/56816069550346895dcf9357/html5/thumbnails/36.jpg)
36
Who is working on what?
What is the evolution of the code?
What [have] people done lately?What classes has my team
been working on?
Who is working on the same classes as I am and for which work item?
Who has made changes to my classes?
What classes have been changed?
Which features and functions have been changing?
Has progress been made on blockers (blocking work items)
in your milestone?
What caused this build to break?
Who owns a test case?
Which API has changed?
Who owns this piece of code?
How is the team organized?
Information Fragment
Model