La vitrine de diffusion des mémoires et thèses de l'ÉTS
RECHERCHER

Leveraging informal documentation to automatically summarize the usage of code entities

Téléchargements

Téléchargements par mois depuis la dernière année

Naghshzan, Amirhossein (2024). Leveraging informal documentation to automatically summarize the usage of code entities. Thèse de doctorat électronique, Montréal, École de technologie supérieure.

[thumbnail of NAGHSHZAN_Amirhossein.pdf]
Prévisualisation
PDF
Télécharger (3MB) | Prévisualisation

Résumé

Source code summarization generates summarized information on the purpose, usage, and implementation of methods and classes to facilitate comprehension of these code entities. These summaries contain valuable information that can assist and guide software developers in tasks such as developing, maintaining, and refactoring source code.

Most often, developers rely on official documentation to understand code entities and API methods used in a project. However, researchers have identified insufficient or inadequate documentation examples and flaws with a method’s complex structure as barriers to learning an API. Therefore, to understand an API, developers may refer to other resources such as Stack Overflow, GitHub, etc. According to recent research findings, unofficial documentation is a valuable source of knowledge for generating code summaries. However, collecting data from these sources is time-consuming and requires extra effort on the developers’ side to find and extract the needed information, and sometimes, the data is inaccurate and may contain some flaws.

Our research proposes a novel approach for summarizing code entities by leveraging deep learning algorithms and informal documentation, i.e., Stack Overflow, to produce high-quality summaries for API methods. Our approach takes the API method’s name as input, generates a natural language summary by utilizing Stack Overflow discussions, and provides information about frequent problems and potential solutions related to the API.

In the first section of our research, we used an unsupervised machine learning algorithm, i.e., TextRank, to generate extractive summaries for API methods. To assess the quality of our generated summaries, we surveyed sixteen professional developers to evaluate the automatically generated summaries and compare them with the official Android documentation. Our findings indicate that although developers generally use official documentation, our generated summaries are valuable sources of information, especially when providing implementation details. Moreover, developers agreed that our summaries could be complementary to official documentation, assisting software developers in their software development and maintenance tasks.

In the second research section, we improved the summaries’ quality by applying a state-of-the-art deep learning algorithm (BART) to generate abstractive summaries. Furthermore, we created an oracle of human-generated summaries to evaluate our automatically generated summaries using ROUGE and BLEU metrics, which are frequently used in code summarization. Finally, we assessed the quality of our code summaries compared to summaries produced during the first section of our research. Our results indicate that deep learning algorithms enhance the quality of the generated code summaries. The improvements brought by our approach in the second section of this research significantly increased the accuracy of our summarization approach, reaching an average of 57 percent for Precision, 66 percent for Recall, and 61 percent for F-measure. Additionally, the new approach performs better in terms of execution time, running 4.4 times faster than the first one.

In the final part of our study, we applied the BERTopic algorithm to determine key topics from discussions about Android APIs on Stack Overflow, which serves as an essential informal documentation source. Additionally, we employed the BERT algorithm to pinpoint frequent issues and their possible solutions, creating brief yet informative summaries for these topics. To evaluate the effectiveness of our findings, we had thirty Android developers review these summaries, focusing on their performance, coherence, and interoperability. This provided us with crucial insights into the real-world applicability of our method.

Titre traduit

Tirer parti de la documentation informelle pour automatiquement résumer l’utilisation des entités de code

Résumé traduit

La génération automatique de résumé de code source génère des informations synthétisées à propos des méthodes et des classes (objectif, mise en oeuvre, utilisation) qui facilite la compréhension de ces entités de code. Ces résumés contiennent des informations précieuses qui peuvent aider et guider les développeurs de logiciels dans des tâches telles que le développement, la maintenance et le remaniement du code source.

