[TESE DE DOUTORADO] Análise de Performance na Localização de Bugs apoiada pela Dissecção de Conjuntos de Dados

Nome do Aluno: 
Local: 
Por videoconferência
Data de Defesa: 
24/01/2022 - 08:30
Banca examinadora: 
Prof. Dr. Marcelo de Almeida Maia - FACOM/UFU (Orientador)
Prof. Dr. Fabiano Azevedo Dorça - FACOM/UFU
Prof. Dr. Flávio de Oliveira Silva - FACOM/UFU
Prof. Dr. Eduardo Magno Lages Figueiredo - DCC/UFMG
Prof. Dr. Uirá Kulesza - DIMAp/UFRN

Encontrar e corrigir bugs continua sendo um desafio. Tais tarefas exigem dos desenvolvedores esforço e experiência equivalentes as necessárias para o desenvolvimento de novas funcionalidades. Nas últimas décadas, a comunidade de pesquisa esteve ativa na produção de abordagens para apoiar a depuração de software. A tarefa de Localização de Bugs (LB) é basilar, independente da abordagem utilizada para reparo de programas (automática ou manual). Por sua vez, as abordagens automatizadas de localização são críticas para tornar o processo mais eficaz e eficiente. Existem muitas abordagens para a LB automática e todas elas têm um alvo comum: melhorar a precisão do ranqueamento de componentes de software suspeitos de conter um bug. Uma questão recorrente é a falta de clareza sobre as razões do sucesso ou fracasso das abordagens sobre o conjunto de dados de bugs avaliado, uma vez que a maioria das abordagens não considera a natureza e as características intrínsecas dos bugs. A discussão ainda é muito focada em ganhos de desempenho nos comparativos com o estado da arte. Este trabalho contribui para as atividades de reparo de software, com foco primário no suporte automatizado à Localização Bugs. Para isso, investigamos as características associadas aos bugs comumente utililizados na avaliação de estratégias de localização (o que se estende também ao reparo automático). Analisamos as relações entre essas características dos bugs e como influenciam a performance das estratégias de localização. Finalmente, propusemos alternativas para melhoria dos rankings de componentes suspeitos e a construção de um ambiente para experimentação e reprodução de estratégias para a localização de bugs. Partimos do trabalho em (YE; BUNESCU; LIU, 2016) que é uma abordagem estática de localização, baseada em algoritmos de Learning to Rank (LtR) e tendo relatórios de bugs como entrada do processo. Inicialmente, analisamos um conhecido conjunto de dados de bugs, Defects4J (JUST et al., 2014), de onde extraímos várias características dos bugs (SOBREIRA et al., 2018). Posteriormente, analisamos tais características no conjunto de dados usado nos trabalhos de Ye et al., o qual referenciamos como LRdataset. Então, levantamos várias estratégias e alternativas para a melhoria dos rankings de arquivos suspeitos gerados por abordagens de LB. Por exemplo, o uso de novas características (e.g., Entropia do Código), o ajuste de hiper-parâmetros e o balanceamento de dados para treinamento em abordagens de aprendizado de máquina e, finalmente, a amostragem de bugs guiada pela análise de códigos de reparo. Resultados obtidos até aqui mostram que as estratégias de pré-processamento de relatórios de bugs e dos conjuntos de dados, além do ajuste de diferentes algoritmos de LtR, podem produzir ganhos mesmo em abordagens prévias. Ainda, o uso de novas características (ex.: Entropia do Código) pode evitar problemas como overfitting em estratégias de localização baseadas em aprendizado de máquina. Finalmente, as características dos bugs amostrados para avaliação podem influenciar nos resultados de rankings de arquivos suspeitos de bug, por exemplo, dependendo do tipo de padrões e ações de reparo associadas.