Technical Program
  Invited Speakers
  Technical Papers
  Practitioner Reports
Educators' Symposium
Doctoral Symposium
Student Research Comp.
Turing Lecture
Social Events
Week at a Glance
Final Program (1.5M .pdf)

Find in Program


view, help

"Advanced Refactorings in Eclipse"
Object-Oriented Programming, Systems, Languages and Applications
Home    Program    Housing & Transportation    Registration    Submissions    Wiki    Maps

 : All Demonstrations : Wednesday : Wednesday Demonstrations

Advanced Refactorings in Eclipse

Courtyard, Demo room 1
Wednesday, 12:30, 45 minutes


This event is also being given Tuesday at 15:30.

Robert Fuhrer, IBM T.J. Watson Research Center
Frank Tip, IBM T.J. Watson Research Center
Adam Kiezun, MIT

Demonstration number: 4

We propose a demonstration of several advanced refactorings for Java implemented for the Eclipse IDE (www.eclipse.org). These refactorings are semantics-preserving program transformations typical of the transformations object-oriented programmers perform manually to improve the structure of existing programs, and promote reuse, clarity, and extensibility.

This demonstration consists of three parts: (i) a review of Eclipse's implementations of several common refactorings, including Extract Method, Introduce Factory and Change Method Signature, described in Fowler's seminal book on refactoring, (ii) a demonstration of generalization-related refactorings such as Extract Interface, which extracts an interface from a class to reduce dependencies on implementation particulars, and Generalize Type, for remediating over-specific declarations, and (iii) a demonstration of Genericize Container Uses, a refactoring in development for migrating uses of standard container classes (e.g. ArrayList or HashMap) to their generic counterparts in Java 1.5 (e.g., ArrayList<String>). This determines the element types that flow into containers, modifies declarations and allocations where possible, and removes casts rendered redundant.

The latter two categories require non-trivial static analysis, and present challenging software engineering usability issues, reflecting complications that programmers face in performing such transformations manually. Therefore, each demonstration will include a brief overview of the technical challenges that the refactoring presents, and highlights of the approach we took in addressing them. In particular, we briefly describe a new piece of Eclipse infrastructure designed to help implement various kinds of context-sensitive and context-insensitive type and pointer analyses for Java.