MuDetect: Nie mehr eine API falsch verwenden?

Conference Day - 21. Februar
 
14:15
15:00
 
Technologien und Tools
 
Seminarraum 1.812

In der heutigen Softwareentwicklung ist der Einsatz externer Bibliotheken kaum mehr wegzudenken. Leider sind die Schnittstellen (APIs) dieser Bibliotheken nicht immer intuitiv und ausreichend dokumentiert. Daher kommt es immer wieder zu Fehlern, weil Entwickler eine API anders verwendet haben als es der API-Entwickler vorgesehen hat. Solche Fehler werden auch "API Misuses" genannt. Ein klassisches Beispiel für einen API Misuse ist, wenn ein weiteres Element aus einem `Iterator` abgerufen wird ohne vorher zu überprüfen, dass ein weiteres Element existiert. [Eine Studie][misuse] hat gezeigt, dass API Misuses sowohl während der Entwicklung als auch in Releases immer wieder Probleme bereiten und in 7 von 10 Fällen Programmabstürze verursachen.

Leider ist es nicht generell möglich API Misuse durch das Design von APIs auszuschließen, denn statische Typsysteme, wie das von Java, sind nicht mächtig genug um API Misuse allgemein zu verhindern. Und auch statische Checker, wie [FindBugs][findbugs], finden nur wenige API Misuses, da oft keine entsprechenden Checks vorhanden sind. Wir brauchen also andere Ansätze um dem Problem zu begegnen.

In den letzten fünf Jahren habe ich an der TU Darmstadt automatisierte Verfahren zur Identifikation von API Misuse (API-Misuse Detektoren) erforscht und entwickelt. Solche Detektoren versuchen die korrekte Verwendung von APIs mithilfe maschineller Lernverfahren selbstständig zu erlernen und anschließend API Misuses zu erkennen. Mit ihrer Hilfe konnte ich erfolgreich API Misuses selbst in gut gepflegten Projekten wie dem Google Closure Compiler und TestNG finden.

In meinem Vortrag möchte ich über meine Erfahrungen, die Stärken und die Grenzen von API-Misuse Detektoren berichten. Ich werde diskutieren inwiefern maschinelles Lernen Entwickler sinnvoll bei der Qualitätssicherung unterstützen kann und ob Entwickler in Zukunft von solchen Ansätzen ersetzt werden können.

[misuse]: http://sven-amann.de/publications/2016-05-MSR-MUBench-dataset.html
[findbugs]: http://findbugs.sourceforge.net/

Sven Amann

CQSE GmbH, Deutschland

Sven Amann studierte Informatik an der TU Darmstadt und der Pontifícia Universidade Católica do Rio de Janeiro. Bereits in seinem Studium setzte er sich intensiv mit Software Engineering, agilen Methoden und Projektmanagement auseinander. Zeitgleich sammelte er praktische Erfahrung als Werkstudent bei Software AG und als selbstständiger Softwareentwickler u.A. für die GFTN e.V. und die Laborgenossenschaft Darmstadt e.G.. Er promovierte am Fachgebiet Softwaretechnik der TU Darmstadt zum Thema “API-Misuse Detection”, mit Förderung durch das Führungskräfteentwicklungsprogramm Software Campus. Im Rahmen seiner Initiative "Let's Developer" veröffentlicht er seit 2014 Materialien über Softwareentwicklung und Software Craftsmenship auf LetsDeveloper.com. Anfang 2017 gründete er AcademicsCode.com, mit dem Ziel Softwareentwicklung aus einem akademischen Blickwinkel zu diskutieren. Seit Oktober 2018 arbeitet er für die CQSE GmbH im Bereich Software Quality Improvement.