Recommending Adaptive Changes for Framework Evolution
TL;DR: In a study of the evolution of the Eclipse JDT framework and three client programs, the approach recommended relevant adaptive changes with a high level of precision, and detected non-trivial changes typically undiscovered by current refactoring detection techniques.
read more
Abstract: In the course of a framework’s evolution, changes ranging from a simple refactoring to a complete rearchitecture can break client programs. Finding suitable replacements for framework elements that were accessed by a client program and deleted as part of the framework’s evolution can be a challenging task. We present a recommendation system, SemDiff, that suggests adaptations to client programs by analyzing how a framework was adapted to its own changes. In a study of the evolution of one open source framework and three client programs, our approach recommended relevant adaptive changes with a high level of precision. In a second study of the evolution of two frameworks, we found that related change detection approaches were better at discovering systematic changes and that SemDiff was complementary to these approaches by detecting non-trivial changes such as when a functionality is imported from an external library.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Recommendation Systems for Software Engineering
TL;DR: The authors provide an overview of recommendation systems for software engineering: what they are, what they can do for developers, and what they might do in the future.
483
API change and fault proneness: a threat to the success of Android apps
Mario Linares-Vasquez,Gabriele Bavota,Carlos Bernal-Cardenas,Massimiliano Di Penta,Rocco Oliveto,Denys Poshyvanyk +5 more
- 18 Aug 2013
TL;DR: A study analyzing how the fault- and change-proneness of APIs used by 7,097 (free) Android apps relates to applications' lack of success, estimated from user ratings.
LASE: locating and applying systematic edits by learning from examples
Na Meng,Miryung Kim,Kathryn S. McKinley +2 more
- 18 May 2013
TL;DR: The results indicate that LASE should help developers in automating systematic editing, as it is the first to do both for nontrivial program edits.
Automated API Property Inference Techniques
TL;DR: A comprehensive survey of over a decade of research on automated property inference for APIs is provided, which derives a classification and organization of over 60 techniques into five different categories based on the type of API property inferred: unordered usage patterns, sequential usage pattern, behavioral specifications, migration mappings, and general information.
Discovering and representing systematic code changes
Miryung Kim,David Notkin +1 more
- 16 May 2009
TL;DR: Logical Structural Diff is a tool that infers systematic structural differences as logic rules and notes anomalies from systematic changes as exceptions to the logic rules, and its ability to discover anomalies shows promise in detecting inconsistent changes.
References
The DaCapo benchmarks: java benchmarking development and analysis
Stephen M. Blackburn,Robin Garner,Chris Hoffmann,Asjad M. Khang,Kathryn S. McKinley,Rotem Bentzur,Amer Diwan,Daniel Feinberg,Daniel Frampton,Samuel Z. Guyer,Martin Hirzel,Antony L. Hosking,Maria Jump,Han Lee,J. Eliot B. Moss,Aashish Phansalkar,Darko Stefanovic,Thomas VanDrunen,Daniel von Dincklage,Ben Wiedermann +19 more
- 16 Oct 2006
TL;DR: This paper recommends benchmarking selection and evaluation methodologies, and introduces the DaCapo benchmarks, a set of open source, client-side Java benchmarks that improve over SPEC Java in a variety of ways, including more complex code, richer object behaviors, and more demanding memory system requirements.
Soot: a Java bytecode optimization framework
Raja Vallée-Rai,Phong Co,Etienne Gagnon,Laurie Hendren,Patrick Lam,Vijay Sundaresan +5 more
- 01 Nov 2010
TL;DR: Soot, a framework for optimizing Java* bytecode, is implemented in Java and supports three intermediate representations for representing Java bytecode: Baf, a streamlined representation of bytecode which is simple to manipulate; Jimple, a typed 3-address intermediate representation suitable for optimization; and Grimp, an aggregated version of Jimple suitable for decompilation.
Mining version histories to guide software changes
TL;DR: Data mining is applied to version histories in order to guide programmers along related changes: "Programmers who changed these functions also changed".
1K
Mining version histories to guide software changes
Thomas Zimmermann,P. Weibgerber,Stephan Diehl,Andreas Zeller +3 more
- 23 May 2004
TL;DR: The ROSE prototype can correctly predict further locations to be changed and show up item coupling that is undetectable by program analysis, and can prevent errors due to incomplete changes.