using information fragments to answer the questions developers ask

36
Using Information Fragments to Answer the Questions Developers Ask Thomas Fritz and Gail C. Murphy University of British Columbia

Upload: jude

Post on 22-Feb-2016

59 views

Category:

Documents


0 download

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

TRANSCRIPT

Page 1: Using Information Fragments to Answer the Questions Developers Ask

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

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

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

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

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

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

7

Code

ChangesTeam

Work Items

TeamChanges

Work Items

Code

Page 8: Using Information Fragments to Answer the Questions Developers Ask

8

TeamChanges

Code

Work Items

Page 9: Using Information Fragments to Answer the Questions Developers Ask

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

10

Page 11: Using Information Fragments to Answer the Questions Developers Ask

11

“What has my team been working on?”

Team Fragment

Page 12: Using Information Fragments to Answer the Questions Developers Ask

12

“What has my team been working on?”

Work Item Fragment

Page 13: Using Information Fragments to Answer the Questions Developers Ask

13

“What has my team been working on?”

Change Set Fragment

Page 14: Using Information Fragments to Answer the Questions Developers Ask

14

“What has my team been working on?”

Source Code Fragment

Page 15: Using Information Fragments to Answer the Questions Developers Ask

15

“What has my team been working on?”

Page 16: Using Information Fragments to Answer the Questions Developers Ask

16

“What has my team been working on?”

Page 17: Using Information Fragments to Answer the Questions Developers Ask

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

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

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

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

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

22

Page 23: Using Information Fragments to Answer the Questions Developers Ask

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

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

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

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

27

Evaluation – Prototype

Page 28: Using Information Fragments to Answer the Questions Developers Ask

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

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

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

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

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

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

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

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

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