Use este identificador para citar ou linkar para este item: http://repositorio.ufc.br/handle/riufc/76456
Tipo: Dissertação
Título: How they relate and leave: understanding atoms of confusion in open-source java projects
Autor(es): Pinheiro Neto, Francisco Oton
Orientador: Carvalho, Windson Viana de
Coorientador: Rocha, Lincoln Souza
Palavras-chave em português: Compreensão de programa;Átomos de confusão;Estudo empírico;Mineração de dados
Palavras-chave em inglês: Program comprehension;Atoms of confusion;Empirical study;Data mining
CNPq: CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
Data do documento: 2024
Citação: PINHEIRO NETO, Francisco Oton. How they relate and leave: understanding atoms of confusion in open-source java projects. 2024. 75 f. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal do Ceará, Fortaleza, 2024.
Resumo: A compreensão de programa é essencial para aprimorar o entendimento e evitar erros no ciclo de vida do desenvolvimento de software. A confusão de código ocorre quando um desenvolvedor e o computador chegam a interpretações diferentes sobre o comportamento de um mesmo trecho de código. Tais trechos de código podem ser representados como pequenos e isolados padrões de código chamados Átomos de Confusão (ACs). Neste estudo, investigamos empiricamente os efeitos dos ACs no ciclo de vida de desenvolvimento de 21 projetos Java de código aberto. Construímos um dataset que relaciona mais de 8.000 commits, 4.000 issues e 7.000 ACs dos projetos em questão. Nossos resultados demonstraram uma correlação positiva entre o número de ACs e o número de bugs e melhorias relatados. Também investigamos mudanças em commits, buscando uma compreensão mais aprofundada do contexto no qual ACs são removidos. Como cada commit está vinculado a pelo menos uma issue relatada (por exemplo, bug e melhoria), conseguimos comparar a taxa de remoção de ACs em relação a cada tipo de commit e utilizá-la como um indicador para determinar se os ACs são provavelmente a causa por trás de uma issue reportada. Encontramos uma taxa mais elevada de remoção de ACs em commits de correção de bugs e melhorias do que em outros tipos de commits (tarefa, sub-tarefa, nova funcionalidade, desejo e teste) em 14 dos 19 projetos estudados, que tiveram ACs removidos em commits. Finalmente, para apoiar nossos resultados quantitativos, conduzimos uma análise qualitativa para melhor entender com que frequência átomos de confusão contribuíram para a ocorrência de bugs ou melhorias. Analisamos ACs removidos nesses tipos de commits com até dez linhas removidas, analisando o código-fonte, mensagens de cada commit envolvido, além do título, descrição e comentários das issues relacionadas no Jira. Em um universo de 8.641 commits de 21 projetos analisados, 391 removeram ACs. Dentre eles, 53 atenderam à condição para nossa análise qualitativa. Em 7 desses commits, 9 ACs removidos provavelmente contribuíram diretamente para a ocorrência de um bug ou melhoria. Até onde sabemos, nossa pesquisa é a primeira a investigar a conexão entre Átomos de Confusão e a ocorrência de bugs ou gatilhos para melhorias em projetos Java.
Abstract: Software comprehension is essential to improve understanding and avoid mistakes in the software development lifecycle. Code confusion occurs when a developer and the computer reach different interpretations about the behavior of the same piece of code. Such pieces of code can be represented as small and isolated code patterns called Atoms of Confusion (ACs). In this study, we empirically investigated the effects of ACs in the software development lifecycle of 21 open-source Java projects. We built a dataset linking more than 8,000 commits, 4,000 reported issues, and 7,000 ACs from the subject projects. Our findings showed a positive correlation between the number of ACs and the number of reported bugs and improvements. We also investigated changes in commits, looking forward to gathering a better understanding of in what context ACs are removed. As each commit is linked to at least one reported issue (e.g., bug and improvement), we were able to compare the ratio of ACs removal regarding each kind of commit and use it as a proxy to indicate whether ACs are likely to be the cause behind a reported issue. We found a higher ratio of removed ACs in bug-fix and improvement commits than in the other kinds of commits (task, sub-task, new feature, wish, and test) for 14 of the 19 studied projects, which had ACs removed in commits. Finally, to support our quantitative results, we conducted a qualitative analysis to better understand how often atoms of confusion contributed to the occurrence of a bug or improvement. We inspected ACs removed in these types of commits with up to ten lines removed, analyzing the source code, messages of each involved commit, and the title, description, and comments of related Jira issues. Out of a universe of 8,641 commits from 21 analyzed projects, 391 removed ACs. Among them, 53 met the condition for our qualitative analysis. In 7 of these commits, 9 removed ACs were likely to contribute directly to the occurrence of a bug or improvement. To the best of our knowledge, our research is the first to investigate the connection between Atoms of Confusion and the source of bugs or the cause of improvements in Java projects.
URI: http://repositorio.ufc.br/handle/riufc/76456
Currículo Lattes do(s) Autor(es): http://lattes.cnpq.br/7194447413437813
Currículo Lattes do Orientador: http://lattes.cnpq.br/1744732999336375
Currículo Lattes do Coorientador: http://lattes.cnpq.br/0656977742590515
Tipo de Acesso: Acesso Aberto
Aparece nas coleções:DCOMP - Dissertações defendidas na UFC

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
2024_dis_fopinheironeto.pdf1,47 MBAdobe PDFVisualizar/Abrir


Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.