First, we will look at refactoring support for the C++ Development Tools.
A C++ programmer is often burdened with routine editing tasks when refactoring code. Especially to keep both
files (header and implementation) up to date is very time consuming.
The first diploma thesis provided a plug-in called cerp. The outcome of following term project and diploma thesis was an
extended CDT with refactoring capabilities. Unfortunately the hole Refactoring CDT had to be downloaded to use
these features. After some contributions to the CDT the base for an independet plug-in was layed. The two projects
had been merged to gether and the result is a refactoring plug-in which provides all the refactoring listened above.
Second, we will address the Ruby Refactoring Plug-in for Eclipse.The Ruby Development Tools are an IDE for Ruby based on
the Eclipse platform. Although they are having a lot of features they didnt support automated refactorings. The goal
of this project had been to implement refactoring support for the Ruby Development Tools.
The main difficulty in implementing refactorings for Ruby is also one of its greatest language features: dynamic typing.
Dynamic typed languages offer a lot of freedom to the programmer, however, it is hard and most times even impossible
for an IDE to figure out the type of an object. Thus refactorings with a large scope, like the renaming of public
methods, are a real challenge.
Our results are that the plug-ins are integrated into the official RDT repository
and are now part of Aptanas web development IDE. We also plan to maintain and extend the plug-ins to keep up
with the latest developments in JRuby and RDT. A possible extension of our refactorings could be the integration into
RadRails, so you could rename your controllers or views and the corresponding file names were automatically changed
Peter Sommerlad is professor and head of Institute for Software at HSR Rapperswil. Peter is co-author of Pattern-oriented
Software Architecture Vol.1 and Security Patterns. His long-term goal is to make software simpler by Decremental Development:
Refactoring software down to 10% its size with better architecture, testability, quality and functionality.