Project-Aware Validation in Software Defect Prediction: A Controlled Simulation and Real-World Benchmark Study of Evaluation Optimism
Deze studie toont door middel van gecontroleerde simulaties en een secundaire analyse van real-world benchmarks aan dat het gebruik van gepoolde willekeurige train/test-splits bij softwaredefectvoorspelling systematisch optimistische prestatie-inschattingen oplevert vergeleken met projectbewuste validatiemethoden, wat het kritieke belang onderstreept van evaluatieprotocollen die projectgrenzen respecteren.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
In de wereld van software vormt code de basis van alles, van banksystemen tot medische apparaten. Toch is het, net als elke door mensen gemaakte structuur, gevoelig voor barsten en gebreken. Software engineers en onderzoekers proberen al lang computerprogramma's te bouwen die kunnen voorspellen waar deze gebreken, of "defecten", het meest waarschijnlijk verborgen liggen voordat de software zelfs wordt uitgebracht. Het doel is om fouten vroegtijdig te ontdekken, wat tijd bespaart en kostbare uitvallen voorkomt. Om te testen of deze voorspellingsprogramma's werken, verzamelen onderzoekers doorgaans een enorme collectie code van vele verschillende softwareprojecten, mengen ze allemaal samen in één grote hoop, en splitsen die hoop vervolgens willekeurig op in een trainingsgroep en een testgroep. Als het voorspellingsprogramma goed presteert op de testgroep, wordt aangenomen dat het klaar is voor de echte wereld. Deze aanpak is handig en breed gebruikt, maar rust op een verborgen aanname: dat een stuk code uit het ene project net zo waarschijnlijk in een ander project voorkomt als in zijn eigen project. In werkelijkheid zijn softwareprojecten afzonderlijke ecosystemen. Ze hebben hun eigen unieke geschiedenis, programmeerstijlen en teams. Een model dat getraind is op een mix van deze verschillende werelden, kan de specifieke eigenaardigheden van de projecten die het heeft gezien aan het leren zijn, in plaats van te leren hoe het defecten in een nieuw, ongezien project moet vinden.
Een recente studie door onafhankelijk onderzoeker Vladimir Tomilov onderzoekt of deze gebruikelijke testmethode onderzoekers een vals gevoel van vertrouwen geeft. De studie stelt een eenvoudige maar cruciale vraag: presteert een voorspellingsmodel even goed als de standaardtests suggereren wanneer het wordt getest op data die het nog nooit heeft gezien van een specifiek project? Om het antwoord te vinden, vertrouwde de onderzoeker niet op een enkele historische dataset. In plaats daarvan bouwde hij een gecontroleerde simulatie waarin hij kunstmatige softwareprojecten met bekende regels kon creëren. In deze simulatie genereerde hij data voor zes verschillende projecten, waarbij hij ervoor zorgde dat elk project zijn eigen unieke kenmerken had, vergelijkbaar met hoe echte softwareteams in de praktenschap verschillend opereren. Hij trainde vervolgens voorspellingsmodellen op deze data met behulp van twee verschillende methoden. De eerste methode was de standaardaanpak: alle data samenvoegen en willekeurig splitsen. De tweede methode was strenger: het model werd getraind op vijf projecten en vervolgens strikt getest op het zesde project, dat het nog nooit had gezien. Deze "leave-one-project-out"-methode bootst de echte uitdaging na van het implementeren van een tool in een nieuwe omgeving.
De resultaten van de simulatie waren duidelijk en consistent. Wanneer de modellen werden getest met de standaard willekeurige mix, leken ze nauwkeuriger dan ze in werkelijkheid waren. Voor de meest complexe geteste modellen overschatte de standaardmethode hun vermogen om defecten te vinden met ongeveer drie procentpunten. Hoewel drie punten misschien klein klinken, vertegenwoordigt dit in de wereld van softwarevoorspelling een aanzienlijk gat tussen verwachting en realiteit. De studie vond dat de modellen in essentie de patronen van de specifieke projecten waarop ze getraind waren aan het memoriseren waren, in plaats van een universele regel voor het vinden van bugs te leren. Wanneer de onderzoekers de modellen dwongen zichzelf te bewijzen op een volledig nieuw project, daalde hun prestatie merkbaar. De kloof tussen de optimistische random-split score en de realistische nieuwe-project score was geen toeval; het kwam voor bij verschillende soorten voorspellingsalgoritmen en bleef standhouden, zelfs toen de onderzoeker de moeilijkheidsgraad van de simulatie aanpaste.
Om er zeker van te zijn dat deze bevindingen niet slechts een artefact van de computersimulatie waren, keek de onderzoeker ook naar echte data. Hij onderzocht een gepubliceerde benchmark die elf belangrijke open-source softwareprojecten besloeg. In deze controle met echte gegevens vergeleek hij hoe goed de modellen presteerden wanneer ze werden getest op hetzelfde project waarop ze getraind waren, versus hoe ze presteerden wanneer ze werden getest op een project dat ze nog nooit hadden gezien. Het patroon was identiek aan dat van de simulatie. In elk van de elf projecten zagen de modellen er veel beter uit wanneer ze op vertrouwde grond werden getest dan wanneer ze op nieuwe grond werden getest. Het verschil was groter in de echte wereld, waarbij de overschatting varieerde van zes tot zestien procentpunten. Dit bevestigde dat het probleem niet alleen een theoretisch probleem is in een simulatie, maar een echt fenomeen dat de manier waarop we softwaretools vandaag de dag evalueren, beïnvloedt.
De studie onderzocht ook hoe verschillende soorten modellen op deze uitdaging reageerden. Het bleek dat de complexere modellen, die ontworpen zijn om ingewikkelde patronen te vinden, het meest vatbaar waren voor deze overschatting. Zij waren degenen die het meest enthousiast de specifieke details van hun trainingsprojecten memoriseerden, wat leidde tot de grootste daling in prestaties wanneer ze met nieuwe data werden geconfronteerd. Eenvoudigere modellen, die steunen op minder en bredere regels, waren stabieler. Ze presteerden niet zo spectaculair in de gemakkelijke tests, maar ze hielden het beter vol wanneer de regels van het spel veranderden. Dit suggereert dat onderzoekers in de haast om de meest geavanceerde voorspellingsinstrumenten te bouwen, mogelijk de voorkeur geven aan modellen die goed zijn in het raden van het verleden, maar slecht in het voorspellen van de toekomst.
De implicaties van deze bevindingen zijn aanzienlijk voor iedereen die softwaredefect-voorspellingsinstrumenten bouwt of gebruikt. De studie beweert niet dat deze instrumenten nutteloos zijn, maar betoogt wel dat de manier waarop we hun succes meten gebrekkig is. Als een onderzoeker rapporteert dat een nieuwe tool zeer accuraat is op basis van een willekeurige mix van data, rapporteert hij waarschijnlijk een getal dat te hoog is voor de werkelijke toepassing. De studie suggereert dat de enige eerlijke manier om een tool te testen die bedoeld is voor nieuwe projecten, is door deze te testen op projecten die hij nog nooit heeft gezien. Dit vereist een verschuiving in hoe experimenten worden ontworpen, weg van het gemak van het mengen van alle data samen en toe naar een eerlijkere, project-per-project evaluatie. Door dit te doen, kan de softwaregemeenschap de teleurstelling voorkomen van het implementeren van tools die perfect lijken in het laboratorium maar worstelen in het veld, waardoor de tools die we bouwen werkelijk klaar zijn voor de complexe, diverse wereld van softwareontwikkeling.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.