Measuring Navigation Efficiency in the IDE

47
Measuring Navigation Efficiency in the IDE Roberto Minelli, Andrea Mocci, Michele Lanza REVEAL @ Faculty of Informatics University of Lugano, Switzerland @robertominelli

Transcript of Measuring Navigation Efficiency in the IDE

Page 1: Measuring Navigation Efficiency in the IDE

Measuring Navigation Efficiency in the IDE

Roberto Minelli, Andrea Mocci, Michele Lanza REVEAL @ Faculty of InformaticsUniversity of Lugano, Switzerland

@robertominelli

Page 2: Measuring Navigation Efficiency in the IDE

What is Interaction Data?

developer IDE

Page 3: Measuring Navigation Efficiency in the IDE

What is Interaction Data?

developer IDE

nav

igat

e

Page 4: Measuring Navigation Efficiency in the IDE

What is Interaction Data?

developer IDE

nav

igat

e

edit

Page 5: Measuring Navigation Efficiency in the IDE

What is Interaction Data?

developer IDE

nav

igat

e

edit

insp

ect

Page 6: Measuring Navigation Efficiency in the IDE

What is Interaction Data?

developer IDE

nav

igat

e

use

r in

pu

t

edit

insp

ect

Page 7: Measuring Navigation Efficiency in the IDE

What is Interaction Data?

developer IDE

nav

igat

e

user

inte

rfac

e

use

r in

pu

t

edit

insp

ect

Page 8: Measuring Navigation Efficiency in the IDE

What is Interaction Data?

developer IDE

nav

igat

e

user

inte

rfac

e

use

r in

pu

t

edit

insp

ect

interaction data

Page 9: Measuring Navigation Efficiency in the IDE

DFlow: Interaction Profiler

developer IDE

nav

igat

e

user

inte

rfac

e

use

r in

pu

t

edit

insp

ect

interaction data

DFlow

I know what you did last summer: An investigation of how developers spend their time

R. Minelli, A. Mocci, M. Lanza ICPC 2015, pp. 25–35

Page 10: Measuring Navigation Efficiency in the IDE

DFlow: Conceptual Model

Page 11: Measuring Navigation Efficiency in the IDE

DFlow: Conceptual Model

Event

TimestampWindow ID

Page 12: Measuring Navigation Efficiency in the IDE

DFlow: Conceptual Model

Entities

Meta Event

Navigation Event Inspect Event Edit Event

Event

TimestampWindow ID

Page 13: Measuring Navigation Efficiency in the IDE

DFlow: Conceptual Model

Position

User Input Event

Attributes

Mouse Event

Key Combination

Keystroke Event

Mouse Moved Mouse Button Mouse Wheel

DirectionButton IDStart PointEnd Point

Entities

Meta Event

Navigation Event Inspect Event Edit Event

Event

TimestampWindow ID

Page 14: Measuring Navigation Efficiency in the IDE

DFlow: Conceptual Model

Position

User Input Event

Attributes

Mouse Event

Key Combination

Keystroke Event

Mouse Moved Mouse Button Mouse Wheel

DirectionButton IDStart PointEnd Point

User Interface Event

Attributes

Window Event

Window Collapsed Window ExpandedWindow Moved Window Resized

Window Activated Window Closed Window LabelledWindow Opened

Old LabelNew Label

Initial PositionInitial Extent

Old PositionNew Position

Old SizeNew Size

Entities

Meta Event

Navigation Event Inspect Event Edit Event

Event

TimestampWindow ID

Page 15: Measuring Navigation Efficiency in the IDE

Our Dataset

765 sessions

6 developers

211k total events

>500 h total time

40 min avg. session duration

214 (29) navigation events (entities)

11 (5) edit events (entities)

51 (7) inspect events (entities)

Page 16: Measuring Navigation Efficiency in the IDE

Navigation Efficiency

Page 17: Measuring Navigation Efficiency in the IDE

ideal navigation effort

real navigation effort

Navigation Efficiency

Page 18: Measuring Navigation Efficiency in the IDE

ideal navigation effort

