← Neueste Arbeiten
💻 computer science

Project-Aware Validation in Software Defect Prediction: A Controlled Simulation and Real-World Benchmark Study of Evaluation Optimism

Diese Studie zeigt durch kontrollierte Simulationen und eine Sekundäranalyse von Realwelt-Benchmarks auf, dass die Verwendung gepoolter zufälliger Trainings-/Test-Splits bei der Vorhersage von Softwarefehlern systematisch optimistische Leistungsschätzungen im Vergleich zu projektbewussten Validierungsmethoden liefert, was die kritische Notwendigkeit von Evaluierungsprotokollen unterstreicht, welche Projektgrenzen respektieren.

Ursprüngliche Autoren: Vladimir Tomilov

Veröffentlicht 2026-09-10
📖 6 Min. Lesezeit🧠 Tiefgang

Ursprüngliche Autoren: Vladimir Tomilov

Originalarbeit lizenziert unter CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen

In der Welt der Software bildet Code das Fundament von allem, von Bankensystemen bis hin zu medizinischen Geräten. Doch wie jede menschengemachte Struktur ist auch er anfällig für Risse und Fehler. Software-Ingenieure und Forscher versuchen schon lange, Computerprogramme zu entwickeln, die vorhersagen können, wo diese Fehler oder „Defekte“ am wahrscheinlichsten verborgen liegen, noch bevor die Software veröffentlicht wird. Das Ziel ist es, Fehler frühzeitig zu finden, um Zeit zu sparen und kostspielige Ausfälle zu verhindern. Um zu testen, ob diese Vorhersageprogramme funktionieren, sammeln Forscher typischerweise eine massive Sammlung von Code aus vielen verschiedenen Softwareprojekten, mischen sie alle zu einem großen Haufen zusammen und teilen diesen Haufen dann zufällig in eine Trainingsgruppe und eine Testgruppe auf. Wenn das Vorhersageprogramm in der Testgruppe gut abschneidet, wird davon ausgegangen, dass es bereit für die reale Welt ist. Dieser Ansatz ist praktisch und weit verbreitet, beruht jedoch auf einer verborgenen Annahme: dass ein Stück Code aus einem Projekt genauso wahrscheinlich in einem anderen Projekt vorkommt wie in seinem eigenen. In der Realität sind Softwareprojekte jedoch unterschiedliche Ökosysteme. Sie haben ihre eigene, einzigartige Geschichte, ihren eigenen Codierungsstil und ihre eigenen Teams. Ein Modell, das auf einer Mischung aus diesen verschiedenen Welten trainiert wurde, könnte eher die spezifischen Eigenheiten der Projekte lernen, die es gesehen hat, als zu lernen, wie man Defekte in einem brandneuen, unbekannten Projekt findet.

Eine aktuelle Studie des unabhängigen Forschers Vladimir Tomilov untersucht, ob diese gängige Testmethode den Forschern ein falsches Vertrauen vorgaukelt. Die Studie stellt eine einfache, aber entscheidende Frage: Wenn wir ein Vorhersagemodell an Daten testen, die es aus einem spezifischen Projekt noch nie gesehen hat, schneidet es dann so gut ab, wie die Standardtests vermuten lassen? Um die Antwort zu finden, verließ sich der Forscher nicht auf einen einzelnen historischen Datensatz. Stattdessen baute er eine kontrollierte Simulation auf, in der er künstliche Softwareprojekte mit bekannten Regeln erstellen konnte. In dieser Simulation generierte er Daten für sechs verschiedene Projekte und stellte sicher, dass jedes Projekt seine eigenen einzigartigen Merkmale hatte, ganz so, wie reale Softwareteams unterschiedlich operieren. Er trainierte dann Vorhersagemodelle mit diesen Daten unter Verwendung zweier verschiedener Methoden. Die erste Methode war der Standardansatz: das Mischen aller Daten und das zufällige Aufteilen. Die zweite Methode war strenger: Das Modell wurde mit fünf Projekten trainiert und dann strikt an dem sechsten Projekt getestet, das es zuvor noch nie gesehen hatte. Diese „Leave-one-project-out“-Methode (ein Projekt ausschließen) ahmt die reale Herausforderung nach, ein Werkzeug in einer neuen Umgebung einzusetzen.

