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 |