En général, les développeurs s’appuient sur la documentation officielle pour comprendre les entités de code et les méthodes API utilisées dans un projet. Cependant, les chercheurs ont identifié plusieurs cas où la documentation s’avère insuffisante ou inadéquate, ou encore présente des défauts dans la présentation de la structure complexe des méthodes. Ces éléments constituent des obstacles à l’apprentissage d’une API. Par conséquent, pour comprendre une API, les développeurs peuvent se référer à d’autres ressources telles que Stack Overflow, GitHub, etc. D’après les résultats de recherches récentes, la documentation non officielle est une source précieuse de connaissances pour générer des résumés de code. Cependant, la collecte de données à partir de ces sources exige du temps et des efforts supplémentaires de la part des développeurs afin de trouver et d’extraire les informations nécessaires, et ce d’autant plus que les données ne sont pas exactes et peuvent contenir des erreurs.

Notre recherche propose une nouvelle approche pour résumer les entités de code en tirant parti des algorithmes d’apprentissage profond et de la documentation informelle, c’est-à-dire Stack Overflow, pour produire des résumés de haute qualité pour les méthodes API. Notre approche prend le nom de la méthode API en entrée, génère un résumé en langage naturel en utilisant les discussions Stack Overflow et fournit des informations sur les problèmes fréquents et les solutions potentielles liées à l’API.

Dans la première partie de cette thèse, nous avons utilisé l’algorithme d’apprentissage automatique non supervisé TextRank pour générer des résumés extractifs des méthodes API. Pour évaluer la qualité des résumés générés, nous avons interrogé seize développeurs professionnels afin d’évaluer les résumés générés automatiquement et de les comparer à la documentation officielle d’Android. Nos résultats indiquent que bien que les développeurs utilisent généralement la documentation officielle, nos résumés générés sont des sources d’information précieuses, en particulier lorsqu’ils fournissent des détails d’implémentation. En outre, les développeurs ont convenu que nos résumés pourraient être utilisés comme une source complémentaire à la documentation officielle, aidant les développeurs de logiciels dans leurs tâches de développement et de maintenance.

Dans la deuxième partie, nous avons amélioré la qualité des résumés en appliquant un algorithme d’apprentissage profond (BART) pour générer des résumés de type abstractif. Nous avons également créé un oracle de résumés générés par l’homme pour évaluer nos résumés générés automatiquement à l’aide des métriques ROUGE et BLEU, qui sont fréquemment utilisées dans la synthèse de code et plus particulièrement dans l’évaluation de résumés automatiques. Enfin, nous avons évalué la qualité de nos résumés de code par rapport aux résumés produits dans la première partie de notre recherche. Nos résultats indiquent que les algorithmes d’apprentissage profond améliorent la qualité des résumés de code générés. Les améliorations apportées par notre approche dans la deuxième partie de notre recherche ont considérablement augmenté la précision de notre approche, atteignant une moyenne de 57 percent pour la précision, 66 percent pour le rappel et 61 percent pour la mesure F. De plus, la nouvelle approche est plus performante en termes de temps d’exécution, s’exécutant 4,4 fois plus rapidement que la première.

Dans la troisième et dernière partie de notre étude, nous avons appliqué l’algorithme BERTopic pour déterminer les sujets clés des discussions sur les API Android sur Stack Overflow, qui sert de source de documentation informelle importante. En outre, nous avons utilisé l’algorithme BERT pour identifier les problèmes fréquents et leurs solutions possibles, en créant des résumés brefs mais informatifs pour ces sujets. Pour évaluer l’efficacité de nos résultats, nous avons demandé à trente développeurs Android d’examiner ces résumés, en se concentrant sur leurs performances, leur cohérence et leur interopérabilité. Cela nous a permis d’obtenir des informations cruciales sur l’applicabilité de notre méthode dans le monde réel.

Type de document: Mémoire ou thèse (Thèse de doctorat électronique)
Renseignements supplémentaires: "Thesis presented to École de technologie supérieure in partial fulfillment for the degree of doctor of philosophy". Comprend des références bibliographiques (pages 151-161).
Mots-clés libres: synthèse, apprentissage automatique, apprentissage profond, NLP, LLMs
Directeur de mémoire/thèse:
Directeur de mémoire/thèse
Ratté, Sylvie
Programme: Doctorat en génie > Génie
Date de dépôt: 20 mars 2025 19:44
Dernière modification: 20 mars 2025 19:44
URI: https://espace.etsmtl.ca/id/eprint/3555

Gestion Actions (Identification requise)

Dernière vérification avant le dépôt Dernière vérification avant le dépôt