16.
nov
Zagovor magistrskega dela: Miha Šircelj
ob 10:45

Naslov magistrskega dela: Analiza tehnik lokalizacije napak v programih

 

Povzetek: 

V magistrski nalogi smo analizirali, kako dobro različne tehnike lokalizacije napak najdejo metodo, ki vsebuje napako v programu. Ko program na kakšnem testu odpove, mora razvijalec ugotoviti, kje v kodi je napaka. Tehnike lokalizacije napak mu pri tem pomagajo tako, da metode programa razvrstijo po sumljivosti. Cilj je, da je kriva metoda čim višje na seznamu. Klasične tehnike sumljivost računajo iz podatkov o izvajanju testov, ki povedo, katere dele kode izvedejo padli in katere uspešni testi. Besedila kode ne berejo. Veliki jezikovni modeli ga berejo, zato smo v nalogi tudi preverili, ali lahko klasične tehnike dopolnijo.

Vse poskuse smo izvedli na 343 resničnih napakah iz zbirke Defects4J. Za vsako napako je znan popravek razvijalca, zato vemo, katere metode so krive. Najprej smo primerjali devet klasičnih tehnik iz petih družin. Večina jih da uporabno oceno le pri delu napak, pri ostalih napakah pa dajo vsem metodam enako oceno in metod ne morejo razvrstiti. Tam, kjer oceno dajo, nobena ni zanesljivo natančnejša od preproste formule Ochiai, ki smo jo zato uporabili kot merilo za primerjavo.

Nato smo klasične tehnike povezali z velikim jezikovnim modelom. Za vsako napako klasične ocene izberejo 50 najbolj sumljivih metod. Model dobi njihovo kodo in izpis padlega testa ter vsaki metodi dodeli oceno od 0 do 100. Ocene modela nato skupaj z devetimi klasičnimi ocenami združi majhna nevronska mreža.

Brez ocene jezikovnega modela je naučena kombinacija krivo metodo postavila na prvo mesto pri 141 od 343 napak, z njo pa pri 255. Preverili smo tudi, ali izboljšanje res izhaja iz tega, da model prepozna prave metode. Ocene modela smo pri vsaki napaki naključno premešali med kandidatnimi metodami, tako da je vsaka metoda dobila oceno neke druge metode. Izboljšanje je v celoti izginilo, kar pomeni, da šteje prav povezava med oceno in metodo. Preverili smo tudi, ali sistem deluje na programu, ki ga pri učenju ni videl. Kombinacijo smo naučili na štirih programih in jo preizkusili na petem, izboljšanje pa se je ohranilo.

 

 

Mentor: doc. dr. Luka Fürst

 

Komisija za zagovor:

izr. prof. dr. Jurij Mihelič (predsednik),

doc. dr. Alenka Kavčič (članica),

doc. dr. Boštjan Slivnik (član). 

 

Prostor: Sejna soba 3