Moderne softverske aplikacije se obično sastoje od brojnih datoteka i nekoliko miliona linija koda. Zbog velike količine, pronalaženje i ispravljanje grešaka, poznatih kao otklanjanje grešaka, je teško.
U mnogim softverskim kompanijama, programeri i dalje ručno traže greške — nešto što im oduzima veliki deo radnog vremena. Studije pokazuju da ovo čini između 30 i 90% ukupnog vremena razvoja.
Birgit Hofer i Tomas Hirš sa Instituta za softversku tehnologiju na Tehnološkom univerzitetu u Gracu (TU Graz) razvili su rešenje zasnovano na postojećim metodama i metrikama obrade prirodnog jezika koje mogu u velikoj meri da ubrzaju proces pronalaženja neispravnog koda i time otklanjanja grešaka.
„Kao prvi korak, sproveli smo ankete među programerima da bismo otkrili koji su najveći gubitnici vremena prilikom otklanjanja grešaka. Ispostavilo se da stvarno ispravljanje grešaka uopšte nije veliki problem, već da se programeri uglavnom zaglavljuju u lociranju grešaka, tj. sužavanje pretrage na pravu oblast u programskom kodu“, objašnjava Birgit Hofer.
Na osnovu ove spoznaje, istraživači su krenuli u pronalaženje rešenja za ovaj problem koje je takođe skalabilno na aplikacije sa mnogo koda.
Iako postoje efikasni pristupi zasnovani na modelu u kojima se program pretvara u logičku reprezentaciju (koji se naziva model), ovo funkcioniše samo za male programe. To je zato što se računarski napor eksponencijalno povećava sa veličinom koda.
Pristup koji su prihvatili Birgit Hofer i Tomas Hirš predstavlja određena svojstva softvera u brojevima — na primer, čitljivost ili složenost koda — i takođe se može koristiti za velike količine koda, pošto se računski napor samo linearno povećava.
Polazna tačka za lokalizaciju greške je izveštaj o grešci, za koji testeri ili korisnici popunjavaju obrazac u kojem opisuju uočeni kvar i unose informacije o verziji softvera, svom operativnom sistemu, koracima koje su preduzeli pre nego što je došlo do greške i drugim relevantnim informacije.
Na osnovu ovog izveštaja o grešci, kombinacija obrade prirodnog jezika i metrike analizira ceo kod u pogledu klasa i imena promenljivih, datoteka, metoda ili funkcija i poziva metodama i funkcijama.
Aplikacija identifikuje delove koda koji najbolje odgovaraju izveštaju o grešci. Kao rezultat toga, programeri dobijaju listu od pet do 10 datoteka rangiranih prema verovatnoći da su oni odgovorni za uočeni neuspeh.
Programeri takođe dobijaju informacije o vrsti greške koja će najverovatnije biti uključena. Ovi podaci se mogu koristiti za brže lociranje i otklanjanje greške.
„Radno vreme programera softvera je skupo, ali oni često troše više ovog skupog vremena na lociranje i ispravljanje grešaka nego na razvoj novih funkcija“, kaže Birgit Hofer.
„Pošto već postoji veliki broj pristupa za iskorenjivanje ovog problema, istražili smo kako da ih kombinujemo i unapredimo tako da postoji osnova za komercijalnu primenu. Sada smo postavili temelje i sistem funkcioniše. Međutim, da bismo integriše ga u kompaniju, on bi ipak morao da se prilagodi odgovarajućim potrebama kompanije.“
Sistem za otklanjanje grešaka je dostupan preko platforme „GitHub“. Na veb stranici projekta mogu se pronaći radovi i repozitorijumi u vezi sa ovim istraživanjem.