Use este identificador para citar ou linkar para este item:
http://repositorio.ufc.br/handle/riufc/80670| Tipo: | TCC |
| Título: | Investigando a qualidade das refatorações de múltiplas LLMs em código Java |
| Autor(es): | Freitas, Javel Queiroz |
| Orientador: | Bezerra, Carla Ilane Moreira |
| Coorientador: | Souza Filho, José Cezar Junior de |
| Palavras-chave em português: | refatoração;code smells;large language models;qualidade de software |
| CNPq: | CNPQ: CIÊNCIAS EXATAS E DA TERRA |
| Data do documento: | 2025 |
| Citação: | FREITAS, Javel Queiroz. Investigando a qualidade das refatorações de múltiplas LLMs em código Java. 2025. 122 f. Trabalho de Conclusão de Curso (Graduação em Engenharia de Software) - Campus de Quixadá, Universidade Federal do Ceará, Quixadá, 2025. |
| Resumo: | Code smells afetam negativamente a qualidade do código, possibilitando a degradação do código e geração de débito técnico. Dessa forma, quando identificados, os code smells devem ser removidos por meio de diversas técnicas de refatoração. Large Language Models (LLM) são grandes modelos de linguagem computacionais com capacidade de entender e gerar linguagem humana. Eles são treinados em vasta quantidade de dados para realizar uma série de tarefas posteriores. Estudos da literatura tem investigado as LLMs na geração de código e também na refatoração de code smells. O presente trabalho investiga empiricamente a qualidade das refatorações de code smells utilizando três LLMs (ChatGPT, Github Copilot, Google Gemini) e coletando a percepção de desenvolvedores. Para isso, desenvolvemos um projeto Java baseado na adaptação de code smells (Data Class (DC), Feature Envy (FE), Long Method (LM) e Long Parameter List (LPL)) de projetos open source e agrupamos 48 desenvolvedores em equipes, onde cada equipe refatorou o projeto com uma das LLMs investigadas pelo trabalho. Analisamos a qualidade das refatorações pelas médias das métricas dos atributos de qualidade (Coesão, Acoplamento, Complexidade e Herança) extraídas dos projetos refatorados e comparamos o desempenho entre as LLMs. Coletamos a percepção dos desenvolvedores a partir de questionários e analisamos qualitativamente utilizando Grounded Theory. Os resultados mostram que após as refatorações por LLMs houve melhora em todos os atributos no acoplamento, complexidade (Exceção: DC), e herança (Exceção: LM). No entanto, a coesão piorou em todos os code smells, exceto em FE. A refatoração do LPL teve maior melhora (Herança: 4,93%), mas também piora (Coesão: -6,07%). As refatorações do FE foram as únicas com melhora em todos os atributos. Em comparação com as outras LLMs o ChatGPT teve vantagem na melhora do acoplamento (para FE e LM), o Copilot para coesão (DC e FE) e herança (FE e LPL), e o Gemini para a complexidade (DC e FE). Os participantes relataram sobre refatorações paralelas e inserções de novas instâncias de code smells, com destaque para o LPL (8,13 inserção por remoção) e FE (0,69 inserção por remoção). Na percepção dos participantes os LLMs auxiliam: (i) na produtividade; (ii) refatoração de código; (iii) análise de código; e, (iv) como ferramenta de apoio. No entanto, ainda há deficiências no processo de refatoração com LLMs, como: (i) necessidade de direcionamento específico; (ii) entender e manter contexto do que foi pedido; (iii) evitar gerar código com pouca qualidade; e, (iv) evitar depender das LLMs. |
| Abstract: | Code smells negatively affect code quality, facilitating code degradation and technical debt generation. Therefore, when identified, code smells should be removed through various refactoring techniques. Large Language Models (LLM) are large computational language models with the ability to understand and generate human language. They are trained on vast amounts of data to perform a series of downstream tasks. Studies in the literature have investigated LLMs in code generation and also in refactoring code smells. The present study empirically investigates the quality of code smells refactorings using three LLMs (ChatGPT, Github Copilot, Google Gemini) and collecting developers’ perceptions. Thus, we developed a Java project based on the adaptation of code smells (Data Class (DC), Feature Envy (FE), Long Method (LM) and LPL) from open-source projects and assigned 48 developers to teams, each of which refactored the project using one of the LLMs investigated in this study. We analyzed the quality of the refactorings based on the average values of the quality attributes metrics (Cohesion, Coupling, Complexity, and Inheritance) extracted from the refactored projects and compared the performance of the LLMs. We collected developers’ perceptions through questionnaires and conducted a qualitative analysis using Grounded Theory. The results indicate that, after refactorings by LLMs, all attributes improved in terms of coupling, complexity (Exception: DC), and inheritance (Exception: LM). However, cohesion worsened in all code smells except in FE. The refactoring of LPL showed the greatest improvement (Inheritance: 4.93%), but also the greatest decline (Cohesion: -6.07%). The refactorings of FE were the only ones that improved across all attributes. In comparison with the other LLMs, ChatGPT showed an advantage in improving coupling (for FE and LM), Copilot in cohesion (DC and FE) and inheritance (FE and LPL), and Gemini in complexity (DC and FE). The participants reported parallel refactorings and the insertion of new instances of code smells with emphasis on LPL (8.13 insertions per removal) and FE (0.69 insertions per removal). In the participants’ perception, the LLMs assist: (i) in productivity; (ii) code refactoring; (iii) code analysis; and, (iv) as a support tool. However, there are still deficiencies in the refactoring process with LLMs, such as: (i) the need for specific guidance; (ii) understanding and maintaining the context of what was requested; (iii) preventing the generating low-quality code; and, (iv) avoiding dependence on the LLMs. |
| URI: | http://repositorio.ufc.br/handle/riufc/80670 |
| Currículo Lattes do Orientador: | http://lattes.cnpq.br/4277471687235814 |
| ORCID do Coorientador: | https://orcid.org/0000-0002-1084-478X |
| Currículo Lattes do Coorientador: | http://lattes.cnpq.br/8371277471154278 |
| Tipo de Acesso: | Acesso Aberto |
| Aparece nas coleções: | ENGENHARIA DE SOFTWARE - QUIXADÁ - TCC |
Arquivos associados a este item:
| Arquivo | Descrição | Tamanho | Formato | |
|---|---|---|---|---|
| 2025_tcc_jqfreitas.pdf | 3,96 MB | Adobe PDF | Visualizar/Abrir |
Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.