Please note: This master’s thesis presentation will take place online.
Sruthi Venkatanarayanan, Master’s candidate
David R. Cheriton School of Computer Science
Supervisor: Professor Patrick Lam
Software projects make use of libraries extensively. Libraries have intended API surfaces — sets of exposed library interfaces that library developers expect clients to use. However, in practice, clients only use small fractions of intended API surfaces of libraries. Clients also use libraries in unexpected ways sometimes. Understanding usage patterns of library APIs by clients is beneficial to both client and library developers — applications include version upgrades, breaking changes and software bloating.
We have implemented a tool to study both static and dynamic interactions between clients, the libraries they use, and those libraries’ direct dependencies. We use this tool to carry out a detailed study of API usage patterns on 90 clients and 11 libraries. We then describe two additional developer-focussed applications of the data that our tool produces: a secondary visualization tool VizAPI, as well as the concept of library fission. VizAPI allows client developers to answer the following query about the interaction of their code and the libraries they depend on: Will my code be affected by breaking changes in library APIs? Additionally, library developers can find out about downstream code: which APIs in their source code are commonly used by clients?
The concept of library fission, by which we mean the splitting of libraries into sub-modules, is based on the usage patterns that we observe. This can potentially help library developers release backward compatible versions of their libraries. It can help client developers isolate breaking changes and reduce the probability of vulnerabilities and version conflicts that may be introduced through direct or transitive dependencies.
To join this master’s thesis presentation on Zoom, please go to https://uwaterloo.zoom.us/j/97459944995.
200 University Avenue West
Waterloo, ON N2L 3G1