Year: 2014
Type: article
Abstract: GE, XI. Improving Tool Support for Software Developers through Refactoring Detection. (Under the direction of Emerson Murphy-Hill.)With changing software requirements, developers need to maintain the source code of software systems to ensure their continuous usefulness.Maintaining software involves both the functional and nonfunctional improvements of the codebase.The functional improvements, such as adding new features and fixing defects, benefits external clients by enhancing or correcting the behavior of software systems.On the other hand, the nonfunctional improvements enhance the internal quality of the codebase, therefore increasing the longevity of the software under maintenance.The nonfunctional improvements of codebase are also called refactoring.Existing studies show that refactoring improves the maintainability, testability and reusability of software systems.Therefore, refactoring becomes an essential and frequent activity of software developers.Developers can refactor their codebase manually.However, refactoring manually is both errorprone and time-consuming.To improve the correctness and efficiency of manual refactoring, researchers and developers implemented multiple refactoring tools.In addition, almost every mainstream Integrated Development Environment (IDE) integrates refactoring tools, exposing these tools to a large population of developers working in various programming languages.However, refactoring tools are underused.Existing studies suggest that about 90% of refactorings were performed manually even though refactoring tools are available.To investigate the reason for this underuse problem, I conducted a formative study on 12 developers and found out that a developer sometimes starts manual refactoring without realizing so, thus missing the chance of invoking refactoring tools.To solve this late awareness problem, I integrate refactoring detection algorithms into the conventional refactoring engines, proposing a novel refactoring tool called BeneFactor that detects the start of a manual refactoring, reminds the developer that automated refactoring is available and finally finishes the started refactoring automatically.Another reason for the underuse problem of refactoring tools is developers' lack of trust on the changes that refactoring tools apply on their codebases.To solve this problem, I combined the refactoring detection technique with a static analysis technique to delegate refactoring support to the error messages in IDEs.The proof-of-concept tool, called GhostFactor, detects manual refactorings, checks conditions retrospectively and notifies the developer if it finds an error Firstly, I would like to thank my adviser, Dr. Emerson Murphy-Hill, for his guidance and patience.He introduced me to the world of software refactoring, shared with me brilliant ideas, and helped me through the most difficult time during my studies.Also, I would like to thank my committee members, Dr.
Author: Xi Ge
Language: English
Subfield: Information Systems
Field: Computer Science
Domain: Physical Sciences
Open Access status: green
OpenAlex ID: W2523710867
