ACTUALITÉ SCIENTIFIQUE
ET INNOVATION DE L'ÉTS
Synthèse automatique d’interfaces de programmation applicative - Par : Amirhossein Naghshzan, Latifa Guerrouj, Olga Baysal,

Synthèse automatique d’interfaces de programmation applicative


Amirhossein Naghshzan
Amirhossein Naghshzan Profil de l'auteur(e)
Amirhossein Naghshzan est étudiant au doctorat au Département de génie logiciel de l’ÉTS. Ses recherches portent sur le traitement du langage naturel et l’apprentissage machine.
Programme : Génie logiciel 

Latifa Guerrouj
Latifa Guerrouj Profil de l'auteur(e)
Latifa Guerrouj est professeure agrégée au Département de génie logiciel de l’ÉTS. Ses travaux portent sur l’analyse des logiciels, l’exploration de référentiels de logiciels et le génie logiciel empirique.
Programme : Génie logiciel 

Olga Baysal
Olga Baysal est professeure agrégée à l’École d’informatique de l’Université Carleton. Ses travaux portent sur le génie logiciel empirique, l’exploration de données, l’IA/AM pour le génie logiciel.

Développeur.se informatique

Achetée sur Istockphoto.com. Droits d’auteur.

RÉSUMÉ:

La synthèse automatique d’un code source sert à résumer les informations sur les entités du code (ex. classes et méthodes) sous forme de descriptions en langage naturel. Dans cet article, nous proposons une approche automatique pour résumer les méthodes API Android discutées dans Stack Overflow. Notre approche consiste à entrer le nom de la méthode API et de générer un résumé en langage naturel des discussions sur cette méthode qu’on retrouve dans Stack Overflow. Notre enquête auprès de 16 développeurs Android a permis d’évaluer la qualité des résumés générés et de les comparer à la documentation Android officielle. Selon nos résultats, bien que les développeurs considèrent la documentation officielle comme étant plus utile en général, les résumés générés leur font concurrence et peuvent servir de source complémentaire dans leurs tâches de développement logiciel. Mots-clés : synthèse de code, apprentissage non supervisé, documentation non officielle, enquête, développeurs professionnels.

Stack Overflow, une documentation supplémentaire

Souvent, les développeurs ne connaissent pas le but ou l’utilisation d’une entité de code. Ils ou elles doivent examiner une grande quantité de codes et de documentation pour en saisir le concept. Une approche automatique peut donc leur fournir des résumés sur le but, l’implantation et l’utilisation des entités de code qui font partie de leurs tâches. Prenons l’exemple d’une développeuse qui tente de corriger un bogue causé par le travail de quelqu’un d’autre. Pour comprendre le bogue et le reproduire, les développeurs doivent d’abord lire tous les rapports connexes et examiner les discussions associées. De même, la développeuse qui souhaite implanter une fonction pour la première fois doit lire toute la documentation associée pour se familiariser avec la méthode et en comprendre l’utilisation. Bien que les développeurs s’appuient sur la documentation officielle comme principale source d’information sur les entités du code [1], des chercheurs ont démontré qu’elle est parfois incomplète, fragmentaire et diffuse [2] [3]. Par conséquent, les développeurs viennent à consulter d’autres sources comme Stack Overflow, un site Internet à questions-réponses pour les programmeurs.

Pour combler cette lacune, nous proposons la synthèse automatique des API par le biais de documentation non officielle couplée à l’apprentissage non supervisé. Pour notre recherche, nous avons utilisé Stack Overflow comme source de documentation non officielle. Notre attention s’est portée sur le résumé extractif de codes, soit l’extrait des phrases les plus importantes dans les documents, ici, les messages dans Stack Overflow.

Génération et évaluation des résumés

Pour mener à bien notre étude, nous l’avons divisée en deux grandes parties : la génération de résumés et leur évaluation. Pour la première partie, nous avons collecté les messages Android de Stack Overflow de janvier 2009 à avril 2020 et avons obtenu 3 084 143 messages uniques. Ensuite, nous avons utilisé TextRank, un algorithme d’apprentissage automatique non supervisé, pour générer des résumés.

