14:00
18:00

Software libraries are widely used in modern software development by developers to integrate functionality already implemented by other developers into an application. Such a reliance on third-party code poses challenges related to maintenance, compatibility, and evolution, for both client developers and library developers. In this thesis, we analyze the relationship and boundaries that exist between libraries and clients. A distinctive feature of applications that use libraries is the presence and use of application programming interfaces (APIs). These APIs serve as the primary interface that developers use to access a specific feature of a library. This interface enables two-way data transfer, from the client to the library and from the library to the client. Library developers often lack insight into how their libraries are actually used, which hinders proper and safe evolution. Conversely, client developers often struggle to strike a balance between updating to the latest version of their dependencies and maintaining compatibility without breaking their code. Indeed, updating dependencies exposes clients to the risk of breaking changes (BCs) originating from their dependencies. While some work already exists on certain types of compatibility issues, others remain unexplored. Building on the existence of such boundaries, we propose new methods to help libraries understand their usage and clients understand the behavioral changes they face.

Amphi LaBRI