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

36
1 MULTIVIEW Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

Post on 19-Dec-2015

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

1

MU

LTIV

IEW

Improving Refactoring with Alternative Program

ViewsEmerson Murphy-Hill

Page 2: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson 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?

Page 3: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 4: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 5: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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)

Page 6: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 7: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 8: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 9: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 10: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 11: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 12: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

12

MU

LTIV

IEW

Tools Similar to Selection Assist

Page 13: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 14: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

14

MU

LTIV

IEW

A Tool Similar to Box ViewAdobe GoLive

Page 15: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 16: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

16

MU

LTIV

IEW

Tools Similar to Refactoring Annotations

Dr. Scheme

Eclipse Control Structure Diagrams

Page 17: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 18: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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.

Page 19: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 20: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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*

Page 21: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 22: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 23: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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*

Page 24: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 25: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 26: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 27: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 28: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 29: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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)

Page 30: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

30

MU

LTIV

IEW

Questions?

Page 31: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 32: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

32

MU

LTIV

IEW

Per Subject Extraction Results

Page 33: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 34: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 35: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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

Page 36: MULTIVIE W 1 Improving Refactoring with Alternative Program Views Emerson Murphy-Hill

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