Font Size: a A A

Refactoring References for Library Migration

Posted on:2011-08-11Degree:M.ScType:Thesis
University:University of Calgary (Canada)Candidate:Kapur, PuneetFull Text:PDF
GTID:2448390002961607Subject:Computer Science
Abstract/Summary:
Dealing with change is a persistent problem that has vexed software developers and preoccupied the discipline of software engineering for more than 30 years. Changes to software can occur for a variety of reasons, and can originate from a variety of sources; developers may change their own internal source code, respond to changes in external software upon which their own software depends or introduce changes to software they write that is then reused by other software developers.;However, there exist situations in which a declaration is not available for refactoring. When creating applications that make use of external software, developers make references within their source code to entities declared by---and whose source code is managed by---someone else. When this third-party software changes, the references within the developer's own source code are broken, an outcome we refer to as dangling references.;We investigate the problem of dangling references through a detailed study of three open source libraries. We find that the introduction of dangling references during library migration is a significant real problem, and characterize the specific issues that arise. Based on these findings we provide and test a prototype tool, called Trident, that allows programmers to refactor references. Our results suggest that supporting the direct refactoring of refereences is a significant improvement over the state-of-the-art.;The origin of a change impacts the manner and the tools with which developers have to deal with it. When making alterations to their own source code, developers can use automated tools known as refactorings to enact changes. Existing refactorings rely on developers having access to the source code where an entity is declared and the locations where it is referenced. Refactoring tools ensure that changes to a declaration are propagated to update all the locations where that entity was referenced.
Keywords/Search Tags:Refactoring, References, Software, Developers, Source code, Changes
Related items