Authors
Sandro Badame
Abstract
The number of end-users who write spreadsheet programs is at least an order of magnitude larger than the number of trained programmers who write professional software.
We studied a corpus of 3691 spreadsheets and we found that their formulas are riddled with the same smells that plague professional software: hardcoded constants, duplicated expressions, unnecessary complexity, and unsanitized input. These make spreadsheets difficult to read and expensive to maintain. Like refactoring of object-oriented code, refactoring of spreadsheet formulas can be transformative.
In this paper we present seven refactorings for spreadsheet formulas implemented in RefBook, a plugin for Microsoft Excel. To evaluate the usefulness of RefBook, we employed three kinds of empirical methods. First, we performed a Retrospective Case Study on the EUSES Spreadsheet Corpus with 3691 spreadsheets to determine how often we could apply the refactorings supported by RefBook. Second, we conducted a User Survey with 28 Excel users to find out whether they preferred the refactored formulas. Third, we conducted a Controlled Experiment with the same 28 participants to measure their productivity when doing manual refactorings.
The results show: (i) the refactorings are widely applicable, (ii) users prefer the refactored formulas, and (iii) RefBook is faster and safer than manual refactoring. On average RefBook is able to apply the refactorings in less than half the time that users performed the refactorings manually. 92.54% of users introduced errors or new smells into the spreadsheet or where unable to complete the task.
Sample
This table shows, for each refactoring kind, how many participants preferred the smelly or the refactored formulas. For 4 out of the 7 refactorings, the majority of participants preferred the refactored formulas. We assume that user opinion reflects the quality of the formulas.
Publication
2012, Master's thesis, University of Illinois at Urbana-Champaign
Full article
Refactoring meets spreadsheet formulas