Die Ergebnisse der Simulation waren klar und konsistent. Wenn die Modelle mit der standardmäßigen Zufallsmischung getestet wurden, erschienen sie genauer, als sie tatsächlich waren. Für die komplexesten der getesteten Modelle überschätzte die Standardmethode die Fähigkeit des Modells, Defekte zu finden, um etwa drei Prozentpunkte. Drei Punkte mögen gering klingen, aber in der Welt der Softwarevorhersage stellen sie eine signifikante Lücke zwischen Erwartung und Realität dar. Die Studie fand heraus, dass die Modelle im Wesentlichen die Muster der spezifischen Projekte auswendig lernten, auf denen sie trainiert wurden, anstatt eine universelle Regel zur Fehlersuche zu erlernen. Als die Forscher die Modelle dazu zwangen, sich an einem völlig neuen Projekt zu beweisen, sank ihre Leistung merklich. Die Lücke zwischen dem optimistischen Score der Zufallsaufteilung und dem realistischen Score des neuen Projekts war kein Zufall; sie trat bei verschiedenen Arten von Vorhersagealgorithmen auf und blieb bestehen, selbst wenn der Forscher den Schwierigkeitsgrad der Simulation anpasste.

Um sicherzustellen, dass diese Ergebnisse nicht nur ein Artefakt der Computersimulation waren, betrachtete der Forscher auch reale Daten. Er untersuchte einen veröffentlichten Benchmark, der elf große Open-Source-Softwareprojekte umfasste. Bei dieser Überprüfung in der realen Welt verglich er, wie gut die Modelle abschnitten, wenn sie auf demselben Projekt getestet wurden, auf dem sie trainiert wurden, im Vergleich dazu, wie sie abschnitten, wenn sie auf einem Projekt getestet wurden, das sie noch nie gesehen hatten. Das Muster war identisch mit dem der Simulation. In jedem einzelnen der elf Projekte sahen die Modelle deutlich besser aus, wenn sie auf vertrautem Boden getestet wurden als auf neuem Boden. Der Unterschied war in der realen Welt sogar größer, wobei die Überschätzung zwischen sechs und sechzehn Prozentpunkten lag. Dies bestätigte, dass das Problem nicht nur ein theoretisches Problem in einer Simulation ist, sondern ein echtes Phänomen, das die Art und Weise beeinflusst, wie wir Softwarewerkzeuge heute bewerten.

Die Studie untersuchte auch, wie verschiedene Arten von Modellen auf diese Herausforderung reagierten. Es stellte sich heraus, dass die komplexeren Modelle, die darauf ausgelegt sind, komplizierte Muster zu finden, am anfälligsten für diese Überschätzung waren. Sie waren diejenigen, die am ehesten die spezifischen Details ihrer Trainingsprojekte auswendig lernten, was zum größten Leistungsabfall führte, wenn sie mit neuen Daten konfrontiert wurden. Einfachere Modelle, die sich auf weniger und breitere Regeln verlassen, waren stabiler. Sie schnitten in den leichten Tests nicht so spektakulär ab, hielten sich aber besser durch, wenn sich die Regeln des Spiels änderten. Dies deutet darauf darauf hin, dass Forscher im Eifer, die anspruchsvollsten Vorhersagewerkzeuge zu bauen, möglicherweise Modelle bevorzugen, die gut darin sind, die Vergangenheit zu erraten, aber schlecht darin, die Zukunft vorherzusagen.

Die Auswirkungen dieser Erkenntnisse sind erheblich für jeden, der Software-Werkzeuge zur Defektvorhersage entwickelt oder verwendet. Die Studie behauptet nicht, dass diese Werkzeuge nutzlos sind, aber sie argumentiert, dass die Art und Weise, wie wir ihren Erfolg messen, fehlerhaft ist. Wenn ein Forscher berichtet, dass ein neues Werkzeug basierend auf einer Zufallsmischung der Daten hochgradig genau ist, berichtet er wahrscheinlich eine Zahl, die für die reale Anwendung zu hoch ist. Die Studie legt nahe, dass der einzige faire Weg, ein Werkzeug zu testen, das für neue Projekte bestimmt ist, darin besteht, es an Projekten zu testen, die es noch nie gesehen hat. Dies erfordert einen Wandel in der Art und Weise, wie Experimente gestaltet werden – weg von der Bequemlichkeit des Zusammenmischen aller Daten und hin zu einer ehrlicheren, projektweisen Evaluierung. Indem wir dies tun, kann die Software-Community vermeiden, dass sie von Werkzeugen enttäuscht wird, die im Labor perfekt aussehen, aber in der Praxis Schwierigkeiten haben, und so sicherstellen, dass die Werkzeuge, die wir bauen, wirklich bereit für die komplexe, vielfältige Welt der Softwareentwicklung sind.

Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?

Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.

Digest testen →