- Workshop date: Sun, May 22, 2011.
- Workshop location: Sea Pearl 3&4, on 6th floor of Mid-Pacific Conference Center (see resort map).
Invited TalksWe are excited to announce two invited talks: one about the past and one about the future.
The Birth of Refactoring - a Personal Perspective
Abstract Software Refactoring was invented in the late 1980's at two institutions -- the University of Illinois by Bill Opdyke and Ralph Johnson, and the University of Washington by myself and David Notkin. In this talk I revisit the surprising events at the birth of refactoring -- what we called meaning-preserving restructuring -- at the University of Washington. I'll talk about how the ideas came about, and the research agenda and results that emerged. In the course of the presentation, I'll highlight several lessons for researchers seeking high impact in their work.
Bio William Griswold is a Professor of Computer Science and Engineering at the University of California, San Diego. He received his Ph.D. in Computer Science from the University of Washington in 1991, and his BA in Mathematics from the University of Arizona in 1985. His research interests include software evolution and design, aspect-oriented software development, and ubiquitous computing. Griswold is a pioneer in the area of software refactoring; he also built ActiveCampus, one of the early mobile location-aware systems. He was Program Chair of SIGSOFT FSE in 2002 and Program co-Chair of ICSE in 2005. He is the recent past-Chair of ACM SIGSOFT.
Abstract Refactoring was originally developed as a means to help programmers create more maintainable and dependable code by performing meaning-preserving transformations, and research in this area has produced many sophisticated tools and techniques that have been of great benefit to professional programmers. In recent years, a larger class of programmers has emerged, end user programmers, encompassing more than 55 million people. These programmers do not have formal training in software engineering, yet they create software that is meaningful to themselves, their jobs, and society. End user programmers use a variety of languages and environments, and like professional programmers, their code suffers from inefficiencies, bugs, and unnecessary complexity. In our recent work, we have defined and applied a set of refactorings to just one of these end user languages, and our preliminary analysis shows that end users prefer the simpler programs that result from the transformations. This talk will summarize our work on this area, present opportunities for future refactoring work in this new domain, and explore what refactoring means for end user programmers.
Bio Katie Stolee is a Ph.D. student in the Computer Science and Engineering Department at the University of Nebraska-Lincoln, where she also received her B.S. and M.S. in computer science and is advised by Sebastian Elbaum. Her research aims to bring the benefits of software engineering to the growing population of end users by developing tools and techniques that support end user programmers, most notably through refactoring. She is a recipient of an NSF graduate research fellowship award.
Refactoring is the process of applying behavior-preserving transformations to a program with the objective of improving the program's design. A specific refactoring is identified by a name (e.g., Extract Method), a set of preconditions, and a set of specific transformations that need to be performed.
Tool support for refactoring is highly desirable because checking the preconditions for a given refactoring often requires nontrivial program analysis, and applying the transformations may affect many locations throughout a program. In recent years, the emergence of light-weight programming methodologies such as Extreme Programming has generated a great amount of interest in refactoring, and refactoring support has become a required feature in modern-day IDEs.
Until recently, there has not been a suitable forum for discussions among researchers and developers of such tools. Our prior refactoring tools workshops (initially at ECOOP 2007, then at OOPSLA 2008, 2009) clearly met a need, and there was strong interest expressed in holding a follow-on workshop.
We invite developers and researchers in the field of refactoring to submit presentations and demonstration proposals about practical refactoring tools.
While there is a great deal of interest in developing tool support for refactoring, researchers and tool vendors rarely work together.
This forum will enable the transfer of ideas and expertise both ways:
- researchers can show the state-of-the-art analyses they are using in developing tool support for refactoring,
- tool vendors can offer valuable insights on the challenges of scaling such analyses to realistic applications.
By bringing together researchers and tool vendors:
- we can shorten the time to embody ideas into production systems.
- In addition, by making researchers aware of what others are working on, the potential for reinventing the wheel is reduced while the potential for creative collaboration is enhanced.
This workshop is the next step in our ongoing effort to create such a community, building on our successful refactoring workshops at ECOOP 2007 and OOPSLA 2008-2009.
Potential topics are those related to refactoring tools including, but not restricted to:
- refactoring engines
- improving the usability of existing refactoring engines
- empirical studies about refactoring practice
- tool performance
- efficient representation of source models
- program analyses for refactoring tools
- tools for detecting applied refactorings
- tools for suggesting refactorings (e.g., using code-smell detection)
- testing and verification of refactoring tools
- language-independent analysis frameworks and analytical representations
- language-independent transformation frameworks
- language-independent refactoring tools
- refactoring tools for non-OO languages (e.g., functional languages, MDE, legacy languages)
- composition and scripting of refactorings
- medium- and large-scale refactorings (e.g. package-level, component-level)
- refactoring for concurrency and parallelism
All accepted papers will be published electronically and will be available from the ACM DL. The proceedings will also be available on the ICSE USB stick.
|Long Talks Session||10.30||
|Afternoon Session 1||13.30||
|Focus Group Discussions||15.30||
Participation is open to anybody interested in the topic of refactoring. To register for the workshop, use the ICSE registration page.
Based on submissions, the schedule will include a mix of system demonstrations, short presentations, panel discussions and informal discussions. Proceedings will appear in the ACM Digital Library.
- Danny Dig, University of Illinois at Urbana-Champaign, USA (main contact)
- Don Batory, University of Texas at Austin, USA
- Don Batory, University of Texas at Austin, USA, (co-chair)
- Ira Baxter, Semantic Designs, USA
- Jan Becicka, Oracle/NetBeans, Czek Republic
- Danny Dig, University of Illinois, USA, (co-chair)
- Bob Fuhrer, IBM TJ Watson, USA
- Bill Griswold, University of California - San Diego, USA
- Ralph Johnson, University of Illinois, USA
- Joshua Kerievsky, Industrial Logic, USA
- Miryung Kim, University of Texas at Austin, USA
- Radu Marinescu, Politechnics University of Timisora, Romania
- Emerson Murphy-Hill, North Carolina State University, USA
- David Notkin, University of Washington, USA
- Bill Opdyke, Motorola, USA
- Kevin Pilch-Bisson, Microsoft/ Visual Studio, USA
- Max Schaefer, Oxford University Computing Laboratory, UK
- Frank Tip, IBM TJ Watson, USA
- Jan Wloka, IBM Zurich/ Eclipse, Switzerland