View
59
Download
0
Category
Tags:
Preview:
DESCRIPTION
Using Information Fragments to Answer the Questions Developers Ask. Thomas Fritz and Gail C. Murphy. University of British Columbia. What is the evolution of the code?. Which features and functions have been changing?. Who owns this piece of code? . What [have] people done lately?. - PowerPoint PPT Presentation
Citation preview
Using Information Fragments to Answer the Questions
Developers Ask
Thomas Fritz and Gail C. Murphy
University of British Columbia
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?
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
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
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
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
7
Code
ChangesTeam
Work Items
TeamChanges
Work Items
Code
8
TeamChanges
Code
Work Items
9
TeamChanges
Code
Work Items
Can we automate the integration of information
from multiple domains?
10
11
“What has my team been working on?”
Team Fragment
12
“What has my team been working on?”
Work Item Fragment
13
“What has my team been working on?”
Change Set Fragment
14
“What has my team been working on?”
Source Code Fragment
15
“What has my team been working on?”
16
“What has my team been working on?”
17
Team Fragment
Work Item Fragment
Change Set Fragment
Source Code Fragment
“What has my team been working on?”
18
Information Fragment Model
Defect 303
WI 315
Work Item Fragment
id
Team Fragment
David
Julie
Allen
Φ(,)
Φ (,)
Presentation 1
Presentation 2
Composition
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}
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' =
21
Presentation
WI 315
D 303David
Julie
WI 316
Φ (t, wi)
Φ(wi, t)
owner
owner
creator
creator, owner
Allen
22
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
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
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
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
27
Evaluation – Prototype
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
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
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
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”
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”
33
Evaluation – Threats
Predefined information fragments
8 questions may not be representative
Unfamiliar data
34
Discussion
How to best select information fragments?– actual selection– predefined
Is it possible to automatically choose composition?
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]
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
Recommended