Download presentation
Presentation is loading. Please wait.
Published byJasper Ezra McDaniel Modified over 9 years ago
1
Presented by: Ashgan Fararooy Referenced Papers and Related Work on:
2
Possible Related Papers Automatic Inference of Structural Changes for Matching Across Program Versions An Approach to Software Evolution Based on Semantic Change Understanding source code evolution using abstract syntax tree matching Recomposition - Coordinating a Web of Software Dependencies Identifying the Semantic and Textual Differences Between Two Versions of The Program Visualizing and Querying Software Structures
3
Miryung Kim, David Notkin, Dan Grossman
4
Abstract Goal: Mapping code elements in one version of a program to corresponding code elements in another version A fundamental building block for many software engineering tools Tools that match code elements or identify structural changes (refactorings and API changes): Version merging tools Regression testing tools Profile propagation tools
5
Abstract Two important limitations of such tools Having difficulty disambiguating among many potential matches or refactoring candidates Hard to analyze their outcome due to an unstructured representation of results Proposed approach to overcome these limitations: Represent structural changes as a set of high-level change rules Automatically infer likely change rules and determines method-level matches based on the rules
6
Motivation Interest in mining software repositories is demanding more effective and systematic matching techniques The unstructured, usually lengthy, list of matches or refactorings may prevent the result of existing tools from being broadly used in mining software repository research
7
Background To match code elements, the differences between two programs must be identified Computing semantic differences is undecidable Tools typically approximate matching via syntactic similarity Existing refactoring reconstruction tools look for code changes that match a predefined set of refactoring patterns Problem: either too many refactoring candidates or no candidates
8
Change Rules Question: “Given two versions of a program, what changes occurred with respect to a particular vocabulary of changes?” A change vocabulary characterizes the applications for which the matching results can be used For example, “diff” defines a change vocabulary in terms of delete, add, and move line
9
Change Rules The paper introduces a change vocabulary with the goal of representing groups of related homogeneous changes precisely The core of their change vocabulary is a change rule consisting of a quantifier and a scope to which a low-level transformation applies “For all x in (scope − exceptions),t(x),” where t is a transformation, scope is a set of code elements, and exceptions is a subset of scope Their change vocabulary describes structural changes at or above the level of a method header
10
Change Rules Transformation Samples:
11
Change Rules Change Rule Samples: All methods whose class name either includes Plot or JThermometer changed their package name from chart to chart.plot:
12
Change Rules Change Rule Samples: All methods that match the chart.*Plot.get*Range() pattern take an additional ValueAxis argument, except the getVerticalRange method in the MarkerPlot class:
13
Rule-based Matching The paper defines a matching between two versions of a program by a set of change rules The scope of one rule may overlap with the scope of another rule as some methods undergo more than one transformation The inference algorithm ensures that it infers a set of rules such that the application order of rules does not matter The methods that are not matched by any rules are deleted or added methods
14
Applications of Change Rules Bug Finding Assisted Documentation API Evolution Analysis API Update Identifying Related Changes
15
Evaluation & Conclusion By applying their tool to several open source projects, the authors show that it identifies matches that are difficult to find using other approaches They also show their approach produces more concise results than other approaches They claim their approach is the first to automatically infer structural changes and represent them concisely as a set of rules
16
Rebecca E. Grinter
17
Abstract Revisiting the concept of "recomposition”: All the work that development organizations do to make sure that their product fits together and into a broader environment of other technologies Technologies, such as Configuration Management (CM) systems, can ameliorate some of a software development team’s need to engage in recomposition Technological solutions do not scale to address other kinds of recomposition needs
18
Summary The paper focuses on various organizational responses to the need for recomposition Describes how those responses are manifested in the day-to-day communications and responsibilities of individuals throughout the organization Highlights how changes in an organization complicate recomposition
19
Conclusion The paper concludes with a discussion of three features of software development work that are revealed by recomposition: The affects of environmental disturbances on development work The types of dependencies that require recomposition The images of organizations required to manage the recomposition
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.