multivie w 1 improving refactoring with alternative program views emerson murphy-hill

Post on 19-Dec-2015

216 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

top related