• Home
  • Kemi
  • Astronomien
  • Energi
  • Naturen
  • Biologi
  • Fysik
  • Elektronik
  • Klonkrig – hitta kopior av buggykod

    Chanchal Roy, docent vid institutionen för datavetenskap. Kredit:Kris Foster

    Koden är allestädes närvarande och de flesta branscher runt om i världen förlitar sig på kodbaserad programvara för att hålla den dagliga verksamheten igång, sa Chanchal Roy, docent vid institutionen för datavetenskap.

    "De enklaste funktionerna använder kod, och dålig kod kan ha en enorm inverkan, sa Roy, som gick med i College of Arts and Science 2009. "Tyvärr, hur utvecklare kopierar kod kan resultera i massor av buggar eller fel, något som min forskning tar upp."

    Det är vanligt att mjukvaruutvecklare kopierar, klistra in och modifiera ett fragment av befintlig kod för att passa uppgiften eller verktyget de arbetar med. Detta kallas kloning, och den resulterande koden från kopiera-och-klistra-processen är, självklart, kallas en klon.

    "Det finns giltiga skäl till att kloning är så vanligt, sa Roy, vars forskning stöds av ett Natural Sciences and Engineering Research Council of Canada Accelerator Grant. "Det sparar tid, det är låg risk att använda stabil kod, och det resulterar i snabbare utveckling. Det finns ingen anledning att uppfinna hjulet på nytt."

    Problemet, Roy är snabb med att påpeka, är att ofta klonar koden också att man klonar okända "buggar", och dessa fel kan spridas snabbt.

    "Om du har en bugg i den ursprungliga koden, du kopierar fel om och om igen, " sa han. "Även om du hittar en instans av buggen, det är nästan omöjligt att hitta alla ... vilket resulterar i att många industrier använder föråldrad kod framför ny kod som potentiellt har buggar."

    Delvis på grund av problemen relaterade till kloning och de resulterande buggyklonerna, upp till 85 procent av kostnaden för mjukvaruutveckling kan gå till underhåll av programvara, inklusive klondetektering.

    "Det är ett tveeggat svärd, ", sa Roy. "Klonning är vanligt på grund av fördelarna för programmerare, men kloner kan bära buggar som också är riktigt besvärliga."

    Klondetektering, ett område där Roy har ägnat mycket forskningstid, innebär att hitta liknande kodfragment för att lösa buggproblem. I sin enklaste form, det är som att göra en dokumentsökning efter specifika ord. I sin mest komplexa form, det är som att söka efter en nål i en höstack, särskilt om den ursprungliga koden har modifierats (vilket är den vanligaste formen för kloning) och finns i ett program som innehåller miljontals rader med kod.

    För att lösa detta problem, Roy och hans forskningssamarbetspartner James Cordy från Queen's University har utvecklat ett antal klondetekteringssystem som söker efter liknande fragment av kod. Det finns två huvudkriterier som krävs för ett bra klondetekteringssystem:precision, vilket är förmågan att detektera kloner korrekt; och minns, en term som hänvisar till procentandelen av detekterade kloner av det totala antalet närvarande kloner. Roy och Cordy har utvecklat det första klondetekteringssystemet, kallas NICAD, som utmärker sig i både precision och återkallelse.

    "När vi har definierat vilka likheter vi ska söka efter, NICAD kan upptäcka modifierade kloner, " sa Roy, noterar att en stor mängd mänskliga tester, inklusive granskning av över nio miljoner klonade fragment, har gått mot att säkerställa att klondetekteringssystemet är korrekt.

    Genom sin utvärdering av klondetektering, Roy har också blivit världsledande inom området benchmarking av verktyg för att upptäcka klon med utvecklingen av verktyget BigCloneBench.

    Potentialen i Roys klondetekteringssystem och benchmarkingarbete går inte obemärkt förbi. Roy och Cordy har nyligen mottagit två mest inflytelserika papperspriser, som ett erkännande av den "varaktiga effekten av bidrag som gjorts under de senaste 10 åren." Deras arbete med benchmarking och NICAD erkändes av International Conference on Software Analysis, Evolution och rekonstruktion, och den internationella konferensen om programförståelse, respektive.

    Ser man framåt till nästa decennium, Roy sa att han skulle vilja utveckla ett "säkert kloningssystem" som inte bara upptäcker korrupta kloner, men kan också ge råd om hur man fixar buggar i systemet, eller till och med ta bort dem automatiskt.

    "Detta har potential att spara mycket tid och pengar, men jag är inte säker på att jag kan göra det här ens under de kommande 20 åren, sa Roy med ett lätt leende och skratt.


    © Vetenskap https://sv.scienceaq.com