Die Notwendigkeit

Fehler sind in der Software-Entwicklung unvermeidlich. Je später sie im Entwicklungslebenszyklus identifiziert werden, desto höher sind die Reparaturkosten. Wenn ein Fehler nach der Auslieferung entdeckt wird, sind die Kunden davon betroffen und die Entwickler verbringen mehr Zeit damit, das Problem zu reproduzieren und dann eine Lösung zu finden. Dieser Prozess der Fehleranalyse und -behebung ist zeit- und kostenaufwendig.

Die Idee

Bestimmte Muster in der Codebasis von Softwareprojekten tragen ein höheres Fehlerrisiko. Diese Muster können durch einen Klassifizierungs-Lernalgorithmus bestimmt werden, um das Risiko von Fehlern in einer Datei vorherzusagen. Dadurch kann ein Fehler frühzeitig erkannt werden, was die Kosten für die Fehlerbehebung minimiert.

Die Lösung

Für GitHub-Projekte werden benutzerdefinierte Klassifizierungsmodelle erstellt, die auf Metadaten basieren, die mit historischen Commits verknüpft sind. Wenn die Code Defect AI neue Commits des Entwicklers entdeckt, kann es vorhersagen, ob Dateien im Commit möglicherweise Fehler enthalten. Die Logik hinter der Vorhersage wird mithilfe von Local Interpretable Model-Agnostic Explanations (LIME) dargestellt, sodass Entwickler der Vorhersage vertrauen und von ihr profitieren können.

Technische Details zum Code Defect AI-Experiment

Beaufsichtigtes Lernen bei Machine Learning ermöglicht es den Algorithmen, ein Ergebnis auf der Grundlage historischer Input-/Output-Paare, d. h. gekennzeichneter Daten, vorherzusagen. Beaufsichtigtes Lernen wird als „Klassifizierungsproblem“ bezeichnet, wenn die Ausgabevariable eine diskrete Variable ist. Bestimmte Muster in der Codebasis von Softwareprojekten tragen ein höheres Fehlerrisiko. Wenn z. B. ein neuer Entwickler Änderungen an einer Datei vornimmt, die historisch gesehen eine höhere Fehlerhäufigkeit aufweist, betrifft ein Commit Dateien in mehreren Verzeichnissen oder die Codeaktualisierung ist über mehrere Bereiche der Datei verteilt. Diese Muster können durch einen Klassifizierungs-Lernalgorithmus bestimmt werden, um das Risiko von Fehlern in einer Datei eines Commits vorherzusagen. Dadurch kann der Fehler früher entdeckt werden (entspricht einem „shift left“ im Lebenszyklus), was die Kosten der Fehlerbehebung reduziert.

Für drei GitHub-Projekte wurden drei benutzerdefinierte Klassifizierungsmodelle erstellt, die auf Metadaten basieren, die mit historischen Commits verknüpft sind. Die markierten Trainingsdaten für das Modell wurden anhand der aus dem GitHub-Repository gesammelten Metadaten erstellt. Wenn die Code Defect AI neue Entwickler-Commits entdeckt, bezieht sie die Metadaten für die einzelnen Commits und die Dateien im Commit. Dann wird vorausgesagt, ob eine der Dateien im Commit das Risiko eines Bugs unter Verwendung des projektspezifischen Modells beinhaltet. Traditionelle Machine Learning-Modelle sind Black Boxes und die Logik hinter der Modellvorhersage ist nicht verfügbar. Die Logik hinter unserer Vorhersage wird anhand von Local Interpretable Model-Agnostic Explanations (LIME) dargestellt, so dass die Benutzer ein größeres Vertrauen in die Vorhersage entwickeln.

Ressourcen:

Projekte im Umfeld von Code Defect AI

Weitere Projekte durchsuchen