Application du deep learning à la simplification du développement logiciel

Application du deep learning à la simplification du développement logiciel
Actu IA
Bayou

Les chercheurs de l’Université Rice aux États-Unis ont développé une application deep learning destinée à simplifier le développement de logiciels en Java. Baptisé Bayou, le service disponible en ligne sur askbayou.com a été financé par la Defense Advanced Research Projects Agency. Il a pour objectif d’extraire les connaissances de codes open sources de références disponibles en ligne (notamment sur GitHub) afin d’aider les développeurs à transformer des “brouillons” de code en portions de code valides. Il tente pour cela d’insérer les lignes ou blocs de code manquants afin de permettre le bon fonctionnement du programme tout en cherchant à respecter les intentions initiales du développeur.

Swarat Chaudhuri, professeur agrégé d’informatique à Rice et co-créateur de Bayou, a déclaré :

“Certains ont essayé pendant 60 ans de développer des systèmes capables d’écrire du code, mais le problème est que ces méthodes ne gèrent pas correctement l’ambiguïté. Vous devez généralement donner beaucoup de détails sur ce que fait le programme cible, et l’écriture de ces détails peut impliquer autant de travail que l’écriture même du code”.

“Bayou est une amélioration considérable. Un développeur peut donner à Bayou une très petite quantité d’informations – juste quelques mots-clés, vraiment – et Bayou essayera de comprendre ce que veut le programmeur et de prédire le programme qu’il veut”.

L’architecte et chercheur de Bayou, Vijay Murali, a précisé que :

“le développement de logiciels modernes est une question de règles, d’outils, de définitions et de protocoles spécifiques au système qui permettent à un morceau de code d’interagir avec un système d’exploitation spécifique. Il existe des centaines d’API et navigation parmi elles est très difficile pour les développeurs qui passent beaucoup de temps sur des sites de questions-réponses comme Stack Overflow à demander de l’aide à d’autres développeurs”.

GitHub a été fondamental dans la création de Bayou car ce dernier s’est entrainé lui-même, en analysant des millions de lignes de code en Java pour ensuite se baser dessus et écrire son propre code. Chris Jermaine, co-créateur de l’application, affirme que Bayou permet de faire la différence, notamment au moment de synthétiser des exemples de code pour des API logicielles spécifiques.

“La programmation d’aujourd’hui est très différente de ce qu’elle était il y a 30 ou 40 ans. Les ordinateurs d’aujourd’hui sont dans nos poches, sur nos poignets et dans des milliards d’appareils ménagers, de véhicules et d’autres dispositifs. Les jours où un programmeur pouvait écrire du code à partir de zéro sont révolus depuis longtemps”.

L’objectif principal de l’équipe de chercheurs est d’amener les développeurs à essayer de développer Bayou, publié sous une licence open source permissive.

“Plus nous aurons d’informations sur ce que les gens veulent d’un système comme Bayou, mieux nous pourrons le faire. Nous voulons que le plus de gens possible l’utilisent”.

Bayou est basé sur une méthode appelée neural sketch learning, qui forme un réseau de neurones artificiels à reconnaître des modèles de haut niveau parmi des centaines de milliers de programmes Java. Il le fait en créant une ‘esquisse’ (sketch) pour chaque programme qu’il lit, puis associe cette esquisse à ‘l’intention’ probable qui se cache derrière le programme. Suivant ce principe, lorsqu’un utilisateur pose des questions à Bayou, l’application va prendre une décision sur le type de programme qu’on lui demande d’écrire. Il va ensuite définir ce que l’utilisateur souhaite probablement et créer des esquisses de plusieurs de ces programmes.

“À partir de cette hypothèse, une partie distincte de Bayou, un module qui comprend les détails de bas niveau de Java et peut faire un raisonnement logique automatique, va générer quatre ou cinq portions de code. Il va les présenter à l’utilisateur comme des résultats d’une recherche sur le Web : ‘Voici probablement la bonne réponse, mais en voici trois autres qui pourraient également correspondre ce que vous cherchez”.