real navigation effort

Navigation EfficiencyNumber of

Navigation Events

Page 19: Measuring Navigation Efficiency in the IDE

ideal navigation effort

real navigation effort

Navigation EfficiencyNumber of

Navigation Events

?

Page 20: Measuring Navigation Efficiency in the IDE

Ideal Navigation Effort

The sum of the navigation costsneeded to reach the edited entities

Page 21: Measuring Navigation Efficiency in the IDE

Ideal Navigation Effort

The sum of the navigation costsneeded to reach the edited entities

Page 22: Measuring Navigation Efficiency in the IDE

Navigating Source Code

Page 23: Measuring Navigation Efficiency in the IDE

Navigating Source Code

package

Page 24: Measuring Navigation Efficiency in the IDE

Navigating Source Code

package class

Page 25: Measuring Navigation Efficiency in the IDE

Navigating Source Code

package class protocol

Page 26: Measuring Navigation Efficiency in the IDE

Navigating Source Code

package class methodprotocol

source code

Page 27: Measuring Navigation Efficiency in the IDE

Navigating Source Code

package class methodprotocol

cost = 1 cost = 2 cost = 3 cost = 4

Page 28: Measuring Navigation Efficiency in the IDE

Navigating Source Code (alternative)

Page 29: Measuring Navigation Efficiency in the IDE

Navigating Source Code (alternative)

cost = 1

Page 30: Measuring Navigation Efficiency in the IDE

Ideal Navigation Effort

The sum of the navigation costsneeded to reach the edited entities

Page 31: Measuring Navigation Efficiency in the IDE

Ideal Navigation Effort

The sum of the navigation costsneeded to reach the edited entities

Page 32: Measuring Navigation Efficiency in the IDE

Interaction History

t

Page 33: Measuring Navigation Efficiency in the IDE

Edited Entities

viewed entity

Program Entities

t

Page 34: Measuring Navigation Efficiency in the IDE

Edited Entities

t

viewed entity

edited entity

Program Entities

Page 35: Measuring Navigation Efficiency in the IDE

Edited Entities

tA B A.m1 A.m1A.m1 B C B.m2 B.m3

Page 36: Measuring Navigation Efficiency in the IDE

Edited Entities

tA B A.m1 A.m1A.m1 B C B.m2 B.m3

Working Sequence

Page 37: Measuring Navigation Efficiency in the IDE

Edited Entities

A BA.m1 A.m1

A.m1

BCB.m2 B.m3

Working Set

Page 38: Measuring Navigation Efficiency in the IDE

ideal navigation effort

real navigation effort

Navigation Efficiency

Page 39: Measuring Navigation Efficiency in the IDE

Navigation EfficiencyNavigation Efficiency

Page 40: Measuring Navigation Efficiency in the IDE

Navigation Efficiency

Working SequenceUnitary cost

Max cost

9.6%

38.7%

Navigation EfficiencyNavigation Efficiency

Page 41: Measuring Navigation Efficiency in the IDE

Navigation Efficiency

Working SequenceUnitary cost

Max cost

9.6%

38.7% 1.6x

9x

Navigation EfficiencyNavigation Efficiency

Page 42: Measuring Navigation Efficiency in the IDE

Navigation Efficiency

Working SetUnitary cost

Max cost

5.1%

20.6%

Working SequenceUnitary cost

Max cost

9.6%

38.7% 1.6x

9x

Navigation EfficiencyNavigation Efficiency

Page 43: Measuring Navigation Efficiency in the IDE

Navigation Efficiency

Working SetUnitary cost

Max cost

5.1%

20.6%

Working SequenceUnitary cost

Max cost

9.6%

38.7%

19x

1.6x

9x

4x

Navigation EfficiencyNavigation Efficiency

Page 44: Measuring Navigation Efficiency in the IDE
Page 45: Measuring Navigation Efficiency in the IDE

Developers navigate code with a raft. . .

Page 46: Measuring Navigation Efficiency in the IDE

. . .what about this for the future?

Page 47: Measuring Navigation Efficiency in the IDE

@robertominelli