May 18 – 23 , 2014, Dagstuhl Seminar 14211
The Future of Refactoring
Danny Dig (Oregon State University, US)
William G. Griswold (University of California – San Diego, US)
Emerson Murphy-Hill (North Carolina State University – Raleigh, US)
Max Schaefer (Semmle Ltd. – Oxford, GB)
1 / 2 >
For support, please contact
The Dagstuhl seminar on "The Future of Refactoring" brought together 41 researchers and practitioners from academia and industry working on different aspects of refactoring. Participants had the opportunity to introduce their own work both in short plenary talks and more detailed presentations during breakout sessions, with daily keynote talks by eminent refactoring researchers providing historical background. Given the rapid growth of the field over the past decade, special emphasis was put on providing opportunities for researchers with similar interests to meet and survey the state of the art, identify open problems and research opportunities, and jointly chart the future of refactoring research.
We believe the seminar achieved its goal of providing a forum for in-depth discussion of recent research in the area, and of fostering collaboration. In particular, it kickstarted several collaborative projects, among them a book on refactoring tools, a special journal issue on refactoring and a survey article on refactoring research over the last decade.
Modern software is rarely written from scratch. Instead, it usually incorporates code from previous systems, and is itself reincarnated in other programs. Modern software is also not static. Instead, it constantly changes as bugs are fixed and features added, and usually these changes are performed by more than one programmer, and not necessarily by the original authors of the code.
Refactoring is a technique for supporting this highly dynamic software life cycle. At its most basic, refactoring is the process of improving the internal structure of an existing piece of code without altering its external behavior. It can be used for cleaning up legacy code, for program understanding, and as a preparation for bug fixes or for adding new features. While any behavior-preserving change to a program can be considered a refactoring, many particularly useful and frequently recurring refactoring operations have been identified and catalogued. Over the past decade, popular development environments have started providing automated support for performing common refactorings, making the process of refactoring less tedious and error-prone.
Based on the accumulated experience with refactorings both in practical applications and in research, this seminar aimed to identify open problems and challenges and to foster collaboration between researchers and between academia and industry to address these issues and actively shape the future of refactoring.
Given the large number of participants, the standard conference format with one in-depth talk per participant would have been impractical. Instead, we decided to split up the schedule: during the first three days, the mornings were allocated to plenary sessions. Each day began with a keynote by a distinguished speaker with decades of experience with refactoring, in which they presented their perspective on refactoring. The rest of the morning was allocated to "lightning talks" where each participant was given a 7-minute presentation slot for providing a quick, high-level overview of their work without getting bogged down in detail, followed by a few minutes for questions. While this format was not easy for the speakers, everyone rose to the challenge, and reactions from both presenters and audience were broadly positive.
Monday afternoon was given over to four parallel breakout sessions organized along thematic lines: novel domains for refactoring, user experience in refactoring, refactoring tools and meta-tools, and refactoring in education. While participants appreciated the opportunity for more in-depth presentations and discussion, this format had the unfortunate but inevitable drawback that several talks were held in parallel, and not everyone was able to attend all the talks they were interested in.
Tuesday afternoon had an industry panel, followed by another round of breakout sessions. Discussion and exchange continued in an informal setting during Wednesday afternoon's excursion to Mettlach.
On Thursday morning, we had another keynote followed by a final round of breakout sessions. While the focus of the breakout sessions on Monday and Tuesday had been on surveying recent work and getting an overview of the state of the art, Thursday's sessions were aimed at gathering together the threads, and identifying common themes, open problems and research opportunities.
The outcome of these group discussions were then briefly presented in a plenary on Thursday afternoon, and opportunities for collaborative projects were identified. Specifically, the following projects were discussed and planned in group discussions on Thursday afternoon:
- a book on refactoring tools;
- a special issue of IEEE Software on refactoring;
- a survey paper on refactoring research in the last decade;
- an informal working group on the place of refactoring in the Computer Science curriculum.
Friday morning saw a final plenary discussion, summarizing the project discussions of Thursday afternoon and ending with a retrospective session on which aspects of the seminar are worth keeping for the future, what needs to change, and what still puzzles us.
We hired George Platts, a professional artist, to facilitate games he designed and tangential thinking activities to help the participants develop a sense of scientific community. During each of the five days of the Seminar, George ran 30-minute games sessions at the beginning of the day which doubled as times for announcements to be given and daily reports to be delivered. In the early afternoon, we had a 30-minute game session to energize participants for the afternoon's workshops. For the rest of the time in his 'studio', he has been playing music, showing short films, facilitating drawing and painting activities, composing sound composition for all participants to perform.
Creative Commons BY 3.0 Unported license
Danny Dig and William G. Griswold and Emerson Murphy-Hill and Max Schaefer
- Programming Languages / Compiler
- Software Engineering
- Program analysis
- Program transformation
- Software evolution
- Software restructuring
- Code smells