Algorithme TextRank

Figure 1. Vue d’ensemble de l’algorithme TextRank.

Pour la deuxième partie, nous avons demandé à 28 développeurs Android d’évaluer la qualité des résumés que nous avons générés, puis de les comparer à la documentation Android officielle. Seize développeurs ont accepté de participer à notre étude. Nous n’avons attribué que trois API à chaque participant afin d’éviter la confusion et la fatigue.

Un outil utile pour les développeurs

Nous avons évalué un total de 3 084 143 messages uniques de Stack Overflow et résumé les 15 API Android les plus populaires. Voici les principaux résultats de notre enquête :

  • Tous les développeurs participants (100 %) ont convenu que la longueur des résumés était appropriée.
  • Plus de la moitié des participants (58 %) estimaient que les résumés générés automatiquement étaient cohérents.
  • La plupart des participants (73 %) pensaient que nos résumés comportaient des informations exactes sur les méthodes Android.
  • 59 % des participants estimaient que les résumés générés automatiquement contenaient des informations importantes et nécessaires sur les méthodes Android.
  • En comparant les résumés générés automatiquement avec la documentation Android officielle, on ne voit pas beaucoup de différences : presque les mêmes proportions d’information ont été obtenues pour les deux, à l’exception qu’on y retrouve un peu moins d’informations sur l’implantation par rapport à l’utilisation.
  • Un taux de 4,1 participants sur 5 a convenu qu’il serait utile d’avoir un plugin intégré pour afficher nos résumés générés automatiquement.
Comparaison entre synthèses générées et documentation officielle

Figure 2. Lequel est meilleur : résumés générés ou documentation officielle ?

Qualité des synthèses générées

Figure 3. Satisfaction des développeurs envers la qualité des résumés générés.

Conclusion

Nous avons présenté une nouvelle approche de synthèse de code basée sur la documentation non officielle et l’apprentissage non supervisé. Nous avons utilisé les messages Android de Stack Overflow comme ensemble de données et appliqué l’algorithme TextRank comme technique principale de synthèse. Les résumés générés ont été évalués par 16 développeurs professionnels. Nous avons constaté que nos résumés générés automatiquement pourraient servir aux développeurs dans le développement de logiciels. De plus, les résumés sont presque aussi utiles que la documentation officielle pour comprendre l’utilisation et l’implantation des méthodes Android. Les participants ont convenu que les résumés générés peuvent être une source complémentaire à la documentation officielle.

Information supplémentaire

Pour plus d’informations sur cette recherche, consulter l’article suivant :

Naghshzan, A.; Guerrouj, L. and Baysal, O. 2021. “Leveraging Unsupervised Learning to Summarize APIs Discussed in Stack Overflow”. IEEE 21st International Working Conference on Source Code Analysis and Manipulation (SCAM). pp. 142-152.

Amirhossein Naghshzan

Profil de l'auteur(e)

Amirhossein Naghshzan est étudiant au doctorat au Département de génie logiciel de l’ÉTS. Ses recherches portent sur le traitement du langage naturel et l’apprentissage machine.

Programme : Génie logiciel 

Laboratoires de recherche : LASI – Laboratoire en architecture de systèmes informatiques 

Profil de l'auteur(e)

Latifa Guerrouj

Profil de l'auteur(e)

Latifa Guerrouj est professeure agrégée au Département de génie logiciel de l’ÉTS. Ses travaux portent sur l’analyse des logiciels, l’exploration de référentiels de logiciels et le génie logiciel empirique.

Programme : Génie logiciel 

Laboratoires de recherche : LASI – Laboratoire en architecture de systèmes informatiques 

Profil de l'auteur(e)

Olga Baysal

Profil de l'auteur(e)

Olga Baysal est professeure agrégée à l’École d’informatique de l’Université Carleton. Ses travaux portent sur le génie logiciel empirique, l’exploration de données, l’IA/AM pour le génie logiciel.

Profil de l'auteur(e)


Recevez les dernières actualités scientifiques de l'ÉTS