TU Darmstadt / ULB / TUprints

Machine Learning as a Mean to Uncover Latent Knowledge from Source Code

Cergani, Ervina (2020):
Machine Learning as a Mean to Uncover Latent Knowledge from Source Code.
Darmstadt, Technische Universität,
DOI: 10.25534/tuprints-00011658,
[Ph.D. Thesis]

This is the latest version of this item.

[img]
Preview
Text
ErvinaCerganiPhDThesis.pdf
Available under CC-BY-SA 4.0 International - Creative Commons, Attribution Share-alike.

Download (1MB) | Preview
Item Type: Ph.D. Thesis
Title: Machine Learning as a Mean to Uncover Latent Knowledge from Source Code
Language: English
Abstract:

Becoming increasingly complex, software development relies heavily on the reuse of existing libraries. Such libraries expose their functionality through Application Programming Interfaces (APIs) for developers to interact with, as effective means for code reuse. However, developers using an API must be aware of how to efficiently and correctly use it in their development tasks in order to deliver simple, clear, comprehensive and correct software. To assist developers work with APIs more efficiently, a family of developer- assistance tools known as Recommender Systems for Software Engineering (RSSEs) have shown to be useful in increasing programmers’ productivity. Applications of RSSEs are based on learning API usage patterns by analyzing source code. In reaction to this, many approaches have been proposed for learning API usage patterns from code repositories. However, a major challenge in these approaches is the discovery of latent knowledge in source code. Current approaches heavily rely on program analyses that predefine the learning process, and then use different algorithms to aggregate the detailed information extracted from source code. On this thesis, we aim to redirect the focus on using advanced machine learning tools to uncover latent knowledge in source code. Machine learning algorithms are known to use general input formats, are fully automated and work well across different domains. Therefore, to investigate the advantages of machine learning approaches and their potential in software engineering, we consider two different dimensions. First, we use the same program analyses as used by a state of the art method call recommender, and investigate if replacing the existing learning approach (canopy clustering) with a more powerful machine learning algorithm (Boolean Matrix Factorization - BMF), discovers additional knowledge that was not possible with the previous approach. We find that BMF is indeed able to automatically discover the number of clusters to represent the object usage space, and identifies corner cases (noise) in the data, while reducing model size and improving inference speed without compromising prediction quality. Second, we use an event stream mining algorithm that can automatically learn different code representations (pattern types), without complex domain knowledge needed to encode a-priori. We evaluate the quality of the learned patterns on the application context of misuse detection, and compare its performance with five state of the art misuse detectors. Our evaluation results show that the patterns learned perform better in terms of precision by ranking true positives higher in the top findings, and in terms of recall by being able to detect more misuses in the source code. Our results show practical evidence of the positive impact that machine learning tools can bring to the field of software engineering, in terms of automatically discover latent knowledge in source code, and their comparability (or even better) performance with respect to state of the art approaches.

Alternative Abstract:
Alternative AbstractLanguage
Die Softwareentwicklung wird immer komplexer und hängt stark von der Wiederverwendung vorhandener Softwarebibliotheken ab. Solche Bibliotheken stellen ihre Funktionalität über APIs (Application Programming Interfaces) zur Verfügung, mit denen Entwickler interagieren können, um Code effektiv wiederzuverwenden. Entwickler, die eine API verwenden, müssen jedoch wissen, wie sie diese effizient und korrekt in ihren Entwicklungsaufgaben verwenden können, um einfache, klare, umfassende und korrekte Software bereitzustellen. Um Entwicklern die effizientere Arbeit mit APIs zu erleichtern, hat sich eine Reihe von Tools zur Entwicklerunterstützung, die als Recommender Systems for Software Engineering (RSSEs) bekannt sind, als nützlich erwiesen, um die Produktivität von Programmierern zu steigern. Anwendungen von RSSEs basieren auf dem Erlernen von API-Nutzungsmustern durch Analyse des Quellcode. Als Reaktion darauf wurden viele Ansätze vorgeschlagen, um API-Verwendungsmuster aus Code Repositorys zu lernen. Eine große Herausforderung bei diesen Ansätzen ist jedoch die Entdeckung latenten Wissens im Quellcode. Gegenwärtige Ansätze stützen sich stark auf Programm Analysen, die den Lernprozess vordefinieren und dann verschiedene Algorithmen verwenden, um die aus dem Quellcode extrahierten detaillierten Informationen zu aggregieren. In dieser Arbeit wollen wir den Fokus auf die Verwendung fortschrittlicher maschineller Lernwerkzeuge lenken, um latentes Wissen im Quellcode aufzudecken. Es ist bekannt, dass Algorithmen für maschinelles Lernen allgemeine Eingabeformate verwenden, vollständig automatisiert sind und in verschiedenen Bereichen gut funktionieren. Um die Vorteile von Ansätzen des maschinellen Lernens und ihre Potenziale in der Softwareentwicklung zu untersuchen, betrachten wir daher zwei verschiedene Dimensionen. Zuerst verwenden wir dieselben Programmanalysen wie ein letzte Stand der Technik Methodenaufrufempfehlung und untersuchen, ob der vorhandene Lernansatz (Canopy Clustering) durch einen leistungsfähigeren Algorithmus für maschinelles Lernen (Boolean Matrix Factorization - BMF) ersetzt wird, entdeckt zusätzliches Wissen, das mit dem vorherigen Ansatz nicht möglich war. Wir stellen fest, dass BMF tatsächlich in der Lage ist, die Anzahl der Cluster zur Darstellung des data Objekten automatisch zu ermitteln und Eckf ̈alle (Rauschen) in den Daten zu identifizieren, während die Modellgröße reduziert und die Inferenzgeschwindigkeit verbessert wird, ohne die Vorhersagequalität zu beeinträchtigen. Zweitens verwenden wir einen Event-Stream-Mining-Algorithmus, der automatisch verschiedene Codedarstellungen (Mustertypen) lernen kann, ohne dass komplexe Domänenkenntnisse für die a-priori-Codierung erforderlich sind. Wir bewerten die Qualität der erlernten Muster im Anwendungskontext der Missbrauchserkennung und vergleichen ihre Leistung mit fünf letzte Stand der Technik Missbrauchsdetektoren. Unsere Bewertungsergebnisse zeigen, dass die erlernten Muster in Bezug auf die Präzision besser abschneiden, indem echte Positive in den Top-Ergebnissen höher eingestuft werden, und in Bezug auf den Rückruf, indem mehr Missbräuche im Quellcode erkannt werden können. Unsere Ergebnisse zeigen praktische Beweise für die positiven Auswirkungen, die Tools für maschinelles Lernen auf das Gebiet der Softwareentwicklung haben können, indem sie automatisch latentes Wissen im Quellcode entdecken und deren Vergleichbarkeit (oder sogar bessere Leistung) in Bezug auf modernste Ansätze.German
Place of Publication: Darmstadt
Classification DDC: 000 Allgemeines, Informatik, Informationswissenschaft > 004 Informatik
Divisions: 20 Department of Computer Science > Software Technology
Date Deposited: 26 May 2020 13:22
Last Modified: 09 Jul 2020 06:31
DOI: 10.25534/tuprints-00011658
URN: urn:nbn:de:tuda-tuprints-116586
Referees: Mezini, Prof. Dr. Mira and Bockisch, Prof. Dr. Christoph
URI: https://tuprints.ulb.tu-darmstadt.de/id/eprint/11658
Export:

Available Versions of this Item

  • Machine Learning as a Mean to Uncover Latent Knowledge from Source Code. (deposited 26 May 2020 13:22) [Currently Displayed]
Actions (login required)
View Item View Item