Font Size: a A A

Meta-differencing: An infrastructure for source code difference analysis

Posted on:2005-07-29Degree:Ph.DType:Dissertation
University:Kent State UniversityCandidate:Collard, Michael LFull Text:PDF
GTID:1458390008490773Subject:Computer Science
Abstract/Summary:
The dissertation proposes, realizes, and validates a novel approach for the representation and analysis of differences between source-code documents. The approach is termed meta-differencing as it supports the derivation of high-level facts about differences from differences. By using meta-differencing questions such as "What types of changes were made to a program?" or "Was a specific program entity changed?" can be mechanically answered. Questions about the context of those changes can also be addressed. Importantly, it allows these types of questions to be answered from a syntactic, structural, or documentary perspective. This is almost impossible to do with current methods and is typically done by manual inspection. Additionally, the answers to these questions are in a form suitable for further processing of the source code and their differences. This research directly supports engineers in software-evolution tasks such as change management, analysis of version histories, identification of possible errors, refactoring, impact analysis, etc.; Current mechanisms for source-code versioning do not easily take advantage of structural and syntactic information in the source code. This hinders the analysis and manipulation of difference information in a version history. The research develops a fine-grained syntactic-level differencing approach that directly supports the analysis of source-code differences. Specifically, by using this approach one can easily determine what type of syntactic construct or program entity was modified. More importantly, the morphological changes that occur within the source can be tracked.; Meta-differencing is built on top of a sophisticated underlying infrastructure. It utilizes srcML, an XML representation of the source code developed to support program-analysis tasks. This representation explicitly embeds high-level syntactic information within the source code in such a way that it does not interfere with the textual/documentary context of the source code.; The results of this research differ in several ways from related approaches. Meta-differencing allows querying that is not possible with either textual or semantic differencing. It extends the limited work in syntactic differencing to a broader range of software-engineering tasks. It provides for a representation of these differences that opens research possibilities into the further analysis and transformation of differences.
Keywords/Search Tags:Source, Representation, Meta-differencing, Approach
Related items