Wetenschap
Chanhal Roy, universitair hoofddocent bij de afdeling Informatica. Krediet:Kris Foster
Code is alomtegenwoordig en de meeste industrieën over de hele wereld vertrouwen op op code gebaseerde software om de dagelijkse activiteiten draaiende te houden, zei Chanchal Roy, universitair hoofddocent bij de afdeling Informatica.
"De eenvoudigste functies gebruiken code, en slechte code kan een enorme impact hebben, " zei Roy, die in 2009 toetrad tot de Hogeschool voor Kunsten en Wetenschappen. "Helaas, de manier waarop ontwikkelaars code kopiëren kan resulteren in veel bugs of fouten, iets waar mijn onderzoek zich op richt."
Het is gebruikelijk dat softwareontwikkelaars kopiëren, plak en wijzig een fragment van bestaande code om het aan te passen aan de taak of tool waaraan ze werken. Dit heet klonen, en de resulterende code van het kopieer-en-plakproces is, natuurlijk, een kloon genoemd.
"Er zijn geldige redenen waarom klonen zo gewoon is, " zei Roy, wiens onderzoek wordt ondersteund door een Natural Sciences and Engineering Research Council of Canada Accelerator Grant. "Het bespaart tijd, er is een laag risico bij het gebruik van stabiele code, en het resulteert in een snellere ontwikkeling. Het wiel opnieuw uitvinden is niet nodig."
Het probleem, Roy wijst er snel op, is dat vaak het klonen van code ook resulteert in het klonen van onbekende "bugs", en deze fouten kunnen zich snel verspreiden.
"Als je een bug in de originele code hebt, je kopieert steeds weer fouten, " zei hij. "Zelfs als je één exemplaar van de bug vindt, het is bijna onmogelijk om ze allemaal te vinden ... wat ertoe leidt dat veel industrieën verouderde code gebruiken in plaats van nieuwe code die mogelijk bugs bevat."
Deels vanwege de problemen met klonen en de resulterende klonen met fouten, tot 85 procent van de kosten van softwareontwikkeling kan worden besteed aan softwareonderhoud, inclusief kloondetectie.
"Het is een tweesnijdend zwaard, "zei Roy. "Klonen is gebruikelijk vanwege de voordelen voor programmeurs, maar klonen kunnen bugs bevatten die ook erg lastig zijn."
kloon detectie, een gebied waaraan Roy veel onderzoekstijd heeft besteed, betekent het vinden van vergelijkbare codefragmenten om bugproblemen op te lossen. In zijn eenvoudigste vorm, het is alsof je een document zoekt naar specifieke woorden. In zijn meest complexe vorm, het is als zoeken naar een speld in een hooiberg, vooral als de originele code is gewijzigd (wat de meest voorkomende vorm van klonen is) en zich in een programma bevindt dat miljoenen regels code bevat.
Om dit probleem aan te pakken, Roy en zijn onderzoeksmedewerker James Cordy van Queen's University hebben een aantal kloondetectiesystemen ontwikkeld die zoeken naar vergelijkbare codefragmenten. Er zijn twee hoofdcriteria nodig voor een goed kloondetectiesysteem:precisie, dat is het vermogen om klonen correct te detecteren; en herinneren, een term die verwijst naar het percentage klonen dat is gedetecteerd van het totale aantal aanwezige klonen. Roy en Cordy hebben het eerste kloondetectiesysteem ontwikkeld, genaamd NICAD, die uitblinkt in zowel precisie als recall.
"Als we eenmaal hebben gedefinieerd naar welke overeenkomsten we moeten zoeken, NICAD kan gemodificeerde klonen detecteren, "Roy zei, opmerkend dat een grote hoeveelheid menselijke testen, inclusief het doorlichten van meer dan negen miljoen gekloonde fragmenten, is gegaan om ervoor te zorgen dat het kloondetectiesysteem nauwkeurig is.
Door zijn evaluatie van kloondetectie, Roy is ook een wereldleider geworden op het gebied van benchmarking van kloondetectietools met de ontwikkeling van de BigCloneBench-tool.
Het potentieel van Roy's kloondetectiesystemen en benchmarkingwerk blijft niet onopgemerkt. Roy en Cordy hebben onlangs twee Most Influential Paper awards ontvangen, als erkenning voor de "blijvende impact van bijdragen die in de afgelopen 10 jaar zijn gedaan." Hun werk op het gebied van benchmarking en NICAD werd erkend door de International Conference on Software Analysis, Evolutie en re-engineering, en de Internationale Conferentie over Programmabegrip, respectievelijk.
Vooruitkijkend naar het volgende decennium, Roy zei dat hij een "veilig kloonsysteem" zou willen ontwikkelen dat niet alleen corrupte klonen detecteert, maar kan ook adviseren over het oplossen van bugs in het systeem, of verwijder ze zelfs automatisch.
"Dit kan veel tijd en geld besparen, maar ik weet niet zeker of ik dit zelfs in de komende 20 jaar kan doen, " zei Roy met een lichte glimlach en lach.
Wetenschap © https://nl.scienceaq.com