Measuring Navigation

Efficiency in the IDE
Roberto Minelli, Andrea Mocci, Michele Lanza
REVEAL @ Faculty of Informatics

University of Lugano, Switzerland
@robertominelli
What is Interaction Data?
developer IDE
What is Interaction Data?
developer IDE
navigate
What is Interaction Data?
developer IDE
navigate
edit
What is Interaction Data?
developer IDE
navigate
edit
inspect
What is Interaction Data?
developer IDE
navigate
userinput
edit
inspect
What is Interaction Data?
developer IDE
navigate
userinterface
userinput
edit
inspect
What is Interaction Data?
developer IDE
navigate
userinterface
userinput
edit
inspect
interaction
data
DFlow: Interaction Profiler
developer IDE
navigate
userinterface
userinput
edit
inspect
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
DFlow: Conceptual Model
DFlow: Conceptual Model
Event
Timestamp
Window ID
DFlow: Conceptual Model
Entities
Meta Event
Navigation Event Inspect Event Edit Event
Event
Timestamp
Window ID
DFlow: Conceptual Model
Position
User Input Event
Attributes
Mouse Event
Key Combination
Keystroke Event
Mouse Moved Mouse Button Mouse Wheel
DirectionButton IDStart Point
End Point
Entities
Meta Event
Navigation Event Inspect Event Edit Event
Event
Timestamp
Window ID
DFlow: Conceptual Model
Position
User Input Event
Attributes
Mouse Event
Key Combination
Keystroke Event
Mouse Moved Mouse Button Mouse Wheel
DirectionButton IDStart Point
End Point
User Interface Event
Attributes
Window Event
Window Collapsed Window ExpandedWindow Moved Window Resized
Window Activated Window Closed Window LabelledWindow Opened
Old Label
New Label
Initial Position
Initial Extent
Old Position
New Position
Old Size
New Size
Entities
Meta Event
Navigation Event Inspect Event Edit Event
Event
Timestamp
Window ID
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)
Navigation Efficiency
ideal navigation effort
real navigation effort
Navigation Efficiency
ideal navigation effort
real navigation effort
Navigation Efficiency
Number of
Navigation Events
ideal navigation effort
real navigation effort
Navigation Efficiency
Number of
Navigation Events
?
Ideal Navigation Effort
The sum of the navigation costs

needed to reach the edited entities
Ideal Navigation Effort
The sum of the navigation costs

needed to reach the edited entities
Navigating Source Code
Navigating Source Code
package
Navigating Source Code
package class
Navigating Source Code
package class protocol
Navigating Source Code
package class methodprotocol
source
code
Navigating Source Code
package class methodprotocol
cost = 1 cost = 2 cost = 3 cost = 4
Navigating Source Code (alternative)
Navigating Source Code (alternative)
cost = 1
Ideal Navigation Effort
The sum of the navigation costs

needed to reach the edited entities
Ideal Navigation Effort
The sum of the navigation costs

needed to reach the edited entities
Interaction History
t
Edited Entities
viewed entity
Program Entities
t
Edited Entities
t
viewed entity
edited entity
Program Entities
Edited Entities
tA B A.m1 A.m1A.m1 B C B.m2 B.m3
Edited Entities
tA B A.m1 A.m1A.m1 B C B.m2 B.m3
Working Sequence
Edited Entities
A B
A.m1 A.m1
A.m1
B
CB.m2 B.m3
Working Set
ideal navigation effort
real navigation effort
Navigation Efficiency
Navigation Efficiency
Navigation Efficiency
Navigation Efficiency
Working Sequence
Unitary cost
Max cost
9.6%
38.7%
Navigation Efficiency
Navigation Efficiency
Navigation Efficiency
Working Sequence
Unitary cost
Max cost
9.6%
38.7% 1.6x
9x
Navigation Efficiency
Navigation Efficiency
Navigation Efficiency
Working Set
Unitary cost
Max cost
5.1%
20.6%
Working Sequence
Unitary cost
Max cost
9.6%
38.7% 1.6x
9x
Navigation Efficiency
Navigation Efficiency
Navigation Efficiency
Working Set
Unitary cost
Max cost
5.1%
20.6%
Working Sequence
Unitary cost
Max cost
9.6%
38.7%
19x
1.6x
9x
4x
Navigation Efficiency
Navigation Efficiency
Developers navigate 

code with a raft...
...what about this 

for the future?
@robertominelli

Measuring Navigation Efficiency in the IDE