Chanchal Roy, professeur agrégé au Département d'informatique. Crédit :Kris Foster
Le code est omniprésent et la plupart des industries du monde entier s'appuient sur des logiciels basés sur du code pour assurer le bon fonctionnement des opérations quotidiennes, dit Chanchal Roy, professeur agrégé au Département d'informatique.
"Les fonctions les plus simples utilisent du code, et un mauvais code peut avoir un impact énorme, " dit Roy, qui a rejoint le Collège des Arts et des Sciences en 2009. "Malheureusement, la façon dont les développeurs copient le code peut entraîner de nombreux bogues ou erreurs, quelque chose que mes recherches abordent.
Il est courant pour les développeurs de logiciels de copier, coller et modifier un fragment de code existant en fonction de la tâche ou de l'outil sur lequel ils travaillent. C'est ce qu'on appelle le clonage, et le code résultant du processus de copier-coller est, bien sûr, appelé un clone.
"Il y a des raisons valables pour lesquelles le clonage est si courant, " dit Roy, dont la recherche est financée par une subvention d'accélération du Conseil de recherches en sciences naturelles et en génie du Canada. « Ça fait gagner du temps, l'utilisation d'un code stable présente un faible risque, et il en résulte un développement plus rapide. Il n'est pas nécessaire de réinventer la roue."
Le problème, Roy s'empresse de souligner, est que souvent le clonage du code entraîne également le clonage de "bugs" inconnus, et ces erreurs peuvent se propager rapidement.
"Si vous avez un bogue dans le code d'origine, vous copiez les erreurs encore et encore, " dit-il. " Même si vous trouvez une instance du bogue, il est presque impossible de tous les trouver… ce qui fait que de nombreuses industries utilisent du code obsolète par rapport à un nouveau code qui contient potentiellement des bogues. »
En partie à cause des problèmes liés au clonage et aux clones de buggy qui en résultent, jusqu'à 85 % du coût du développement de logiciels peuvent être consacrés à la maintenance des logiciels, y compris la détection de clones.
"C'est une épée à double tranchant, " a déclaré Roy. " Le clonage est courant en raison des avantages pour les programmeurs, mais les clones peuvent contenir des bugs qui sont aussi très gênants."
Détection de clones, un domaine dans lequel Roy a consacré beaucoup de temps de recherche, signifie trouver des fragments de code similaires afin de résoudre les problèmes de bogue. Dans sa forme la plus simple, c'est comme faire une recherche dans un document pour des mots spécifiques. Sous sa forme la plus complexe, c'est comme chercher une aiguille dans une botte de foin, surtout si le code d'origine a été modifié (ce qui est la forme de clonage la plus courante) et se trouve dans un programme contenant des millions de lignes de code.
Pour régler ce problème, Roy et son collaborateur de recherche James Cordy de l'Université Queen's ont développé un certain nombre de systèmes de détection de clones qui recherchent des fragments de code similaires. Deux critères principaux sont nécessaires pour un bon système de détection de clones :la précision, qui est la capacité de détecter correctement les clones ; et rappelez-vous, terme désignant le pourcentage de clones détectés sur le nombre total de clones présents. Roy et Cordy ont développé le premier système de détection de clones, appelé NICAD, qui excelle à la fois en précision et en rappel.
« Une fois que nous avons défini les similitudes à rechercher, NICAD peut détecter les clones modifiés, " Roy a dit, notant qu'une grande quantité de tests humains, y compris la vérification de plus de neuf millions de fragments clonés, a contribué à garantir que le système de détection de clones est précis.
Grâce à son évaluation de la détection de clones, Roy est également devenu un leader mondial dans le domaine de l'analyse comparative des outils de détection de clones avec le développement de l'outil BigCloneBench.
Le potentiel des systèmes de détection de clones et des travaux d'analyse comparative de Roy ne passe pas inaperçu. Roy et Cordy ont récemment reçu deux prix du papier le plus influent, en reconnaissance de « l'impact durable des contributions versées au cours des 10 dernières années ». Leurs travaux sur l'analyse comparative et le NICAD ont été reconnus par la Conférence internationale sur l'analyse des logiciels, Évolution et réingénierie, et la Conférence internationale sur la compréhension des programmes, respectivement.
Dans la perspective de la prochaine décennie, Roy a déclaré qu'il aimerait développer un "système de clonage sûr" qui non seulement détecte les clones corrompus, mais est également en mesure de donner des conseils sur la façon de corriger les bogues dans le système, ou même les supprimer automatiquement.
"Cela a le potentiel d'économiser beaucoup de temps et d'argent, mais je ne suis pas sûr de pouvoir le faire même dans les 20 prochaines années, " dit Roy avec un léger sourire et un petit rire.