Fri Oct 14, 11:00-12:15, 4760 Boelter Hall Practical Refactoring Tools Using Type Constraints Frank Tip IBM T.J. Watson Research Center Type constraints are a formalism for expressing relationships between the types of variables and expressions that must be satisfied in order for program constructs to be type-correct. Traditionally, type constraints have been used as the basis for type checking and type inference algorithms. In our work, we use type constraints to efficiently implement refactorings of object-oriented programs. Refactorings are program transformations that are guided by the programmer and that aim at improving a program's design. Manually performing refactorings tends to be error-prone because checking the preconditions for a refactoring often involves non-local reasoning, and tedious because a large number of source code modifications may be required. Hence, automated tool support is highly desirable. The main observation behind our research is the fact that many refactorings are concerned with the manipulation of class hierarchies and types, and that type constraints lend themselves naturally for the checking of preconditions and the computation of source code modifications. Using type constraints, have implemented several refactorings related to generalization (e.g., "Extract Interface", "Pull Up Members"), two refactorings associated with the migration to Java 1.5 generics ("Infer Generic Type Arguments", and "Introduce Type Parameter"), and a refactoring for the migration between library classes that are roughly functionally equivalent. The work has been implemented in Eclipse, and several of the presented refactorings are part of the standard Eclipse 3.1 distribution that can be downloaded from www.eclipse.org. This research is loosely based on papers published at OOPSLA'03, ECOOP'04, ECOOP'05, and OOPSLA'05, and on some work in progress. It is joint work with Dirk Baeumer, Ittai Balaban, Julian Dolby, Michael Ernst, Robert Fuhrer, Markus Keller, Adam Kiezun, and Bjorn De Sutter. About the speaker: Frank Tip received his Ph.D. from the University of Amsterdam in 1995. Since then, he has worked at the IBM T.J. Watson Research Center in Hawthorne, NY, where he is currently manager of the "Program Analysis & Transformation" group. Frank's current research interests include refactoring, analysis and optimization of object-oriented programs, change impact analysis, and the design of language features that make it easier to write race-free concurrent object-oriented programs. More information can be found at www.research.ibm.com/people/t/tip. Hosts: Todd Millstein and Jens Palsberg