Memory Recall Experiment

In this experiment, we asked programmers to recall the location of refactoring on pie menus.


OSCON 2007 Survey

In this survey, we asked professional programmers about their opinions of the refactoring tools.


How We Refactor, and How We Know It: Methodology

In this set of experiments, we characterized how programmers refactor. Below, you'll find the materials that we used to do it:

TSE Extension

In the TSE version of our paper, we extend our analysis to the Mylyn project. Below, you'll find files in the same format as the ones above for this project:

Code Smell Experiment: Methodology

Blank Experimenter's Notebook. The experiment administrator filled this out as the experiment progressed.

Smell Cards. The 8 cards given to participants to familiarize them with smells.

Result Database. Contains 3 tables:

finding.  Each record was a Java file (indicated by 
'firstOrSecond') inspected by the programmer using 
a tool or manually ('usedTool' boolean).  Numbers in 
the last 8 columns indicate how many times they noticed 
that smell.  For instance, subject 4 inspected code 8 
with the help of a tool and didn't see any data clumping, 
but did notice 6 instances of feature envy.
questionnaire.  *_important records the middle major 
column in the post-experiment questionnaire, while 
*_obey records the right major column in the 
post-experiment questionnaire.
subjects. Demographics from the subjects.  Job 
descriptions are removed to preserve anonymity.

Result Notes. This document contains transcriptions of my handwritten notes from the experiment. Note that there may be some transcription errors.

We used code from Vuze and the Java libraries:

envy1 Win32FileSystem.java java.source/src/java/io line 201
envy3 Win32PrintService.java java.source/src/sun/print line 1223
envy6 FileUtil.java azureus2/org/gudy/azureus2/core3/util line 171
envy8 AZMessageFactory.java azureus2/com/aelitis/azureus/core/peermanager/messaging/azureus line 157
scroll-1 Win32OffScreenSurfaceData.java java.source/src/sun/awt/windows line 46
scroll-3 Win32SurfaceData.java java.source/src/sun/awt/windows line 37
scroll-7 AzureusRestarterImpl.java azureus2/com/aelitis/azureus/core/update/impl line 43
scroll-8 SpeedManagerAlgorithmProviderVivaldi.java azureus2/com/aelitis/azureus/core/speedmanager/impl line 46
ToolDemo DHTUDPUtils.java azureus2/com/aelitis/azureus/core/dht/transport/udp/impl line 732

Basic Violated Precondition Experiment

In this experiment, we asked programmers to select code using 3 different selection tools, and interpret the meaning of violated Extract Method preconditions using either Refactoring Annotations or error messages.


Generalized Violated Precondition Experiment

In this experiment, we asked programmers to interpret the meaning of violated refactoring preconditions using either Refactoring Annotations or error messages.


If you have any questions, contact emerson-at-cs-dot-pdx-dot-edu.