Um estudo sobre a associação entre abordagens de localização de bugs e ações/padrões de reparo dos bugs

Detalhes bibliográficos
Ano de defesa: 2024
Autor(a) principal: Dias, Julia Manfrin
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal de Uberlândia
Brasil
Programa de Pós-graduação em Ciência da Computação
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: https://repositorio.ufu.br/handle/123456789/43981
http://doi.org/10.14393/ufu.di.2024.641
Resumo: In a software development process, issues can arise that may hinder its execution due to cost and time concerns. A common problem is the occurrence of errors, which may require considerable effort to repair. Software engineering proposes approaches to minimize this problem. The study topic of this work involves the bug fixing process, focusing especially on a preliminary task, named bug localization, which consists in locating where the error is in the code. To assist the developer’s task in bug localization, various automated approaches have been proposed. This study aims to analyze the performance, in terms of accuracy, of different types of locators, based on the characteristics of the bugs. These characteristics refer to the actions and repair patterns that are conducted for fixing. Examples of repair actions include additions, removals, and modifications of lines in the source code. Meanwhile, repair patterns are high-level abstractions of recurrences of action structures in repaired code. The objective of the work is to understand if there is a relationship between the different types of actions/repair patterns and the accuracy of the different types of locators. The study compared different bug localization techniques, such as DStar, Ochiai, Metallaxis, Muse, Predicate Switching, Slicing, and Stack Trace. It was observed that coverage-based and mutation-based techniques are more effective for bugs involving line removal or modification, while line addition presented more difficulty. Additionally, bugs in expressions were more easily located, whereas those related to types and method declarations were harder to identify. The analysis of repair patterns showed that constant changes and API fixes are more easily detected, while missing null checks and code movement were the most challenging.