Por favor, use este identificador para citar o enlazar este ítem:
http://repositorio.ufc.br/handle/riufc/78984
Tipo: | Dissertação |
Título : | Measuring trivial and non-trivial refactorings: a predictive analysis and index proposal |
Autor : | Pinheiro, Darwin de Oliveira |
Tutor: | Bezerra, Carla Ilane Moreira |
Co-asesor: | Uchôa, Anderson Gonçalves |
Palabras clave en inglés: | refactoring;software maintenance;software quality;supervised learning;machine learning |
Áreas de Conocimiento - CNPq: | CNPQ: CIÊNCIAS EXATAS E DA TERRA: CIÊNCIA DA COMPUTAÇÃO |
Fecha de publicación : | 2024 |
Citación : | PINHEIRO, Darwin de Oliveira. Measuring trivial and non-trivial refactorings: a predictive analysis and index proposal. 2024. 204 f. Dissertação (mestrado) – Universidade Federal do Ceará, Campus de Quixadá, Programa de Pós-Graduação em Computação, Quixadá, 2024. |
Resumen en portugués brasileño: | A refatoração altera a estrutura interna do código sem modificar seu comportamento externo, melhorando a qualidade, manutenibilidade e legibilidade, além de reduzir a dívida técnica. Estudos indicam a necessidade de aprimorar a detecção e correção de refatorações, recomendando o uso de aprendizado de máquina para investigar motivações, dificuldades e melhorias no software. Esta dissertação tem como objetivo identificar a relação entre refatorações triviais e não triviais, além de propor uma métrica que avalia a trivialidade da implementação de refatorações. Inicialmente, utilizamos modelos classificadores de aprendizado supervisionado para examinar o impacto das refatorações triviais na predição das não triviais. Analisamos três conjuntos de dados, com 1.291 projetos de código aberto e aproximadamente 1,9M de operações de refatoração, utilizando 45 métricas de código. Foram utilizados os 5 modelos de classificação, em diferentes configurações do dataset. Em segundo lugar, propomos também uma métrica baseada em ML para avaliar a trivialidade da refatoração, considerando complexidade, velocidade e risco. O estudo examinou como a priorização de 58 featuers, apontadas por 15 desenvolvedores, afetou a eficácia de sete modelos de regressão. Analisou a eficácia dos de 7 modelos de regressão e ensemble. Além disso, verificou-se o alinhamento entre as percepções de 16 desenvolvedores experientes e os resultados dos modelos. Nossos resultados são promissores: (i) Algoritmos como Random Forest, Decision Tree e Neural Network tiveram melhor desempenho ao usar métricas de código para identificar oportunidades de refatorações; (ii) Separar refatorações triviais e não triviais melhora a eficiência dos modelos, mesmo em diferentes conjuntos de dados; (iii) Usar todas as features disponíveis supera a priorização feita pelos desenvolvedores nos modelos preditivos; (iv) Modelos ensemble, como Random Forest e Gradient Boosting, superam os modelos lineares, independentemente da priorização de features; e (v) Há forte alinhamento entre as percepções dos especialistas e os resultados dos modelos. Em resumo, esta dissertação contribuiu com o processo de refatoração, um apoio importante para os desenvolvedores, pois pode influenciar a decisão de aplicar ou não uma refatoração. Além de destacar insights, desafios e oportunidades para trabalhos futuros. |
Abstract: | Refactoring changes the internal structure of the code without changing its external behavior, improving quality, maintainability, and readability, in addition to reducing technical debt. Studies indicate the need to improve the detection and correction of refactorings, recommending the use of machine learning to investigate motivations, difficulties, and improvements in software. This Master’s dissertation aims to identify the relationship between trivial and non-trivial refactorings, in addition to proposing a metric that evaluates the triviality of implementing refactorings. Initially, we use supervised learning classifier models to examine the impact of trivial refactorings on the prediction of non-trivial ones. We analyzed three datasets, with 1,291 open source projects and approximately 1.9M refactoring operations, using 45 code metrics. The 5 classification models were used, in different dataset configurations. Second, we also propose an ML-based metric to evaluate the triviality of refactoring, considering complexity, speed, and risk. The study examined how the prioritization of 58 features, identified by 15 developers, affected the effectiveness of seven regression models. The effectiveness of 7 regression and ensemble models was analyzed. In addition, the alignment between the perceptions of 16 experienced developers and the results of the models was verified. Our results are promising: (i) Algorithms such as Random Forest, Decision Tree and Neural Network performed better when using code metrics to identify opportunities for refactorings; (ii) Separating trivial and non-trivial refactorings improves the efficiency of the models, even on different datasets; (iii) Using all available features outperforms the prioritization made by developers in predictive models; (iv) Ensemble models, such as Random Forest and Gradient Boosting, outperform linear models, regardless of feature prioritization; and (v) There is strong alignment between the perceptions of experts and the results of the models. In summary, this Master’s dissertation contributed to the refactoring process, an important support for developers, as it can influence the decision of whether or not to apply a refactoring. In addition, it highlights insights, challenges and opportunities for future work. |
URI : | http://repositorio.ufc.br/handle/riufc/78984 |
Lattes del tutor: | http://lattes.cnpq.br/4277471687235814 |
ORCID del co-asesor: | https://orcid.org/0000-0002-6847-5569 |
Lattes del co-asesor: | http://lattes.cnpq.br/3740664626762609 |
Derechos de acceso: | Acesso Aberto |
Aparece en las colecciones: | PCOMP - Dissertações defendidas na UFC |
Ficheros en este ítem:
Fichero | Descripción | Tamaño | Formato | |
---|---|---|---|---|
2024_dis_dopinheiro.pdf | 3,04 MB | Adobe PDF | Visualizar/Abrir |
Los ítems de DSpace están protegidos por copyright, con todos los derechos reservados, a menos que se indique lo contrario.