Please use this identifier to cite or link to this item: http://repositorio.ufc.br/handle/riufc/69632
Type: Dissertação
Title: Studying the prevalence of Atoms of Confusion in long-lived Java libraries
Title in English: Studying the prevalence of Atoms of Confusion in long-lived Java libraries
Authors: Mendes, Wendell Militão Fernandes
Advisor: Carvalho, Windson Viana de
Co-advisor: Rocha, Lincoln Souza
Keywords: Empirical study;Program comprehension;Atoms of Confusion;Long-lived Java projects
Issue Date: 2022
Citation: MENDES, Wendell Militão Fernandes. Studying the prevalence of Atoms of Confusion in long-lived Java libraries. 2022. 69 f. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal do Ceará, Fortaleza, 2022.
Abstract in Brazilian Portuguese: A atividade de compreensão do código-fonte é fundamental na manutenção e evolução de software, impactando em várias tarefas como: a correção de bugs, a reutilização de código e a implementação de novas funcionalidades. Um Átomo da Confusão (AC) é considerado a menor porção de código capaz de causar confusão em programadores, dificultando a correta compreensão de um código-fonte. Estudos anteriores mostraram que esses átomos podem ter um impacto significativo na presença de bugs em programas em C/C++ e aumentar o tempo e o esforço para a compreensão do código em sistemas C/C++ e Java. Para obter mais evidências sobre a difusão de ACs no ecossistema Java, essa pesquisa de mestrado realizou um estudo para analisar a prevalência, a co-ocorrência (a nível de classe), e a evolução de ACs em 27 bibliotecas tradicionais em Java. Para apoiar a investigação, foi desenvolvida uma ferramenta de pesquisa automática de ACs chamada BOHR. Esta ferramenta visa: (i) ajudar na identificação de ACs em sistemas Java; (ii) fornecer relatórios de prevalência desses ACs; e (iii) fornecer um API para o desenvolvimento de novos localizadores personalizados para a captura de novos ACs, bem como melhorar as identificações de átomos já implementadas. A ferramenta BOHR é capaz de detectar 10 dos 14 tipos de ACs apontados por Langhout e Aniche (LANGHOUT; ANICHE, 2021). Além da ferramenta, foi fornecido um conjunto de dados de projetos Java, anotado manualmente, utilizado para validar a precisão da ferramenta. Usando a ferramenta BOHR, foram encontradas 11.404 ocorrências nas bibliotecas estudadas. O Conditional Operator e o Logic as Control Flow foram os átomos mais prevalentes entre os 10 tipos de ACs avaliados. Observou-se que o Conditional Operator e o Logic as Control Flow foram mais suscetíveis a co-ocorrer em uma mesma classe. Por fim, a prevalência de ACs não diminuiu ao longo do tempo nos projetos analisados. Pelo contrário, em 13 bibliotecas, a presença cresceu proporcionalmente mais do que o tamanho da biblioteca em termos de linhas de código. Além disso, em 15 bibliotecas, a fração de classes Java contendo pelo menos um átomo também aumenta ao longo do tempo.
Abstract: Program comprehension is a fundamental activity in software maintenance and evolution, impacting several tasks such as bug fixing, code reuse and implementation of new features. The Atom of Confusion (AC) is considered the smallest piece of code that can confuse programmers, difficulting the correct understanding of the source code under consideration. Previous studies have shown that these atoms can significantly impact the presence of bugs in C/C++ programs and increase the time and effort to code understanding in C/C++ and Java programs. To gather more evidence about the diffusion of ACs in the Java ecosystem, we conduct a study to analyze the prevalence, co-occurrences (at the class level), and evolution of ACs in 27 long-lived Java libraries. To support our investigation, we developed an ACs automatic search tool called BOHR. This tool aims to: (i) aid in the identification of ACs in Java systems; (ii) provide prevalence reports of these ACs; and (iii) provide an API for the development of new custom finders to capture new ACs, as well as improve already implemented ACs identifications. BOHR is able to detect 10 of the 14 types of ACs pointed out by Langhout and Aniche (LANGHOUT; ANICHE, 2021). We also provide a dataset, manually annotated, used to validate BOHR accuracy. Using BOHR, we found 11,404 occurrences in the studied libraries. The Conditional Operator and Logic as Control Flow ACs were the most prevalent among the 10 types of ACs assessed. Our findings show that Conditional Operator and Logic as Control Flow were more likely to co-occur in the same class. Finally, we observed that the prevalence of ACs did not decrease over time. On the contrary, in 13 libraries, the presence grew proportionally more than the size of the library in lines of code. Furthermore, in 15 libraries, the fraction of Java classes containing at least one AC also increases over time.
URI: http://www.repositorio.ufc.br/handle/riufc/69632
Appears in Collections:DCOMP - Dissertações defendidas na UFC

Files in This Item:
File Description SizeFormat 
2022_dis_wmfmendes.pdf2,55 MBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.