Font Size: a A A

Scalable detection of software refactoring

Posted on:2016-03-13Degree:Ph.DType:Thesis
University:National University of Singapore (Singapore)Candidate:Milea, Narcisa AndreeaFull Text:PDF
GTID:2478390017478032Subject:Computer Science
Abstract/Summary:
The process of large-scale software development and maintenance can be unpredictable, with high costs, and a bug-prone and fragile output at times. It is estimated that 90% of the total cost of a software project is spent on evolution and maintenance, causing some authors to call it the legacy crisis (such as [109]). Refactoring is widely believed to have a positive impact on these costs. Without refactoring the gain in development costs can be easily lost in the form of increased maintenance costs [14]. Refactoring can also benefit development costs, as shown by eXtreme Programming [13] which also advocates relentless refactoring throughout a project's life cycle in order to eliminate redundancy, remove unused functionality, and restructure obsolete designs. Refactoring also enables changes during the life cycle of a software system by updating its structure and design and is crucial to the success of a system.;This research thesis aims at addressing this challenge. The thesis asserts that efficient and effective detection of code fragments related by refactoring operations within large software can be achieved by performing abstraction and algebraic operations over high-dimensional vectors representing the code, potentially leading to great saving in software maintenance costs. (Abstract shortened by UMI.).;Automated techniques have been proposed to either identify refactoring opportunities (i.e., code fragments that can, but have not yet been restructured in a program), or reconstruct historical refactoring (i.e., code restructuring operations that have happened between different versions of a program). However, it remains challenging to consistently apply those techniques to large code bases containing millions of lines of code involving many versions. Besides scale, the main challenge is that refactoring may change the syntactic shape of a program while preserving functional equivalence. One particularly complex change involves moving code fragments across function boundaries for refactorings such as Extract Method, Preserve Whole Object, etc. Detecting such changes accurately requires that a refactoring detection tool should possess knowledge about precise code change patterns induced by refactoring and should flexibly omit or emphasize specific program elements when computing similarity between two code fragments.
Keywords/Search Tags:Refactoring, Software, Code, Costs, Detection, Maintenance, Program
Related items