Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/52751
Full metadata record
DC FieldValueLanguage
dc.contributor.advisor1Eduardo Magno Lages Figueiredopt_BR
dc.contributor.advisor1Latteshttp://lattes.cnpq.br/1265706528850746pt_BR
dc.contributor.advisor-co1Adriano Alonso Velosopt_BR
dc.contributor.referee1Ivan do Carmo Machadopt_BR
dc.contributor.referee2Valter Vieira de Camargopt_BR
dc.contributor.referee3Marco Túlio de Oliveira Valentept_BR
dc.contributor.referee4Wagner Meira Júniorpt_BR
dc.creatorGeanderson Esteves dos Santospt_BR
dc.creator.Latteshttp://lattes.cnpq.br/5959215636422122pt_BR
dc.date.accessioned2023-05-03T15:12:42Z-
dc.date.available2023-05-03T15:12:42Z-
dc.date.issued2023-02-13-
dc.identifier.urihttp://hdl.handle.net/1843/52751-
dc.description.abstractA 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.pt_BR
dc.description.resumoSoftware defect prediction represents an area of interest in both academia and industry. In fact, defects are prevalent in software development and might generate numerous difficulties for project managers, users, stakeholders, and developers. Recent studies reveal that approximately 42% of the software development budget goes to fixing defects. Although the current literature offers multiple alternative approaches to predict the likelihood of defects, there is a lack of understanding about the features that contribute to the defects of a software project. Furthermore, most of the literature concentrates on predicting defects from a broad set of features. However, the individual discriminating power of software features is still unknown as some perform well only with specific projects. For this reason, in this thesis, we aim at understanding the features that impact the defectiveness of software projects. To do so, we applied machine learning techniques to popular datasets. Hence, we convey an exploratory investigation that produced thousands of models from a diverse collection of software features. These models are random because they promptly select the features from the entire pool of software features. Even though the immense majority of models are ineffective, we could produce several models that yield accurate predictions. Thus, the models distinguish defect-prone classes from clean ones. We focus our investigation on models that rank a randomly chosen defective software class higher than a randomly selected non-defective class with over 85% accuracy. More importantly, we employ these results to discuss a set of features contributing to the understandability of model decisions. As a result, we notice that the best-performing models are simple to understand as they rely on a small set of features. Therefore, we present which features contribute to the defects of twelve projects. Further, we also compare the threshold of these features. To validate the results, we survey 40 developers to measure their perceptions of the models and conclude that the models are fairly understandable. Complementary, we also evaluate developers’ perception of the quality attributes with active GitHub developers, where 54 participated in the investigation. Then, we conclude that developers’ perceptions differ significantly from the machine learning models in terms of quality attributes. Finally, we compare the redundancies and similarities between defect models with code smell as they share several features. By the end, this thesis promotes reasoning on which software features influence the defects of these projects.pt_BR
dc.languageengpt_BR
dc.publisherUniversidade Federal de Minas Geraispt_BR
dc.publisher.countryBrasilpt_BR
dc.publisher.departmentICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃOpt_BR
dc.publisher.programPrograma de Pós-Graduação em Ciência da Computaçãopt_BR
dc.publisher.initialsUFMGpt_BR
dc.rightsAcesso Abertopt_BR
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/3.0/pt/*
dc.subjectDefect Predictionpt_BR
dc.subjectExplainable Machine Learningpt_BR
dc.subjectSource Code Featurespt_BR
dc.subject.otherComputação – Tesespt_BR
dc.subject.otherAprendizado de máquina – Tesespt_BR
dc.subject.otherPredição de falhas – Tesespt_BR
dc.subject.otherCódigo fonte ( Computação) – Tesespt_BR
dc.titleUnderstanding software defects with machine learningpt_BR
dc.title.alternativeEntendendo defeitos de software com aprendizado de máquinapt_BR
dc.typeTesept_BR
dc.identifier.orcidhttps://orcid.org/0000-0002-7571-6578pt_BR
Appears in Collections:Teses de Doutorado

Files in This Item:
File Description SizeFormat 
thesis.pdf2.1 MBAdobe PDFView/Open


This item is licensed under a Creative Commons License Creative Commons