Please use this identifier to cite or link to this item:
http://dx.doi.org/10.25673/121098| Title: | API Misuses : a journey along their causes and prevention to automated techniques for detection and repair |
| Author(s): | Nielebock, Sebastian |
| Referee(s): | Ortmeier, Frank |
| Granting Institution: | Otto-von-Guericke-Universität Magdeburg, Fakultät für Informatik |
| Issue Date: | 2025 |
| Extent: | xv, 353 Seiten |
| Type: | Hochschulschrift |
| Type: | PhDThesis |
| Exam Date: | 2025 |
| Language: | English |
| URN: | urn:nbn:de:gbv:ma9:1-1981185920-1230511 |
| Subjects: | Application Programming Interface Misuses Software Reuse Root Causes Prevention Mechanisms Automated Misuse Detection Automated Misuse Repair |
| Abstract: | Context A prevalent amount of modern software development relies on reuse of existing software components and functionalities from software libraries or frameworks. Such libraries or frameworks encapsulate expert and domain knowledge (e.g., secure cryptographic algorithms) behind a so-called Application Programming Interface (API). So-called API developers design and develop these APIs. This way, other developers – so-called client developers – who do not necessarily have detailed expert knowledge can reuse these software components and functionalities via the API. We denote this as API usage. When using the API, client developers can apply the API differently than it was expected by the API developers, which can cause a deviant, negative behavior of the software. We denote this as API misuse. API misuses are known to be prevalent and have severe functional (e.g., software crashes) as well as non-functional (e.g., security issues) implications. Objective In this thesis, we explore API misuses from three essential perspectives.
First, we aim to contribute an overview of the root causes of API misuses, which not only focuses on the root causes but also emphasizes the methodologies and, thus, the scientific validity of these causes. We also relate the root causes to known prevention mechanisms (i.e., techniques and processes), determine the sufficiency of research efforts on prevention, and identify research gaps.
Second, we target improvements on API misuse detectors, which currently suffer from high false positive rates (i.e., falsely denoting correct API usages as misuses). We aim to leverage changes of API usages in two ways: (1) using them as a basis to detect misuse in the change itself, and (2) reusing previous fix changes of API misuses as template for finding similar misuses.
Third, we aim to explore the ability to use the artifacts from API misuse detection as repair templates for an Automated Program Repair (APR) technique.
Method We obtain the overview of root causes and prevention mechanisms by applying two subsequent Systematic Literature Reviews (SLRs) on relevant empirical studies. Afterward, we map the causes, prevention mechanisms, and their applied research methodologies by applying open coding from qualitative research. To summarize the state-of-the-art detection and repair techniques, we also apply SLRs. We target the improvement in detection and the exploration of repair by engineering research, namely, implementing and validating software artifacts. The experiments of these artefacts reuse existing real-world API misuse datasets from research as well as a dataset we collected and preprocessed from open-source projects. Results Based on the three perspectives, namely causes & prevention, detection, and repair, we summarize four essential contributions.
First, based on our summary of several root causes, we identified research gaps for certain root causes as well as the previously unexplored dependencies among several causes. We also provided a mechanism to describe these dependencies. Second, using our obtained summary of the prevention mechanisms, we identified research gaps to effectively target the aforementioned root causes. Third, we found that our both techniques for API misuse detection, namely, using the change to identify misuses as well as applying previous fixes as a detection basis, improve the precision compared to state-of-the-art misuse detectors. This way, the second approach (i.e., using previous fixes) outperforms the first one (i.e., leveraging change information itself).
Fourth, we found that the artifacts from misuse detection also provide promising results toward an API-specific APR, with our approach having conceptual benefits compared to conventional APR techniques. Conclusion In summary, we provide an overview of the causes & prevention of API misuses and contribute techniques for their automated detection and repair. This way, researchers can better steer their research efforts on API misuses for different steps discussed in this thesis and build on our software artifacts and results. For practitioners, we provide valuable insights on applicable techniques and processes for API usages, which can be included in the software development as well as the education. Kontext Ein umfassender Anteil der modernen Softwareentwicklung basiert auf der Wiederverwendung von Softwarekomponenten und -funktionalitäten aus Softwarebibliotheken oder -frameworks. Solche Bibliotheken oder Frameworks kapseln Experten- und Domänenwissen (bspw. sichere Kryptografiealgorithmen) in sogenannten Application Programming Interface (API), dt. Programmierschnittstellen. Sogenannte API Entwickelnde entwerfen und entwickeln diese APIs. Somit können durch die API andere Entwickelnde – sogenannte Client Entwickelnde –, die nicht notwendigerweise detailliertes Expertenwissen besitzen, die Softwarekomponenten und -funktionalitäten wiederverwenden. Wir bezeichnen dies als API Verwendung. Beim Verwenden der API können Client Entwicklende die API anderes benutzen, als dies durch die API Entwickelnden erwartet wurde, was zu einem abweichenden, negativen Verhalten der Software führen kann. Wir bezeichnen dies als API Fehlverwendung. API Fehlverwendungen sind ein prävalentes Problem und verursachen schwere funktionale (bspw. Softwareabstürze) als auch nicht-funktionale (bspw. IT-Sicherheitslücken) Probleme. Zielstellung In dieser Dissertation, erforschen wir API Fehlverwendungen aus drei essentiellen Perspektiven. Erstens, zielen wir darauf ab einen Überblick über die Kernursachen von API Fehlverwendungen beizutragen, welcher nicht nur auf die Kernursachen an sich fokussiert, sondern auch die Methodiken und somit die wissenschaftliche Validit¨at dieser Kernursachen mit einbezieht. Zudem verkn¨upfen wir die Kernursachen mit bekannten Präventionsmechanismen (d.h. Techniken und Prozessen), bestimmen die Hinlänglichkeit des Forschungsaufwands für Präventionen und identifizieren Forschungslücken. Zweitens, streben wir Verbesserungen von API Fehlverwendungsdetektoren an, da jene aktuell hohe Falsch-Positiv-Raten aufweisen (d.h., falsche Erkennung von korrekten API Verwendungen als Fehlverwendungen). Wir beabsichtigen dabei Änderungen von API Verwendungen zweierlei einzusetzen: (1) Nutzen der Änderungen selbst um darin Fehlverwendungen zu erkennen und (2) Wiederverwenden von vorherigen korrigierenden Änderungen von API Fehlverwendungen als Vorlage, um ähnliche Fehlverwendungen zu finden. Drittens, evaluieren wir die Möglichkeit die Artefakte aus der API Fehlverwendungsdetektion als Reparaturvorlage für eine automatisierte Programmreparaturtechnik zu nutzen. Methodik Wir ermitteln den Überblick von Kernproblemen und Präventionsmechanismen durch die Nutzung zweier aufeinanderfolgender systematischer Literaturrecherchen von relevanten empirischen Studien. Danach verbinden wir die Kernursachen, die Präventionsmechanismen sowie deren zugehörige wissenschaftliche Methoden durch Anwendung von Open Coding Methodiken aus der qualitativen Forschung. Zur Zusammenfassung des Stands der Forschung von Detektions- und Reparaturtechniken nutzen wir ebenfalls systematische Literaturrecherchen. Die angestrebte Verbesserung der Detektion sowie die Exploration von Reparaturtechniken beabsichtigen wir mit Methoden der Ingenieurwissenschaften, konkret der Implementierung und Validierung von Softwareartefakten durchzuführen. Im Rahmen der experimentellen Analyse dieser Artefakte nutzen wir bestehende Forschungsdatensätze von realen API Fehlverwendungen sowie einem von uns gesammelten und aufbereiten Datensatz von Open Source Projekten. Ergebnisse Basierend auf den drei Perspektiven Ursachen & Präventionen, Detektion und Reparatur, können wir vier essentielle Beiträge zusammenfassen. Erstens, basierend auf unserer Übersicht zahlreicher Kernursachen, identifizierten wir Forschungslücken für bestimmte Ursachen als auch für bisher nicht erforschte Abhängigkeiten zwischen zahlreichen Kernursachen. Zudem stellen wir einen Mechanismus bereit um diese Abhängigkeiten zu beschreiben. Zweitens, mittels unserer Übersicht über Präventionsmechanismen identifizierten Forschungslücken jener, um die zuvor genannten Kernursachen effektiv besser zu adressieren. Drittens, ermittelten wir das unsere beiden Techniken zur API Fehlverwendungsdetektion, konkret, Änderungen zur Identifikation von Fehlverwendungen nutzen, als auch die Verwendung vorheriger Korrekturen als Detektionsgrundlage, die Präzision gegenüber aktuellen Fehlverwendungsdetektoren verbessern. Dabei übertrifft der zweite Ansatz (d.h. Verwenden früherer Korrekturen) den ersten (d.h. Nutzen der Änderung selbst). Viertens, fanden wir heraus, dass Artefakte der Fehlverwendungsdetektion auch vielversprechende Ergebnisse für eine API-spezifische, automatische Programmreparatur ermöglichen, wobei unser Ansatz konzeptionelle Vorteile gegenüber konventionellen automatischen Programmreparaturtechniken besitzt. Fazit Zusammenfassend bieten wir eine Übersicht der Kernursachen & Präventionen von API Fehlverwendungen und leisten Beiträge in Form von automatisierten Techniken zur Detektion und Reparatur jener Fehlverwendungen. Dadurch können Forschende ihren Forschungsaufwand bzgl. API Fehlverwendungen anhand der in dieser Dissertation diskutierten Schritte besser steuern und unsere Softwareartefakte und Ergebnisse als Grundlage weiterer Forschung nutzen. Für Anwendende bieten wir wertvolle Erkenntnisse bzgl. anwendbarer Techniken und Prozesse für API Verwendungen, die in die Softwareentwicklung und Ausbildung einfließen können. |
| Annotations: | Literaturverzeichnis: Seite 291-351 |
| URI: | https://opendata.uni-halle.de//handle/1981185920/123051 http://dx.doi.org/10.25673/121098 |
| Open Access: | Open access publication |
| License: | (CC BY 4.0) Creative Commons Attribution 4.0 |
| Appears in Collections: | Fakultät für Informatik |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| Nielebock_Sebastian_Dissertation_2025.pdf | Dissertation | 14.45 MB | Adobe PDF | ![]() View/Open |
Open access publication
