Die Nutzbarmachung von automatischen Debugging-Ansätzen
Automated Debugging in Use
Wissenschaftsdisziplinen
Informatik (100%)
Keywords
-
Program Slicing,
Software Fault Localization,
Spectrum-Based Fault Localization,
Model-Based Software Debugging,
Software Debugging
Der Prozess der Fehlerkorrektur in Software wird als Debugging bezeichnet. Das Debugging ist ein zeitintensiver Prozess, da selbst kleine Programme aus mehreren tausend Codezeilen bestehen können, die manuell untersucht werden müssen um diejenigen Zeilen zu finden, die für einen beobachteten Fehler (z. B. falsche Berechnungen oder Programmabstürze) verantwortlich sind. Es wird geschätzt, dass Softwareentwickler 30 % bis 90 % ihrer Zeit für das Debuggen verwenden. Somit könnte die Verbesserung des Debugging-Prozesses eine enorme Menge an Geld und Zeit sparen. Viele Forscher haben Ansätze entwickelt, die Softwareentwickler beim Debuggen unterstützen. Leider werden diese Ansätze in der Praxis selten verwendet. Dieses Projekt hat daher das Ziel die Lücke zwischen akademischer Forschung und Debugging in der Praxis zu schließen und besteht aus drei Phasen: Zunächst werden wir die Gründe untersuchen, warum existierende akademische Ansätze in der Praxis selten genutzt werden. Wir werden Softwareentwickler beim Debuggen von Programmen beobachten, um den Status quo des Debuggens in der Praxis zu beurteilen. Solche Beobachtungsstudien sind sehr zeitaufwendig; daher können sie nur für eine kleine Gruppe von Studienteilnehmern durchgeführt werden. Um sicherzustellen, dass unsere Ergebnisse allgemein gültig sind, werden wir zusätzlich eine groß angelegte Online-Umfrage durchführen. Zweitens werden wir die Erkenntnisse aus den Beobachtungsstudien und der Online-Umfrage nutzen, um bestehende Debugging-Ansätze zu verbessern. Dabei konzentrieren wir uns insbesondere auf die Skalierbarkeit, die Genauigkeit und die Praktikabilität der Ansätze: Skalierbarkeit: Die Debugging-Ansätze sollten in der Lage sein große Programme mit mehr als einer Million Codezeilen zu verarbeiten. Genauigkeit: Die Debugging-Ansätze sollten den Softwareentwickler auf die Codezeilen aufmerksam machen, die für einen beobachteten Fehler verantwortlich sind, jedoch nicht auf andere, irrelevante Codezeilen. Praktikabilität: Die Debugging-Ansätze sollten einfach zu verwenden sein. Softwareentwickler sind möglicherweise akademischen Debugging-Ansätzen gegenüber negativ eingestellt, weil sie nicht glauben, dass ein solcher Ansatz ihnen helfen kann. Außerdem wissen sie nicht, welcher Ansatz für ihr Debugging-Problem am besten geeignet ist. Daher werden wir in dieser Projektphase zwei besonders interessante Forschungsfragen beantworten: (1) Kann die Kombination von Debugging-Ansätzen helfen, das Debugging insgesamt zu verbessern? (2) Ist es möglich, die am besten geeignete Debugging-Methode für ein bestimmtes Programm automatisch auszuwählen? Drittens werden wir die Debugging-Ansätze in die Entwicklungsumgebungen und -prozesse integrieren. Ein Debugging-Ansatz, der in die Entwicklungsumgebung und den Prozess des Softwareentwicklers integriert ist, wird eher verwendet als ein eigenständiger Ansatz. Um den Nutzen unserer Entwicklungen zu bewerten, werden wir umfangreiche Experimente durchführen.
Die Fehlerkorrektur in Software wird als Debugging bezeichnet. Debugging ist ein zeitintensiver Prozess, da selbst kleine Programme aus mehreren tausend Codezeilen bestehen können, die manuell untersucht werden müssen um die Code-Zeilen zu finden, die für einen beobachteten Fehler (zB falsche Berechnungen oder Programmabstürze) verantwortlich sind. Es wird geschätzt, dass Softwareentwickler 30 % bis 90 % ihrer Zeit für das Debuggen verwenden. Verbesserungen des Debugging-Prozesses haben daher das Potenzial, Geld und Zeit einzusparen. In einem ersten Schritt haben wir uns mit einer Online-Umfrage an Softwareentwickler gewandt, um zu erfahren, wo die größten Probleme beim Debugging liegen. Diese Umfrage zeigte, dass die meisten Fehler semantische Fehler sind, die Benutzer beispielsweise durch eine falsche Funktionsweise des Programms bemerken. Der Debugging-Prozess folgt oft demselben Muster: Nachstellen des Fehlers (Ausführen einer Abfolge von Schritten, die zum Fehler führen), Beobachtungen machen (Welche Werte haben bestimmte Variablen? Bei welchen Änderungen der Schritt-Abfolge tritt der Fehler nicht mehr auf? ) und Schlussfolgerungen ziehen (zB Fokussierung auf bestimmte Code-Zeilen). Während die Mehrheit der Programmierer angab, dass es einfach ist, Fehler zu reproduzieren, empfinden viele das Auffinden der fehlerhaften Codestelle als schwierig. Desweiteren zeigt die Studie, dass Fehler oft komplex sind und es nicht ausreicht, einzelne Codezeilen zu ändern. Daraus folgt, dass Forscher Werkzeuge zur Fehlerentwicklung entwickeln sollten, die in der Lage sind Fehler, die aus mehreren Code-Zeilen bestehen, zu identifizieren. In einem zweiten Schritt haben wir uns damit beschäftigt, wie wir Softwareentwickler bei dem schwierigsten Teil des Debugging-Prozesses, der Lokalisierung von fehlerhaften Codestellen, unterstützen können. Hierfür haben wir uns auf die Verbesserung von zwei bestehenden Ansätzen fokussiert: Der erste Ansatz (Information retrieval fault localization) arbeitet mit textuellen Beschreibungen von Fehlern, sogenannten Bug reports, und findet mithilfe von künstlicher Intelligenz Code, welcher zu der Fehlerbeschreibung passt. Eine unserer Erweiterungen berechnet zusätzlich den Fehlertyp aufgrund von Wahrscheinlichkeiten. Dieser Ansatz eignet sich für beliebig große Programme (Stichwort Skalierbarkeit). Der zweite Ansatz (Slicing) zielt auf kleinere Programme ab: Softwareentwickler reproduzieren Fehler und das entwickelte Slicing-Werkzeug markiert alle Code-Zeilen, die eine Auswirkung auf den berechneten Fehler haben. Alle Datensätze, alle durchgeführten Evaluierungen sowie sämtlicher im Projekt geschriebener Code sind öffentlich verfügbar (siehe https://amadeus.ist.tugraz.at/).
- Technische Universität Graz - 100%
- Rui Abreu, University of Lisbon - Portugal
Research Output
- 43 Zitationen
- 16 Publikationen
- 8 Datasets & Models
-
2021
Titel A Fault Localization and Debugging Support Framework driven by Bug Tracking Data DOI 10.48550/arxiv.2103.02386 Typ Other Autor Hirsch T Link Publikation -
2021
Titel Root cause prediction based on bug reports DOI 10.48550/arxiv.2103.02372 Typ Other Autor Hirsch T Link Publikation -
2021
Titel What we can learn from how programmers debug their code DOI 10.48550/arxiv.2103.12447 Typ Preprint Autor Hirsch T Link Publikation -
2021
Titel Identifying non-natural language artifacts in bug reports DOI 10.1109/asew52652.2021.00046 Typ Conference Proceeding Abstract Autor Hirsch T Seiten 191-197 Link Publikation -
2020
Titel Root cause prediction based on bug reports DOI 10.1109/issrew51248.2020.00067 Typ Conference Proceeding Abstract Autor Hirsch T Seiten 171-176 Link Publikation -
2020
Titel A Fault Localization and Debugging Support Framework driven by Bug Tracking Data DOI 10.1109/issrew51248.2020.00053 Typ Conference Proceeding Abstract Autor Hirsch T Seiten 139-142 Link Publikation -
2023
Titel The MAP Metric in Information Retrieval Fault Localization DOI 10.1109/ase56229.2023.00041 Typ Conference Proceeding Abstract Autor Hirsch T Seiten 1480-1491 Link Publikation -
2021
Titel What we can learn from how programmers debug their code DOI 10.1109/ser-ip52554.2021.00014 Typ Conference Proceeding Abstract Autor Hirsch T Seiten 37-40 Link Publikation -
2024
Titel Predictive Reranking using Code Smells for Information Retrieval Fault Localization DOI 10.1109/sami60510.2024.10432857 Typ Conference Proceeding Abstract Autor Hirsch T Seiten 000277-000282 -
2022
Titel Pruning Boolean Expressions to Shorten Dynamic Slices DOI 10.1109/scam55253.2022.00006 Typ Conference Proceeding Abstract Autor Hirsch T Seiten 1-11 -
2022
Titel Detecting non-natural language artifacts for de-noising bug reports DOI 10.1007/s10515-022-00350-0 Typ Journal Article Autor Hirsch T Journal Automated Software Engineering Seiten 52 Link Publikation -
2022
Titel A systematic literature review on benchmarks for evaluating debugging approaches DOI 10.1016/j.jss.2022.111423 Typ Journal Article Autor Hirsch T Journal Journal of Systems and Software Seiten 111423 Link Publikation -
2024
Titel Automated Fault Classification and Fault Localization based on Textual Bug Reports Typ PhD Thesis Autor Thomas Hirsch Link Publikation -
2022
Titel Using textual bug reports to predict the fault category of software bugs DOI 10.1016/j.array.2022.100189 Typ Journal Article Autor Hirsch T Journal Array Seiten 100189 Link Publikation -
2021
Titel Identifying non-natural language artifacts in bug reports DOI 10.48550/arxiv.2110.01336 Typ Preprint Autor Hirsch T Link Publikation -
2024
Titel Reducing the Length of Dynamic and Relevant Slices by Pruning Boolean Expressions DOI 10.3390/electronics13061146 Typ Journal Article Autor Hirsch T Journal Electronics Seiten 1146 Link Publikation
-
2022
Link
Titel Supplemental Material for a Systematic Literature Review on Benchmarks for Evaluating Debugging Approaches DOI 10.5281/zenodo.6670198 Typ Database/Collection of data Öffentlich zugänglich Link Link -
2022
Link
Titel artifact_detection - A tool for NLP tasks on textual bug reports. DOI 10.5281/zenodo.5519502 Typ Database/Collection of data Öffentlich zugänglich Link Link -
2021
Link
Titel Debugging Questionnaire Dataset DOI 10.5281/zenodo.4449044 Typ Database/Collection of data Öffentlich zugänglich Link Link -
2020
Link
Titel AmadeusGitHubBugDataset DOI 10.5281/zenodo.3973048 Typ Database/Collection of data Öffentlich zugänglich Link Link -
2024
Link
Titel Best practices for evaluating IRFL approaches - Supplemental material DOI 10.5281/zenodo.11509228 Typ Database/Collection of data Öffentlich zugänglich Link Link -
2024
Link
Titel prunedSlicing: Reducing the Length of Dynamic and Relevant Slices by Pruning Boolean Expressions DOI 10.5281/zenodo.6908074 Typ Database/Collection of data Öffentlich zugänglich Link Link -
2023
Link
Titel Supplementary material for 'The MAP metric in Information Retrieval Fault Localization' DOI 10.5281/zenodo.7817015 Typ Database/Collection of data Öffentlich zugänglich Link Link -
2023
Link
Titel Supplemental Material for Predictive Reranking using Code Smells for Information Retrieval Fault Localization DOI 10.5281/zenodo.8186774 Typ Database/Collection of data Öffentlich zugänglich Link Link