multivie w 1 improving refactoring with alternative program views emerson murphy-hill
Post on 19-Dec-2015
215 views
TRANSCRIPT
1
MU
LTIV
IEW
Improving Refactoring with Alternative Program
ViewsEmerson Murphy-Hill
2
MU
LTIV
IEW
The Problem with Software Development Tools
Software development tools could be a great boon to productivity and program correctness.
But current tools can be difficult to use, so much so that developers may be discouraged
from using them.
How can we improve tools so that programmers are more likely to understand and adopt
them?
3
MU
LTIV
IEW
Outline
• Introduction to Refactoring• Usability Problems with Current
Refactoring Tools• New, More Usable Refactoring Tools• An Experiment to Compare Current
to New Refactoring Tools• Conclusions
4
MU
LTIV
IEW
Introduction to Refactoring
• Refactoring is restructuring programs while preserving behavior
• Examples: renaming variables and methods, encapsulating instance variables, inline method…
• Refactoring is good for:– Making programs more understandable– Allowing features to be added more easily – Keeping program development agile
• Automated Tools Behavior-Preservation
5
MU
LTIV
IEW
Extract Method: Crossing Refactoring’s Rubicon
• Take a list of statements, move them to a new method, then replace the original statements with a call to the new method
• (demo)
6
MU
LTIV
IEW
Refactoring Process with Tools
Identify Code
Select Code
Configure Refactoring
Apply Refactoring
Fix Code
Debrief
OK
InterpretError Error!
Pick a Code Segment
Select the Code Segment
Choose a Name for the New Method
(Tool executes code change)
Optional: Inspect the
New Method
“method of same name already
exists…”
Change name of other method
7
MU
LTIV
IEW
Outline
• Introduction to Refactoring• Usability Problems with Current
Refactoring Tools• New, More Usable Refactoring Tools• An Experiment to Compare Current
to New Refactoring Tools• Conclusions
8
MU
LTIV
IEW
What problems do programmers have during
Extract Method?• Performed an exercise with programmers,
mostly from this department– 9 of 11 programmers encountered an error
during Extract Method– One programmer succeeded in only 11 of 34
attempts to extract a method– Programmers frequently had problems
selecting whole statements– Programmers had problems understanding
error messages– Errors discouraged the programmer from
refactoring
9
MU
LTIV
IEW
Outline
• Introduction to Refactoring• Usability Problems with Current
Refactoring Tools• New, More Usable Refactoring Tools• An Experiment to Compare Current
to New Refactoring Tools• Conclusions
10
MU
LTIV
IEW
Some Tool Improvements
• Based on the formative exercise, I created three views to improve the process
• Two for Selection– “Selection Assist”– “Box View”
• One for Interpreting Errors– “Refactoring
Annotations”
Identify Code
Select Code
Configure Refactoring
Apply Refactoring
Fix Code
Debrief
OK
InterpretError Error!
Tools are available at http://multiview.cs.pdx.edu/refactoring
11
MU
LTIV
IEW
Selection Assist
• Important Qualities of this View:– It’s lightweight – doesn’t slow down the
common case– Programmer selection time is
proportional to statement length– Programmer can use keyboard or mouse
12
MU
LTIV
IEW
Tools Similar to Selection Assist
13
MU
LTIV
IEW
Box View
• Important Qualities of this View:– Abstracts away code formatting– Selection time is constant for any
statement– Programmer can use keyboard or mouse
14
MU
LTIV
IEW
A Tool Similar to Box ViewAdobe GoLive
15
MU
LTIV
IEW
Refactoring Annotations
• Important Qualities of this View:– Indicates the location of errors– Indicates errors relationally (colors, arrows)– Indicates every error (overlaid)– Errors cues are distinguishable– Indicates the amount of work required to
recover from error– Distinguishes showstoppers (Xs) from
advisories
16
MU
LTIV
IEW
Tools Similar to Refactoring Annotations
Dr. Scheme
Eclipse Control Structure Diagrams
17
MU
LTIV
IEW
Outline
• Introduction to Refactoring• Usability Problems with Current
Refactoring Tools• New, More Usable Refactoring Tools• An Experiment to Compare Current
to New Refactoring Tools• Conclusions
18
MU
LTIV
IEW
Experiments: Compare Tools
Old Tools
Keyboard/Mouse
Eclipse Extract Method Wizard
New Tools
Selection AssistBox View
Refactoring Annotations
Subjects were 16 students from Professor Black’s Object-Oriented programming class.
19
MU
LTIV
IEW
Selection Experiment
• Question– Which selection tools help programmers select
statements most accurately and quickly?
• Methodology– Subjects select all if statements in real code,
assisted by Keyboard/Mouse, Selection Assist, and Box View
• Measurements– Whether each if statement was selected correctly– The time between consecutive selections
20
MU
LTIV
IEW
Selection Results
Mis-Selected If Statements
Correctly Selected If Statements
Mean selection time (seconds)
Normalized Selection Time
Mouse/Keyboard 37 303 10.4 100%
Selection Assist 6 355 5.5 54%
Box View 2 357 7.8 71%
*All Users Combined*
21
MU
LTIV
IEW
Subjects’ Opinions
– 31% said the mouse/keyboard was helpful
– 94% said Selection Assist was helpful
– 81% said Box View was helpful
– 94% said they were likely to use Selection Assist again
– 63% said they were likely to use Box View again
22
MU
LTIV
IEW
Extraction Experiment
• Question– Which Extract Method tools help programmers
understand errors most accurately and quickly?• Methodology
– Subjects are given an un-extractable method and told to identify the location of each error using the Eclipse Extract Method Wizard and Refactoring Annotations
• Measurements– Whether each error was identified correctly– How long it takes to identify all errors correctly
23
MU
LTIV
IEW
Extraction Results
Failed to Identify Error
Identified Non-error
Mean Elapsed Time
(seconds)
Eclipse Wizard 11 28 164
Refactoring Annotations
1 6 46
*All Users Combined*
24
MU
LTIV
IEW
Subjects’ Opinions
– 56% said Eclipse Wizard was helpful
– 100% said Refactoring Annotations were Helpful
– 62% were likely to use Eclipse Wizard again
– 100% were likely to use Refactoring Annotations again
25
MU
LTIV
IEW
Interpretation of Results (1 of 2)
• Programmers are less error prone and faster using Box View and Selection Assist
• Programmers like using Box View and Selection Assist
• Box View is good when likelihood of mis-selection is high
• Selection Assist is good for short code blocks
26
MU
LTIV
IEW
Interpretation of Results (2/2)
• Programmers are more likely to understand errors and understand them faster using Refactoring Annotations
• Programmers REALLY like using Refactoring Annotations
27
MU
LTIV
IEW
My Contributions• I have shown that the traditional view used by
programmer tools can impede refactoring• I have introduced alternative views to address
specific problems • I have demonstrated that these views
measurably improve the refactoring process
Future WorkMore user-friendly software development tools may
help increase tool adoption, and then yield more productive programmers and less buggy software
28
MU
LTIV
IEW
Thanks…
• Advice on Experimental Design: Suresh Singh and Jim Larson
• General Advice and Paper Reviews: Robert Bauer, Paul Berry, Andrew Black, Iavor Diatchki, Tom Harke, Brian Huffman, Mark Jones, Chuan-kai Lin, Ralph London, Philip Quitslund, Tim Sheard, and Aravind Subhash
• Special thanks to colleagues and students who participated in testing.
• Practice talk reviewers
29
MU
LTIV
IEW
ReferencesFowler, M., Beck, K., Brant, J., Opdyke, W. and Roberts, D.: Refactoring:
Improving the Design of Existing Code. Addison-Wesley Professional (1999)
Fowler, M. Crossing Refactoring's Rubicon. http://www.martinfowler.com/articles/refactoringRubicon.html, (2001)
The Eclipse Foundation: Eclipse, http://www.eclipse.org, accessed November 2005
Findler, R., Clements, J., Matthew, Krishnamurthi, S., Steckler, P. and Felleisen, M.: DrScheme: A Progamming Environment for Scheme. Journal of Functional Programming, 12(2):159-182, (2002)
Adobe Systems Incorporated: Adobe GoLive. http://www.adobe.com/products/golive, accessed November 2005
Hendrix, D., Cross, J., Maghsoodloo, S. and McKinney, M.: Do Visualizations Improve Program Comprehensibility? Experiments with Control Structure Diagrams for Java. Haller, S. (ed.): In Proc. Thirty-First SIGCSE Technical Symposium on Computer Science Education, Vol. 32. pp. 382-386. ACM, Austin, Texas (2000)
30
MU
LTIV
IEW
Questions?
31
MU
LTIV
IEW
Per-Subject Selection Results
3
5
7
9
11
13
15
17
3 5 7 9 11 13 15 17
Selection time (seconds) with Mouse/Keyboard
Sel
ecti
on
tim
e (s
eco
nd
s) w
ith
Sel
ecti
on
Ass
ist
3
5
7
9
11
13
15
17
3 5 7 9 11 13 15 17
Selection time (seconds) with Mouse/Keyboard
Sel
ecti
on
tim
e (s
eco
nd
s) w
ith
Bo
x V
iew
32
MU
LTIV
IEW
Per Subject Extraction Results
33
MU
LTIV
IEW
Helpfulness of Selection Tools
I found the mouse/keyboard alone a helpful mechanism for selecting if blocks.
0 Strongly Disagree 9 Disagree 1 Neutral 5 Agree 0 Strongly Agree
I found the selection assist tool (green statement highlighter) a helpful mechanism for selecting if blocks.
0 Strongly Disagree 1 Disagree 0 Neutral 5 Agree 10 Strongly Agree
I found the statement box view (nested boxes off to the side of the code) a helpful mechanism for selecting if blocks.
0 Strongly Disagree 0 Disagree 3 Neutral 7 Agree 6 Strongly Agree
34
MU
LTIV
IEW
Helpfulness of Extraction Tools
I found the extract method wizard (popups that contained an error message) a helpful indication of what went wrong when I tried to extract a method.
0 Strongly Disagree 3 Disagree 3 Neutral 6 Agree 3 Strongly Agree
I found the extract method annotations (colors/lines on top of code) a helpful indication of what went wrong when I tried to extract a method
0 Strongly Disagree 0 Disagree 0 Neutral 3 Agree 13 Strongly Agree
35
MU
LTIV
IEW
Likely-to-use-again: Selection Tools
If the selection assist tool (green statement highlighter) were available for my usual development environment, I would be likely to use it again.
0 Strongly Disagree 0 Disagree 1 Neutral 3 Agree 12 Strongly Agree
If the statement box view (nested boxes off to the side of the code) were available for my usual development environment, I would be likely to use it again.
0 Strongly Disagree 3 Disagree 3 Neutral 6 Agree 4 Strongly Agree
36
MU
LTIV
IEW
Likely-to-use-again: Extraction Tools
If the extract method wizard (popups that contained an error message) were available for my usual development environment, I would be likely to use them again during the extract method refactoring.
1 Strongly Disagree 1 Disagree 4 Neutral 7 Agree 3 Strongly Agree
If the extract method annotations (colors/lines on top of code) were available for my usual development environment, I would be likely to use them again during the extract method refactoring.
0 Strongly Disagree 0 Disagree 0 Neutral 1 Agree 15 Strongly Agree