Understanding software defects with machine learning

Detalhes bibliográficos
Ano de defesa: 2023
Autor(a) principal: Geanderson Esteves dos Santos
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Tese
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: Universidade Federal de Minas Gerais
Brasil
ICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
Programa de Pós-Graduação em Ciência da Computação
UFMG
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: http://hdl.handle.net/1843/52751
https://orcid.org/0000-0002-7571-6578
Resumo: A predição de defeitos representa uma área de interesse tanto no meio acadêmico quanto na indústria. Os defeitos são comuns no desenvolvimento de software e podem gerar muitas dificuldades para gerentes de projetos, usuários, e desenvolvedores. Estudos recentes revelam que cerca de 42% do orçamento de desenvolvimento é gasto corrigindo defeitos. Embora a literatura atual ofereça múltiplas abordagens para prever a probabilidade de defeitos, ainda existe uma falta de compreensão sobre as características que contribuem para os defeitos. Além disso, a maioria destes estudos concentra-se na predição de defeitos a partir de um amplo conjunto de características. Entretanto, o poder discriminador individual das características ainda é desconhecido, já que algumas têm um bom desempenho apenas em projetos específicos. Por essa razão, nesta tese, nosso objetivo é compreender as características que afetam os defeitos em projetos de software. Para isso, aplicamos técnicas de aprendizado de máquina em conjuntos de dados populares. Portanto, realizamos uma investigação exploratória que produziu milhares de modelos a partir de uma coleção diversa de características. Estes modelos são aleatórios porque selecionam as características de todo o conjunto de características. Embora a imensa maioria dos modelos seja ineficaz, conseguimos produzir vários modelos que fornecem previsões precisas. Logo, os modelos distinguem classes propensas a defeitos de classes que não tenham defeitos. Concentramos nossa investigação em modelos que classificam com mais de 85% de precisão uma classe defeituosa. Assim, utilizamos esses resultados para discutir um conjunto de características que contribuem para a explicabilidade do modelo. Como resultado, notamos que os modelos mais eficientes são fáceis de entender, pois dependem de um conjunto pequeno de características. Além disso, comparamos o limite dessas características. Para validar os resultados, realizamos uma pesquisa com 40 desenvolvedores para medir suas percepções sobre os modelos e concluímos que os modelos são bastante explicáveis. Complementarmente, também avaliamos a percepção dos desenvolvedores sobre os atributos de qualidade com desenvolvedores ativos do GitHub, onde obtivemos 54 participantes. Assim, concluímos que as percepções dos desenvolvedores diferem significativamente dos modelos. Finalmente, comparamos as similaridades entre os modelos de predição de defeito com o mau cheiro do código. Ao final, esta tese promove o raciocínio sobre quais características de software influenciam os defeitos desses projetos.