Videnskab
 science >> Videnskab >  >> Elektronik

Klon krige - finde buggy kode kopier

Chanchal Roy, lektor ved Institut for Datalogi. Kredit:Kris Foster

Kode er allestedsnærværende, og de fleste industrier rundt om i verden er afhængige af kodebaseret software for at holde den daglige drift kørende, sagde Chanchal Roy, lektor ved Institut for Datalogi.

"De enkleste funktioner bruger kode, og dårlig kode kan have en massiv indvirkning, " sagde Roy, som kom til College of Arts and Science i 2009. "Desværre, måden udviklere kopierer kode på kan resultere i mange fejl eller fejl, noget min forskning omhandler."

Det er almindelig praksis for softwareudviklere at kopiere, indsæt og rediger et fragment af eksisterende kode, så den passer til opgaven eller værktøjet, de arbejder på. Dette kaldes kloning, og den resulterende kode fra kopier-og-indsæt-processen er, selvfølgelig, kaldet en klon.

"Der er gyldige grunde til, at kloning er så almindelig, " sagde Roy, hvis forskning er støttet af et Natural Sciences and Engineering Research Council of Canada Accelerator Grant. "Det sparer tid, der er lav risiko ved brug af stabil kode, og det resulterer i hurtigere udvikling. Der er ingen grund til at genopfinde hjulet."

Problemet, Roy er hurtig til at påpege, er det, at kloningskode ofte også resulterer i kloning af ukendte "fejl", og disse fejl kan spredes hurtigt.

"Hvis du har en fejl i den originale kode, du kopierer fejl igen og igen, "sagde han." Selvom du finder en forekomst af fejlen, det er næsten umuligt at finde dem alle … hvilket resulterer i, at mange industrier bruger forældet kode frem for ny kode, der potentielt har fejl."

Dels på grund af problemerne i forbindelse med kloning og de resulterende buggy -kloner, op til 85 procent af omkostningerne ved softwareudvikling kan gå til softwarevedligeholdelse, inklusive klonpåvisning.

"Det er et tveægget sværd, "sagde Roy." Kloning er almindelig på grund af fordelene for programmører, men kloner kan bære fejl, der også er virkelig besværlige. "

Klon detektion, et område, hvor Roy har dedikeret meget forskningstid, betyder at finde lignende kodefragmenter for at løse fejlproblemer. I sin enkleste form, det er som at lave en dokumentsøgning efter specifikke ord. I sin mest komplekse form, det er som at søge efter en nål i en høstak, især hvis den originale kode er blevet ændret (som er den mest almindelige form for kloning) og er i et program, der indeholder millioner af linjer kode.

For at løse dette problem, Roy og hans forskningssamarbejder James Cordy fra Queen's University har udviklet en række klondetekteringssystemer, der søger efter lignende fragmenter af kode. Der er to hovedkriterier nødvendige for et godt klondetektionssystem:præcision, som er evnen til at detektere kloner korrekt; og huske, et udtryk, der refererer til procentdelen af ​​detekterede kloner ud af det samlede antal tilstedeværende kloner. Roy og Cordy har udviklet det første klondetekteringssystem, kaldet NICAD, der udmærker sig i både præcision og tilbagekaldelse.

"Når vi har defineret, hvilke ligheder der skal søges efter, NICAD kan detektere modificerede kloner, " sagde Roy, bemærker, at en stor mængde menneskelige tests, herunder undersøgelse af over ni millioner klonede fragmenter, er gået hen imod at sikre, at klondetektionssystemet er nøjagtigt.

Gennem hans evaluering af klondetektering, Roy er også blevet verdens førende inden for benchmarking af klondetekteringsværktøjer med udviklingen af ​​BigCloneBench -værktøjet.

Potentialet i Roy's klondetekteringssystemer og benchmarking -arbejde går ikke ubemærket hen. Roy og Cordy har for nylig modtaget to mest indflydelsesrige papirpriser, i erkendelse af den "varige virkning af bidrag ydet inden for de foregående 10 år." Deres arbejde med benchmarking og NICAD blev anerkendt af den internationale konference om softwareanalyse, Evolution og reengineering, og den internationale konference om programforståelse, henholdsvis.

Ser vi frem til det næste årti, Roy sagde, at han gerne ville udvikle et "sikkert kloningssystem", der ikke kun registrerer korrupte kloner, men er også i stand til at rådgive om, hvordan man retter fejl i systemet, eller endda fjerne dem automatisk.

"Dette har potentiale til at spare en masse tid og penge, men jeg er ikke sikker på, at jeg kan gøre dette selv i de næste 20 år, sagde Roy med et lille smil og grin.


Varme artikler