Publication Type

PhD Dissertation

Version

publishedVersion

Publication Date

1-2023

Abstract

A seam in software is a place where two components within a software system meet. There are more seams in software now than ever before as modern software systems rely extensively on third-party software components, e.g., libraries. Due to the increasing complexity of software systems, understanding and improving the reliability of these components and their use is crucial. While the use of software components eases the development process, it also introduces challenges due to the interaction between the components.

This dissertation tackles problems associated with software reliability when using third-party software components. Developers write programs that interact with libraries through their Application Programming Interfaces (API). Both static and dynamic analysis of API-using code require knowledge of the API and its usage constraints. Hence, we develop techniques to learn and model the usage constraints of APIs. Next, we apply the insights gleaned from our studies to support bug-finding techniques using static and dynamic analysis. Then, we look into larger software systems comprising multiple components. We propose techniques for mining rules to monitor the joint behaviors of apps, and for exploiting known library vulnerabilities from a project importing a library. These techniques aim to assist developers to better understand third-party components, and to detect weaknesses in software systems.

Keywords

Software Engineering, Software Supply Chain Security, Artificial Intelligence for Software Engineering

Degree Awarded

PhD in Computer Science

Discipline

Software Engineering | Systems Architecture

Supervisor(s)

LO, David

First Page

1

Last Page

309

Publisher

Singapore Management University

City or Country

Singapore

Copyright Owner and License

Author

Share

COinS