Uma meta-abordagem para sumarização automática de código-fonte utilizando modelos neurais e algoritmos de regressão

Dias, Gustavo Gomes (2024-11-08)

tcc

RESUMO: No processo de produção de um software, a documentação se destaca como um importante artefato, pois acompanha o software ao longo de todo o seu ciclo de vida. A documentação serve como base para o aprendizado dos novos membros da equipe de desenvolvimento e orienta tanto a implementação de novas funcionalidades quanto as manutenções necessárias. Dentre os vários tipos de documentação existentes para um determinado software, a documentação inserida diretamente nos trechos de código-fonte desempenha um importante papel, onde os desenvolvedores explicam o funcionamento específico do código. No entanto, a criação e manutenção dessa documentação inserida diretamente no código-fonte podem consumir uma quantidade significativa de tempo e recursos dos desenvolvedores. Escrever descrições claras e detalhadas exige esforço adicional, além das tarefas de desenvolvi- mento propriamente ditas. Uma das abordagens recentes para atender à necessidade de documentar trechos de código-fonte e, ao mesmo tempo, otimizar o tempo e os recursos dos desenvolvedores, é a tarefa de sumarização automática de código-fonte. Essa tarefa, que aplica conceitos de Processamento de Linguagem Natural (PLN) e Aprendizado de Máquina (AM), tem como objetivo gerar descrições automáticas a partir de um dado trecho de código-fonte. Este trabalho analisa a viabilidade do desenvolvimento de uma meta-abordagem para a tarefa de sumarização de código que utiliza diferentes modelos neurais de linguagem para gerar diversas descrições candidatas e, em um segundo momento, aplica um modelo de regressão para estimar um escore de relevância para cada candidato, permitindo assim selecionar o resumo com maior de relevância estimada como o mais adequado. Para o treinamento dos algoritmos de regressão, foram utilizadas diversas características extraídas diretamente do código-fonte e das descrições candidatas geradas. Experimentos foram realizados para analisar a abordagem proposta utilizando quatro bases de dados nas linguagens de programação Python e Java. Para esses experimentos, foram utilizados os modelos de sumarização de código-fonte do CodeBERT, CodeTrans, CodeT5 e PLBART, enquanto os algoritmos de regressão analisados incluem Bayesian Ridge, CatBoost, LGBM, Linear SVM, Regressão Linear, SVR e XGB. Os resultados dos experimentos demonstraram que a meta abordagem apresentada obteve melhores resultados em comparação com os modelos individualmente, demonstrando a viabilidade da abordagem desenvolvida.

ABSTRACT: Documentation is an important artifact in the software production process, as it accompanies the software throughout its life cycle. The documentation serves as a learning basis for new members of the development team and guides both the implementation of new features and the necessary maintenance. Among the various types of documentation that exist for a given software, documentation inserted directly into source code snippets plays an important role, where developers explain the specific functioning of the code. However, creating and maintaining this documentation inserted directly into the source code can consume a significant amount of developers’ time and resources. Writing clear and detailed descriptions requires additional effort in addition to the development tasks themselves. One of the recent approaches to meet the need to document source code snippets and, at the same time, optimize developers’ time and resources is the task of automatic source code summarization. This task, which applies concepts from Natural Language Processing (NLP) and Machine Learning (ML), aims to generate automatic descriptions from a given source code snippet. This work analyzes the feasibility of developing a meta-approach for code summarization that uses different neural language models to generate several candidate descriptions and, in a second step, applies a regression model to estimate a relevance score for each candidate, thus allowing the selection of the summary with the highest relevance estimated as the most appropriate. For the training of the regression algorithms, several features extracted directly from the source code and the generated candidate descriptions were used. Experiments were performed to analyze the proposed approach using four datasets in the Python and Java programming languages. For these experiments, the source code summarization models CodeBERT, CodeTrans, CodeT5, and PLBART were used, while the regression algorithms analyzed include Bayesian Ridge, CatBoost, LGBM, Linear SVM, Linear Regression, SVR, and XGB. The results of the experiments demonstrated that the presented meta-approach achieved better results compared to the models individually, demonstrating the viability of the developed approach.


Collections: