Seeking the ground truth: a retroactive study on the evolution and migration of software libraries

@inproceedings{Cossette2012SeekingTG,
  title={Seeking the ground truth: a retroactive study on the evolution and migration of software libraries},
  author={Bradley Cossette and Robert J. Walker},
  booktitle={SIGSOFT FSE},
  year={2012}
}
Application programming interfaces (APIs) are a common and industrially-relevant means for third-party software developers to reuse external functionality. Several techniques have been proposed to help migrate client code between library versions with incompatible APIs, but it is not clear how well these perform in an absolute sense. We present a retroactive study into the presence and nature of API incompatibilities between several versions of a set of Java-based software libraries; for each… 

Tables from this paper

Halo: A Multi-feature Two-pass Analysis to Identify Framework API Evolution
TLDR
Halo is introduced, a novel hybrid approach that uses multiple features, including call dependency relations, method documentations, inheritance relations, and text similarity, to implement Halo in Java and compare it with four state-of-the-art approaches.
Using Structural Generalization to Discover Replacement Functionality for API Evolution
TLDR
This work presents a new approach, matching via structural generalization (MSG), that recommends replacement functionality from a new API version, based on its structural similarity to functionality removed from the old API, to provide useful results in API migration situations where the others fail.
A study of library migrations in Java
TLDR
The main result of the study is that recommendations of libraries can be inferred from the analysis of the migration trends, and a support to developers who want to migrate their libraries is proposed.
How Does API Migration Impact Software Quality and Comprehension? An Empirical Study
TLDR
An online portal is released that helps software developers to understand the pre-impact of a library migration on software quality and recommend migration examples that adopt the best design and implementation practices to improve software quality.
Automatic discovery of function mappings between similar libraries
TLDR
This work introduces an approach that analyzes source code changes from software projects that already underwent a given library migration to extract mappings between functions and demonstrates the applicability of this approach on several library migrations performed on the Java open source software projects.
Semantic versioning and impact of breaking changes in the Maven repository
Automating third-party library migrations
TLDR
A new approach to machine learning that recommends the comparison of methods between two unknown libraries using features extracted from the lexical similarity between method names and textual similarity of method documentation is described.
On the Use of Information Retrieval to Automate the Detection of Third-Party Java Library Migration at the Method Level
TLDR
This paper introduces a novel mining approach that extracts existing instances of library method replacements that are manually performed by developers for a given library migration to automatically generate migration patterns in the method level, and combines the mined method-change patterns with method-related lexical similarity to accurately detect mappings between replacing/replaced methods.
A Study of Library Migration in Java Software
TLDR
The main result of the study is that library migration is not a frequent practice but depends a lot on the nature of the software as well as the natureof the libraries.
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 29 REFERENCES
ReBA: refactoring-aware binary adaptation of evolving libraries
TLDR
This paper presents the solution and a tool, ReBA, that automatically generates compatibility layers between new library APIs and old clients, and shows that the approach effectively adapts clients to new library versions, and is efficient.
AURA: a hybrid approach to identify framework evolution
TLDR
AURA, a novel hybrid approach that combines call dependency and text similarity analyses to overcome limitations of one-replaced-by-many and many-re replaced- by-one methods, is introduced.
API-Evolution Support with Diff-CatchUp
TLDR
The approach to tackle the API-evolution problem in the context of reuse-based software development is discussed, which automatically recognizes the API changes of the reused framework and proposes plausible replacements to the "obsolete" API based on working examples of the framework code base.
Automatically generating refactorings to support API evolution
TLDR
A novel, lightweight technique that takes advantage of information that programmers can insert in the code rather than forcing them to use a different tool to re-express it, and is applicable in more than 75% of the cases.
Semi-automatic update of applications in response to library changes
  • K. Chow, D. Notkin
  • Computer Science
    1996 Proceedings of International Conference on Software Maintenance
  • 1996
TLDR
In the authors' approach, a library maintainer annotates changed functions with rules that are used to generate tools that will update the applications that use the updated libraries, in exchange for a small added amount of work by the library maintainers, costs for each application maintainer can be reduced.
How do APIs evolve? A story of refactoring
TLDR
It is discovered that the changes that break existing applications are not random, but tend to fall into particular categories, which suggests that refactoring-based migration tools should be used to update applications.
Refactoring support for class library migration
TLDR
This work presents an approach in which mappings between legacy classes and their replacements are specified by the programmer, and an analysis based on type constraints determines where declarations and allocation sites can be updated.
How do APIs evolveq A story of refactoring: Research Articles
Frameworks and libraries change their APIs. Migrating an application to the new API is tedious and disrupts the development process. Although some tools and ideas have been proposed to solve the
CatchUp! Capturing and replaying refactorings to support API evolution
  • J. Henkel, A. Diwan
  • Computer Science
    Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005.
  • 2005
TLDR
This work presents a lightweight approach for evolving application programming interfaces (APIs), which does not depend on version control or configuration management systems, and captures API refactoring actions as a developer evolves an API.
Automatic Inference of Structural Changes for Matching across Program Versions
TLDR
This work represents structural changes as a set of high-level change rules, automatically infers likely change rules and determines method-level matches based on the rules and shows that this representation can serve as a better basis for other software engineering tools.
...
1
2
3
...