A Domain-Specific Language for Refactoring Process Execution: Design and Implementation

博士 === 國立成功大學 === 電腦與通信工程研究所 === 101 === Successful software systems must evolve continuously for incorporating new requirements and for adapting environmental changes during their development life cycles. As evolutionary changes are incrementally introduced into a software system, the evolving soft...

Full description

Bibliographic Details
Main Authors: Lee WeiMar, 馬立偉
Other Authors: Hewijin Christine Jiau
Format: Others
Language:en_US
Published: 2013
Online Access:http://ndltd.ncl.edu.tw/handle/67393183398328327698
Description
Summary:博士 === 國立成功大學 === 電腦與通信工程研究所 === 101 === Successful software systems must evolve continuously for incorporating new requirements and for adapting environmental changes during their development life cycles. As evolutionary changes are incrementally introduced into a software system, the evolving software design becomes more complex and drifts away from the original software design. In this context, software refactoring is a widely adopted practice for systematically adjust the design structure of a software system while preserving its observable behaviors. In principle, the application of refactoring follows a general refactoring process model. However, the actual execution process of applying refactoring varies due to the fact that refactoring is carried out with different objectives in different project settings. This variety leads to the derivation of various dedicated refactoring processes from the general refactoring process model for fitting the specific evolution context of the particular software projects. To ensure the systematic execution and effective outcomes of a dedicated refactoring process, specifying the standard procedure for the refactoring process execution becomes vital for software development teams. However, limited support is provided for developers to precisely specify the standard procedure of a dedicated refactoring process. This thesis aims at establishing a basis for the specification of dedicated refactoring processes. To this end, we start the thesis work from the identification of the major difficulties that developers faced at different stages of the refactoring process model. Two different refactoring methodologies for resolving these difficulties, Mavis and Obey, are proposed accordingly. Mavis assists developers in inspecting potential problematic design structure and in proposing refactoring plans, whereas Obey allows for the effect assessment of the proposed plans and ensures the optimal execution of these plans. We have conducted empirical studies on practical open source software (OSS) projects to confirm the effectiveness of Mavis and Obey. Based on the insights gained from the development of Mavis and Obey, we define a domain-specific language (DSL) for addressing the developers’ specification needs at different stages of the refactoring process model. The DSL allows developers to specify a dedicated refactoring process by defining individual refactoring actions in a process as well as the overall execution procedure of these actions. A runtime environment for our defined DSL, RefactoringCommando, is developed in the Eclipse IDE for executing the specified refactoring processes in Java projects. We have conducted several case studies that apply RefactoringCommando to typical refactoring practices. The case study results confirm the effectiveness of the DSL, suggesting that the DSL provides the proper abstraction for precisely specifying the execution of the refactoring process in a concise manner.