OOPSLA '04

Program
Technical Program
  Invited Speakers
  Technical Papers
  Onward!
  Panels
  Practitioner Reports
  Tutorials
Workshops
DesignFest
Educators' Symposium
Demonstrations
Posters
Doctoral Symposium
Exhibits
Student Research Comp.
FlashBoF
 
Turing Lecture
 
Social Events
 
Week at a Glance
 
Final Program (1.5M .pdf)

Find in Program
 

Page
Printer-friendly

Basket
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
 


 
7·8·9·10·11·12·13·14·15·16·17·18·19·20·21

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.