La Forge, le labo d’Ubisoft
Clever-Commit a été développé dans le lab La Forge d’Ubisoft Montréal. Cet outil contribue déjà au développement d’importants titres AAA de l’éditeur français en aidant les développeurs à détecter et corriger les bugs. Rappelons que les titres AAA représentent des jeux dont le développement est long et surtout complexe. Ils représentent les produits phares de l’éditeur. Clever-Commit utilise à cette fin des techniques de machine learning en vue d’identifier d’éventuels bugs et régressions futurs. Il se base pour cela sur les erreurs précédemment rencontrées et s’appuie sur du Deep Learning pour suggérer des corrections aux développeurs. Mozilla, grâce à ce partenariat, va pouvoir l’implémenter dans le processus de développement de votre navigateur préféré, ou non, Firefox. La fondation va travailler à son amélioration pour les langages C++, Javascript et Rust, un langage récemment créé par Mozilla. Clever-Commit analyse le code de chaque contribution (livraison de code par un développeur) au référentiel central (dépôt de code) dans le but de détecter des bugs ou des régressions présents et surtout à venir. C’est Yves Jacquier, le directeur d’Ubisoft La Forge, qui a fait l’annonce de cette collaboration lors du D.I.C.E. Summit 2019. Ubisoft La Forge a initié ce projet avec l’Université Concordia. La Forge est en quelque sorte un laboratoire de prototypage, un cabinet d’études R & D au sein d’Ubisoft Montréal. En résumé, Clever-Commit est une technologie d’Intelligence artificielle développée dans le but d’aider les programmeurs à évaluer si une modification du code peut provoquer de nouveaux bugs ne serait-ce que par « effet de bord ».Prédiction des bugs avec Clever-Commit
Clever-Commit s’appelle ainsi simplement parce qu’il est capable, grâce à l’IA, d’identifier les bugs lors du « commit », la phase au cours de laquelle un développeur publie son code pour l’ensemble de l’équipe. Il est « intelligent » au moment du commit. L’assistant propose aussi des corrections ou améliorations du code. C’est l’étude du code des développements passés qui apprend à l’IA à mieux identifier les bugs – encore le Deep Learning. Et, de fil en aiguille, de bug en bug plutôt, l’outil apprend et se perfectionne. Chez Ubisoft et les autres éditeurs de jeux complexes, à coder, pas forcément à jouer, heureusement, la conception de jeux vidéo requiert un grand nombre de développeurs. L’objectif est, bien évidemment, de gagner du temps dans ce processus complexe et d’améliorer la qualité des logiciels. Cet assistant sera désormais utilisé par les développeurs de Firefox. « Mozilla va commencer par utiliser l’outil à l’étape de la révision du code. Si les résultats sont jugés satisfaisants, il sera employé à d’autres étapes du processus de développement, plus particulièrement lors de l’automatisation », dixit Mozilla. Clever-Commit avait été présenté l’an dernier en tant que prototype du nom de Commit-Assistant. Tout d’abord testé avec des données amassées lors du développement de jeux vidéo, le prototype avait ensuite été transféré au Groupe Technologique d’Ubisoft, qui a eu pour mission de l’adapter pour divers types de projets.![](https://l1fo.tech/wp-content/uploads/2019/06/inf176_clever_02.jpg)
Nettoyer le code grâce à l’Intelligence artificielle
Clever-Commit utilise l’IA – plus précisément le Machine Learning – pour analyser les bugs passés et détecter des morceaux de code susceptibles de produire les mêmes types d’erreurs. Il s’appuie par ailleurs sur des techniques d’apprentissage profond – le Deep Learning – en vue de suggérer de possibles résolutions des problèmes aux développeurs. Selon Ubisoft, le gain de temps serait de 20 à 70 %, selon les projets, sur la durée globale du développement. Cela inclue donc logiquement la conception, le testing et le débogage. D’après le responsable de la gestion des lancements et de la qualité de Firefox, Sylvestre Ledru, « en intégrant CleverCommit au flux de développement, nous améliorerons le processus de programmation de Firefox en repérant les tendances en matière de bogues et en identifiant plus tôt les correctifs antérieurs, à une étape où corriger un bogue coûte beaucoup moins cher qu’après la parution ». Cela devrait avoir pour conséquence de réduire le temps et les ressources consacrés à la correction des bugs du navigateur et d’offrir des releases bien plus stables. Ubisoft compte par le biais de ce partenariat signé avec Mozilla – qui, soit dit en passant, ne comporte à priori aucune dimension financière – accélérer l’amélioration de son assistant en supportant notamment de nouveaux langages de programmation. Ubisoft pourra aussi profiter des données issues de la programmation de Firefox et de l’expérience de ses développeurs pour enrichir CleverCommit. En l’état actuel des choses, c’est un outil interne à Ubisoft et il n’est pas disponible en Open source. L’accord conclu ne concerne que Mozilla.Contribution de Mozilla
À partir de maintenant, Mozilla va également contribuer au développement de l’outil. « Travailler avec Mozilla sur Clever-Commit va nous permettre de prendre en charge d’autres langages de programmation et d’améliorer les performances générales de l’outil », a déclaré Mathieu Nayrolles, architecte technique, data scientist et membre du Groupe Technologique d’Ubisoft Montréal. Spécialiste du Web, Mathieu Nayrolles va fournir son expertise dans les langages de programmation C++, Rust et Javascript. Son expérience en matière d’analyse de code C++ et de systèmes de suivi des bugs est loin d’être négligeable pour l’avancement du projet. Alors que CleverCommit contribue déjà au processus de développement d’importants titres d’Ubisoft, l’éditeur est en train de l’intégrer pour d’autres marques. Mozilla va pour sa part intégrer Clever-Commit au flux de développement de Firefox. L’éditeur devrait commencer par l’utiliser à l’étape de la révision du code. Si les résultats s’avèrent concluants, il sera implémenté à d’autres étapes du processus de programmation, sans doute en priorité dans les phases d’automatisation (génération automatisée de portions de code). L’idée poursuivie est d’analyser le code de Firefox au moment des commit (contribution/soumission de nouveau code dans le dépôt du projet). Clever-Commit utilise une base évolutive de signatures de bugs qu’il analyse grâce à des algorithmes de Machine learning. Lorsqu’il détecte du code suspect, il alerte automatiquement la ou les personnes concernées en proposant d’éventuelles corrections. 60 % des bugs et régressions seraient ainsi identifiés en amont comparativement au process de développement classique utilisé auparavant. Actuellement, le système ferait remonter 30 % de faux positifs, mais cela devrait évoluer progressivement à la baisse au fur et à mesure que la base de signatures de bugs s’enrichit, et que l’outil se forme de ses erreurs passées. Clever-Commit ne s’arrête pas à la détection. Il va plus loin en suggérant des correctifs pour remplacer le code défaillant ou dangereux. La charge d’un développeur serait ainsi réduite d’au moins 20 %, temps qui peut alors être employé pour de la conception au lieu du débogage fastidieux. Et, au final, l’expérience des utilisateurs que nous sommes tous s’en verra améliorée avec un navigateur internet offrant une meilleure finition.La genèse
Yves Jacquier, responsable de La Forge, la fameuse division R&D d’Ubisoft à Montréal, a déclaré « Je pense que comme beaucoup de bonnes idées, on se demande : comment se fait-il que nous n’y ayons pas penser avant ? » Son département travaille en partenariat avec des universités locales, dont McGill et Concordia – avec laquelle a été initié Clever-Commit. La Forge travaille sur des projets visant à faire progresser le domaine de l’Intelligence artificielle dans son ensemble et non pas seulement dans l’industrie des jeux vidéo. La Forge a fourni au « Commit Assistant » une dizaine d’années de code à travers la bibliothèque de logiciels d’Ubisoft, ce qui n’est pas rien. Cela lui a permis de déterminer quelles erreurs ont été historiquement rencontrées, de référencer les corrections un des aspects les plus coûteux en termes de ressources de développement et parmi les plus laborieux de la conception de jeux. L’éditeur de jeux affirme que l’élimination des bugs au cours de la phase de développement nécessite des ressources très importantes et peut parfois absorber jusqu’à 70 % du coût de développement d’un projet. Nous ne le contredirons certainement pas sur ce point – ni sur les autres d’ailleurs : la phase de débogage de grands projets complexes peut parfois être si coûteuse et si longue que certaines sociétés ne seront pas toujours en mesure de la gérer et pourra même conduire à leur disparition faute de moyens financiers suffisants. Clever-Commit s’attaque donc à un sujet très sensible et problématique dans le monde du développement d’applications.![](https://l1fo.tech/wp-content/uploads/2019/06/inf176_clever_03.jpg)
Les débuts de l’IA dans le processus de développement
Néanmoins, le fait de décharger le processus d’élimination de bugs à une Intelligence artificielle, même en partie, n’est pas exempt de problème. Yves Jacquier le souligne : « Vous avez besoin d’une très grosse quantité de données, mais aussi d’une énorme puissance de calcul pour traiter les données et toutes les méthodes mathématiques. Cela permet à l’IA de faire cette prédiction avec suffisamment de précision pour que le développeur fasse confiance à la recommandation. » Ce procédé ne peut donc pas, c’est clair, être utilisé pour des projets de moyenne envergure. Seuls les grands projets comme ceux cités peuvent se le permettre. Et même pour ceux-là, il est trop tôt pour évaluer les bénéfices réels de l’utilisation de Clever-Commit. Il va falloir sans doute un peu de recul pour voir comment cela affecte la création de jeux. Le facteur humain doit lui aussi être pris en considération. Les développeurs vont devoir désormais collaborer avec l’Intelligence artificielle. Cela ne sera peut-être pas si évident. « La partie la plus importante, en termes de gestion du changement, est juste de s’assurer que vous prenez les gens à bord pour leur montrer que vous êtes totalement transparent vis-à-vis de ce que vous faites avec l’IA – ce qu’il peut faire, la façon dont vous obtenez les données », fait encore remarquer Yves Jacquier. « Le fait que lorsque vous montrez à un programmeur des statistiques qui disent “ Eh, apparemment vous avez fait une erreur ! ”, vous voulez qu’il se rende compte que c’est un outil pour l’aider et aller plus vite, pas pour le remplacer. »Fuzzing avec Microsoft Security Risk Detection
Microsoft Security Risk Detection est lui aussi un outil pour les développeurs. C’est une IA basée dans le Cloud capable d’analyser le code source d’un projet à la recherche d’éventuelles failles de sécurité. Sur ce point Security Risk Detection semble loin d’égaler Clever-Commit, mais l’annonce faite par Ubisoft et Mozilla va peut-être réveiller l’éditeur de Seattle ? Sinon, c’est toujours la même histoire : une vulnérabilité repérée avant la livraison du logiciel vaut toujours mieux qu’une vulnérabilité détectée tardivement et corrigée via un patch que les utilisateurs n’appliqueront pas tous ou du moins pas aussitôt. Microsoft Security Risk Detection se présente principalement sous la forme d’un outil de fuzzing automatisé et boosté à l’Intelligence artificielle, entièrement dans le Cloud. Rappelons que le fuzzing est une technique de détection des vulnérabilités consistant à évaluer les réactions du logiciel en lui envoyant des qui ont été appliquées et de prédire quand un développeur pourrait écrire du code avec des bugs similaires. «Il s’agit avant tout de comparer les lignes de code que nous avons créées dans le passé, les bugs qui y ont été créés et ceux qui ont été corrigés et d’ainsi trouver un moyen de créer des liens entre eux pour fournir une super-IA prédictive et corrective pour les programmeurs », explique encore Yves Jacquier. Ubisoft fomente l’espoir que le « Commit Assistant » réduira données plus ou moins aléatoires afin de tester son comportement dans des cas inhabituels. C’est, grosso-modo, le sacro-saint principe d’automatisation des tests, mais avec une IA derrière cette fois. La tâche était jusque-là l’apanage d’experts en testing qui se chargeaient d’établir des protocoles de test en écrivant pour cela du code spécifique, aidés tout de même par certains outils (Rational Rose, la famille XUnit, etc). Microsoft veut donc automatiser ce processus grâce à l’Intelligence artificielle, ce qui ne semble pas être une mauvaise idée. Security Risk Detection se présente sous la forme d’un portail, sur lequel les développeurs peuvent uploader le fichier binaire de l’application qu’ils souhaitent tester. La plate-forme proposera plusieurs tests à la disposition de l’utilisateur afin de l’aider à identifier les différents bugs et crashs pouvant survenir. L’application SRD produit ensuite des rapports détaillés afin d’identifier et de corriger les failles détectées et offre de plus notamment la possibilité d’accéder aux paramètres ayant permis de provoquer un bug afin de pouvoir le reproduire en local. Ceci est plus qu’intéressant en matière de testing : connaître le scénario précis d’utilisation d’une application ayant provoqué un bug. Microsoft a déclaré que ce nouveau service intègre des outils de fuzzing testés et utilisés dans le développement interne de produits Microsoft depuis plusieurs années. Bon, cet argument est-il vraiment rassurant ? Là, il nous faudra un peu de temps (et de bonnes expériences…) pour nous prononcer. Ce ne sont pas les sorties un peu trop rapides de kb et sous versions Windows actuelles qui nous rassureront sur ce point. Microsoft propose également son programme pour les développeurs d’applications pour les systèmes Linux. ❍![](https://l1fo.tech/wp-content/uploads/2019/06/inf176_clever_04.jpg)