Options
An Extensible Software Refactoring Tool
Date Issued
2004
Date
2004
Author(s)
Tsai, Fang-Pei
DOI
zh-TW
Abstract
Refactorings are a set of behavior-preserving transformations that can be applied to a program after it is coded. Traditional software design technology focused on the design before coding the software. However, with the growing of our experience of software engineering, we have realized that the requirements of software in the future cannot be predicted during the phase of pre-coding design. In addition, as the software upgrades, more functionalities are added, and the structure of the software becomes more and more complicated and, evantually, out of our control.
People modify the codes and change the design via the concept of refactorings. The modification is structural, not functional. With the help of refactoring tools, some technical details during the refactoring phase can be accomplished by the computer, hence people will be glad to refactor their codes more often.
In this thesis, the technical issues of refactoring tools are reviewed. We think that the existing semi-automated refactoring tools can be improved. The existing refactoring tools work just like an editor: given one command, one specific refactoring actioin is performed. We propose the concept of a full-automated refactoring tool in this thesis. According to this idea, the tool searches the code fragments that needed to be refactored in a fully automatic fashion, and after the examination by the programmer, the tool finishes refactoring with high efficiency. To make it more feasible, we let extensibility have the highest priority over other issues. On the one hand, the tool is combined with experience from experts; on the other hand, a flexible generation process of a refactoring tool is designed. Finally, an implemention of our architecture is presented according to our working experience on GCC(GNU Compiler Collection), where the automated transformation of several refactoring cases are designed and realized.
There is still long way to go for the technology of automated refactoring. We believe that the architecture proposed by this thesis could be combined with the theories of software formalization in the future to speed up the development of more practical refactoring tools.
People modify the codes and change the design via the concept of refactorings. The modification is structural, not functional. With the help of refactoring tools, some technical details during the refactoring phase can be accomplished by the computer, hence people will be glad to refactor their codes more often.
In this thesis, the technical issues of refactoring tools are reviewed. We think that the existing semi-automated refactoring tools can be improved. The existing refactoring tools work just like an editor: given one command, one specific refactoring actioin is performed. We propose the concept of a full-automated refactoring tool in this thesis. According to this idea, the tool searches the code fragments that needed to be refactored in a fully automatic fashion, and after the examination by the programmer, the tool finishes refactoring with high efficiency. To make it more feasible, we let extensibility have the highest priority over other issues. On the one hand, the tool is combined with experience from experts; on the other hand, a flexible generation process of a refactoring tool is designed. Finally, an implemention of our architecture is presented according to our working experience on GCC(GNU Compiler Collection), where the automated transformation of several refactoring cases are designed and realized.
There is still long way to go for the technology of automated refactoring. We believe that the architecture proposed by this thesis could be combined with the theories of software formalization in the future to speed up the development of more practical refactoring tools.
Subjects
軟體維護
編譯器
自動化重構
GCC
compiler
automated refactoring
software maintenance
Type
thesis
File(s)
No Thumbnail Available
Name
ntu-93-R91922010-1.pdf
Size
23.31 KB
Format
Adobe PDF
Checksum
(MD5):9d0070eb4de9c74db312094bbeb8e8b3