Chapter 5

Implementation of refactoring tool



DPT(Design Pattern Transformer) is a  tool for automatic transformation of the source code for programs written in object-oriented languages. Currently it works only for the Java(1.1), but it can be extended to transform C++ programs or to support high-level source transformations like C++ to Java or C to C++.


5.1 Introduction of DPT


Our goal was to create a small, useful tool which can be used intuitively, without a complex startup - procedure. We tried to design the tool to be extremely user-friendly. In this chapter would like differentiate the introduction of the tool-properties and introduction of specific transformation-properties of the DPT.


5.1.1 Tool features


1) The user doesn't need to include all source-files of his software in a DPT-project. It is enough to include just a part of source which will be transformed or will be required as a parameter of the transformation. (Example: super-class for a class, if class-method will be deleted) Additional files can be included any time in the DPT-project.


2) DPT-works with a copy of source-files(working copy). The source-files will be unchanged until the user explicitly saves(commit) the changes.


3) It is possible to modify source files simultaneously with DPT-project(for example, in user’s common development tool). DPT keeps all files up to date and asks the user to synchronize the source or skip the changes if project files were modified outside of the DPT-environment.


4) DPT offers a mechanism to „undo“ / “redo“ a transformation after the transformation was successful completed and the user already saved the modified files.(Except for the transformations which create new source-files, like „CreateClass“)


5) DPT offers many additional features which the user may expect from a program development tool. Those features are:

- Class browser

- Force reparse

- Synchronize source

- Remove generated comments

- GoToLine - dialog


5.1.2 Transformation features


1)  DPT offers several catalogs of transformations which can be applied to the project. The user can also define his own (favorite) catalog and load/use it in the project. Transformations which are included into a catalog are ordered by specific design pattern, for example, „class“ (move/delete/...),  „inherit“(generalize/specialize...) At the moment (Version 1.1) over 40 transformation are available and can be used for the creation of new composed transformations(see below).


(Figure 5.1 GUI: Loading catalog)


2) The user can also create his own transformations as a composition of existing ones. The user can at any time browse the composition of his transformation. A composed transformation can be  modified by „add/remove“ components of the transformation.


(Figure 5.2 GUI: Loading transformation)


Example (for an extension of composite-transformation):

Description:   Transformation creates an instance-variable of type = interface and 

initialized this member with a concrete constructor.

Composition: Transformation1= Create variable, transformation2= Substitute variable

Extension:     Access-methods have to be created (Get/Set)

The user just need to load composed transformation and add new operation (“VariableAccess“)


3) One of the most important tasks during the transformation is setting of parameters. The user shouldn’t have to type long file-paths or remember method-names, open and close the files or make sure that the symbol does not already exist. This should be done automatically. DPT provides a high-level of abstraction for this task. The „DPT-Parameter Assistant“ offers  a navigational access to the required parameter by using information of  the programs symbol-table. This method saves a lot of interaction with the user. This saves time for typing and avoid the errors.


4) DPT offers a history list of all transformations which were completed in this project.