srcDiff: Syntactic Differencing to Support Software Maintenance and Evolution
Main Author: | |
---|---|
Language: | English |
Published: |
Kent State University / OhioLINK
2017
|
Subjects: | |
Online Access: | http://rave.ohiolink.edu/etdc/view?acc_num=kent150074391000591 |
id |
ndltd-OhioLink-oai-etd.ohiolink.edu-kent150074391000591 |
---|---|
record_format |
oai_dc |
spelling |
ndltd-OhioLink-oai-etd.ohiolink.edu-kent1500743910005912021-08-03T07:03:35Z srcDiff: Syntactic Differencing to Support Software Maintenance and Evolution Decker, Michael John Computer Science differencing syntactic differencing change comprehension change visualization stereotypes method stereotypes code rewrite code replace code conversion The dissertation presents the construction and evaluation of an efficient and scalable rule-based syntactic-differencing approach and its application to several software engineering research tasks. The approach, called srcDiff, is built upon the srcML infrastructure. srcML adds abstract syntactic information into the code via an XML format. A syntactic difference of srcML documents is then computed. During this process, the differences are further refined using a set of rules that model typical editing patterns of source code by developers. Thus, the resulting deltas model edits to the code that are programmer centric versus a purely syntactic tree edit view. Other syntactic differencing approaches focus on obtaining an optimal tree-edit distance with the assumption that this will produce an accurate difference. By contrast, srcDiff, purposely deviates from an optimal tree-difference in order to create a delta that is both easier to understand and better models changes between the original and modified.To evaluate the approach, a comparison study against a state-of-the-art syntactic differencing approach and two line-based differencing tools is conducted as an online within-participant study of about 70 subjects. The results show that the rule-based syntactic-differencing approach produces more accurate and understandable deltas. srcDiff is utilized to analyze the complete history of fifty open-source software systems for a number of software engineering research tasks. The first task is an investigation into the stability and consequences of changes in a method’s stereotype. The results show that a method’s stereotype is very stable and that certain classes of stereotype changes are indicators of poor method design and inappropriate changes to methods. The second task is an investigation into how often developers rewrite code and the consequences. The results show that developers frequently rewrite code at the text, expression, and statement level, and that the replacement of functions is not uncommon. The last study investigates how often developers convert code from one type to another. The results show that conversion occurs most frequently between declaration-statements, expression-statements, and return-statements. The consequence for both code replacement and code conversion is that a syntactic differencing approach must support both to arrive at meaningful and accurate deltas. 2017-07-24 English text Kent State University / OhioLINK http://rave.ohiolink.edu/etdc/view?acc_num=kent150074391000591 http://rave.ohiolink.edu/etdc/view?acc_num=kent150074391000591 unrestricted This thesis or dissertation is protected by copyright: all rights reserved. It may not be copied or redistributed beyond the terms of applicable copyright laws. |
collection |
NDLTD |
language |
English |
sources |
NDLTD |
topic |
Computer Science differencing syntactic differencing change comprehension change visualization stereotypes method stereotypes code rewrite code replace code conversion |
spellingShingle |
Computer Science differencing syntactic differencing change comprehension change visualization stereotypes method stereotypes code rewrite code replace code conversion Decker, Michael John srcDiff: Syntactic Differencing to Support Software Maintenance and Evolution |
author |
Decker, Michael John |
author_facet |
Decker, Michael John |
author_sort |
Decker, Michael John |
title |
srcDiff: Syntactic Differencing to Support Software Maintenance and Evolution |
title_short |
srcDiff: Syntactic Differencing to Support Software Maintenance and Evolution |
title_full |
srcDiff: Syntactic Differencing to Support Software Maintenance and Evolution |
title_fullStr |
srcDiff: Syntactic Differencing to Support Software Maintenance and Evolution |
title_full_unstemmed |
srcDiff: Syntactic Differencing to Support Software Maintenance and Evolution |
title_sort |
srcdiff: syntactic differencing to support software maintenance and evolution |
publisher |
Kent State University / OhioLINK |
publishDate |
2017 |
url |
http://rave.ohiolink.edu/etdc/view?acc_num=kent150074391000591 |
work_keys_str_mv |
AT deckermichaeljohn srcdiffsyntacticdifferencingtosupportsoftwaremaintenanceandevolution |
_version_ |
1719452694759866368 |