Resolving Conflict and Dependency in Refactoring to a Desired Design
Journal Title: e-Informatica Software Engineering Journal - Year 2015, Vol 9, Issue 1
Abstract
Refactoring is performed to improve software quality while leaving the behaviour of the system unchanged. In practice there are many opportunities for refactoring, however, due to conflicts and dependencies between refactorings, only certain orders of refactorings are applicable. Selecting and ordering an appropriate set of refactorings is a challenging task for a developer. We propose a novel automated approach to scheduling refactorings according to their conflicts and dependencies as well as their contribution to design quality expressed by a desired design. The desired design is an improved version of the current program design, and is produced by the developer. Our approach is capable of detecting conflicts and dependencies between refactorings, and uses a sequence alignment algorithm to identify the degree of similarity between two program designs expressed as sequence of characters, thereby measuring the contribution of a refactoring to achieving the desired design. We evaluated our approach on several sample programs and one non-trivial open-source application. Our results demonstrate the ability of the approach to order the input refactorings so as to achieve the desired design even in the presence of intense inter-refactoring conflict and dependency, and when applied to a medium-sized, real-world application.
Authors and Affiliations
Iman Moghadam, Mel Cinnéide
The Role of Organisational Phenomena in Software Cost Estimation: A Case Study of Supporting and Hindering Factors
Despite the fact that many researchers and practitioners agree that organisational issues are equally important as technical issues from the software cost estimation (SCE) success point of view, most of the research focu...
Model Driven Web Engineering: A Systematic Mapping Study
Background: Model Driven Web Engineering (MDWE) is the application of the model driven paradigm to the domain of Web software development, where it is particularly helpful because of the continuous evolution of Web techn...
Malicious JavaScript Detection by Features Extraction
In recent years, JavaScript-based attacks have become one of the most common and successful types of attack. Existing techniques for detecting malicious JavaScripts could fail for different reasons. Some techniques are t...
Software Change Prediction: A Systematic Review and Future Guidelines
Background: The importance of Software Change Prediction (SCP) has been emphasized by several studies. Numerous prediction models in literature claim to effectively predict change-prone classes in software products. Thes...
Resolving Conflict and Dependency in Refactoring to a Desired Design
Refactoring is performed to improve software quality while leaving the behaviour of the system unchanged. In practice there are many opportunities for refactoring, however, due to conflicts and dependencies between refac...