Font Size: a A A

Change-Based Software Engineering: Using Reified Changes for Test Selection and Refactoring Reconstruction

Posted on:2016-06-27Degree:Ph.DType:Thesis
University:Universiteit Antwerpen (Belgium)Candidate:Soetens, Quinten DavidFull Text:PDF
GTID:2478390017980805Subject:Computer Science
Abstract/Summary:
Software evolution is inevitable. Indeed a software system needs to be constantly modified and updated, else it risks becoming less and less useful. Since change takes a leading role in software development, we consider changes as a central entity. Our approach is to consider changes as first class citizens in the software development process. As such a change becomes a tangible entity that we can analyse and manipulate. In recent years many researchers have gone down this road and have devised several applications in which the reification of changes proved beneficial including, but not limited to: replaying changes on a system to better understand its evolution; making developers aware of changes made by other developers; mining a set of changes for frequently occurring change patterns; and using those patterns to suggest or predict future changes. This thesis presents a complete overview of the state-of-the-art in change reification.;Moreover, in this thesis, we focussed on two applications in the context of software development, where change reification proved beneficial: Test Selection and Refactoring Reconstruction.;For the test selection we used dependencies between the changes to trace a selected set of changes to a set of relevant tests for those changes. We then proceeded to compare the quality and the size of the reduced set of tests with the full test suite. Our results show that we are able to reach a sizeable reduction of the complete test suite, yet with a comparable number of mutants killed by the reduced test suite.;For the refactoring reconstruction we considered a graph representation of the changes (with the changes as nodes and the dependencies as edges) and then mined this graph for pre-defined abstract patterns (representing refactoring operations). We demonstrate that this approach of using changes recorded from the IDE is more accurate in a significant number of situations than the state-of-the-art snapshot-based technique RefFinder.
Keywords/Search Tags:Changes, Software, Test selection, Refactoring, Using
Related items