i-nth logo

Authors

Sandro Badame & Danny Dig

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 automated refactoring in the object-oriented domain, spreadsheet refactoring 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 conducted a User Survey with 28 Excel users to find out whether they preferred the refactored formulas.

Second, we conducted a Controlled Experiment with the same 28 participants to measure their productivity when doing manual refactorings.

Third, 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.

The results show: (i) users prefer the improved quality of refactored formulas, (ii) REFBOOK is faster and more reliable than manual refactoring, and (iii) the refactorings are widely applicable.

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 were unable to complete the task.

Sample

Typical sequence of events to perform a refactoring
Typical sequence of events to perform a refactoring

REFBOOK's architecture consists of three major components:

  • Excel plugin front-end.
  • Ludwig, an off-the-shelf component that, given a grammar for a language, generates a Java library for parsing that grammar.
  • The refactoring engine, which is a Java application that performs the transformations.

Publication

2012, 28th IEEE International Conference on Software Maintenance, September, pages 399-409

Full article

Refactoring meets spreadsheet formulas

Also see

Refactoring meets spreadsheet formulas (Master's thesis)