Chanchal Roy, profesor asociado del Departamento de Ciencias de la Computación. Crédito:Kris Foster
El código es omnipresente y la mayoría de las industrias de todo el mundo confían en el software basado en código para mantener en funcionamiento las operaciones diarias. dijo Chanchal Roy, profesor asociado en el Departamento de Ciencias de la Computación.
"Las funciones más simples usan código, y el código incorrecto puede tener un impacto enorme, "dijo Roy, que se unió a la Facultad de Artes y Ciencias en 2009. "Desafortunadamente, la forma en que los desarrolladores copian el código puede resultar en muchos errores o errores, algo que aborda mi investigación ".
Es una práctica común que los desarrolladores de software copien, pegar y modificar un fragmento de código existente para adaptarlo a la tarea o herramienta en la que están trabajando. A esto se le llama clonación, y el código resultante del proceso de copiar y pegar es, por supuesto, llamado clon.
"Hay razones válidas por las que la clonación es tan común, "dijo Roy, cuya investigación está apoyada por una Beca Aceleradora del Consejo de Investigación en Ingeniería y Ciencias Naturales de Canadá. "Ahorra tiempo, existe un riesgo bajo en el uso de código estable, y da como resultado un desarrollo más rápido. No es necesario reinventar la rueda ".
El problema, Roy se apresura a señalar:es que, a menudo, la clonación de código también da como resultado la clonación de "errores" desconocidos, y estos errores pueden propagarse rápidamente.
"Si tiene un error en el código original, estás copiando errores una y otra vez, ", dijo." Incluso si encuentra una instancia del error, es casi imposible encontrarlos todos ... lo que da como resultado que muchas industrias usen código desactualizado sobre código nuevo que potencialmente tiene errores ".
En parte debido a los problemas relacionados con la clonación y los clones con errores resultantes, hasta el 85 por ciento del costo del desarrollo de software puede destinarse al mantenimiento del software, incluida la detección de clones.
"Es un arma de doble filo, ", dijo Roy." La clonación es común debido a los beneficios para los programadores, pero los clones pueden portar errores que también son realmente problemáticos ".
Detección de clones, un área en la que Roy ha dedicado mucho tiempo a la investigación, significa encontrar fragmentos de código similares para resolver problemas de errores. En su forma más simple, es como buscar palabras específicas en un documento. En su forma más compleja, es como buscar una aguja en un pajar, especialmente si el código original ha sido modificado (que es la forma más común de clonación) y está en un programa que contiene millones de líneas de código.
Para abordar este asunto, Roy y su colaborador de investigación James Cordy de la Queen's University han desarrollado varios sistemas de detección de clones que buscan fragmentos similares de código. Hay dos criterios principales necesarios para un buen sistema de detección de clones:precisión, que es la capacidad de detectar clones correctamente; y recordar término que se refiere al porcentaje de clones detectados del número total de clones presentes. Roy y Cordy han desarrollado el primer sistema de detección de clones, llamado NICAD, que sobresale tanto en precisión como en memoria.
"Una vez que definamos qué similitudes buscar, NICAD puede detectar clones modificados, "Roy dijo, observando que una gran cantidad de pruebas en humanos, incluida la investigación de más de nueve millones de fragmentos clonados, se ha destinado a garantizar que el sistema de detección de clones sea preciso.
A través de su evaluación de la detección de clones, Roy también se ha convertido en un líder mundial en el área de la evaluación comparativa de las herramientas de detección de clones con el desarrollo de la herramienta BigCloneBench.
El potencial de los sistemas de detección de clones de Roy y el trabajo de evaluación comparativa no pasa desapercibido. Roy y Cordy han recibido recientemente dos premios de papel más influyente, en reconocimiento al "impacto duradero de las contribuciones realizadas en los últimos 10 años". Su trabajo en benchmarking y NICAD fue reconocido por la Conferencia Internacional sobre Análisis de Software, Evolución y reingeniería, y la Conferencia Internacional sobre Comprensión de Programas, respectivamente.
Mirando hacia la próxima década, Roy dijo que le gustaría desarrollar un "sistema de clonación seguro" que no solo detecte clones corruptos, pero también puede asesorar sobre cómo corregir errores en el sistema, o incluso eliminarlos automáticamente.
"Esto tiene el potencial de ahorrar mucho tiempo y dinero, pero no estoy seguro de poder hacer esto incluso en los próximos 20 años, "dijo Roy con una leve sonrisa y riendo.