Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/39049
Full metadata record
DC FieldValueLanguage
dc.contributor.advisor1André Cavalcante Horapt_BR
dc.contributor.advisor1Latteshttp://lattes.cnpq.br/4957418183504876pt_BR
dc.contributor.referee1Marco Túlio de Oliveira Valentept_BR
dc.contributor.referee2Eduardo Magno Lages Figueiredopt_BR
dc.creatorMateus Fellipe Alves Lopespt_BR
dc.creator.Latteshttp://lattes.cnpq.br/9530600119193335pt_BR
dc.date.accessioned2022-01-08T03:29:57Z-
dc.date.available2022-01-08T03:29:57Z-
dc.date.issued2021-09-03-
dc.identifier.urihttp://hdl.handle.net/1843/39049-
dc.description.abstractAo longo do tempo, os sistemas de software tendem a aumentar a complexidade e se tornarem mais difíceis de manter. Apesar das desvantagens da complexidade em código serem bem conhecidas, código complexo está presente na maioria dos proje tos de software reais. Portanto, surge uma questão importante: por que, com todos os conselhos que existem contra essa prática, métodos complexos continuam a exis tir? Infelizmente, a complexidade de código é normalmente avaliada para uma única linguagem de programação (geralmente Java), reduzindo a generalidade das descober tas. Assim, avaliar como e por qual razão códigos complexos evoluem em múltiplas linguagens de programação é fundamental para entender as semelhanças e diferenças entre as linguagens. Nesta dissertação, fornecemos um estudo empírico multilinguagem para avaliar a evolução de métodos complexos e um estudo para entender melhor as percepções dos desenvolvedores. Analisamos 1.000 métodos complexos de 50 projetos populares escritos em JavaScript, Python, Java, C++ e C# e realizamos uma pesquisa com mais de 70 desenvolvedores, incluindo desenvolvedores de grandes empresas, como Google, Facebook e Apple. Descobrimos que a linguagem de programação desempenha um papel importante no estudo da complexidade de código e que os métodos complexos não são homogêneos nas operações que realizam. A percepção de complexidade dos desenvolvedores é subjetiva e varia de acordo com a linguagem de programação. Além disso, os desenvolvedores podem evitar deliberadamente a refatoração de código com plexo devido a vários motivos, incluindo estabilidade do código, falta de prioridade e risco de refatoração. Finalmente, com base em nossas descobertas, discutimos ideias e aplicações para pesquisadores e profissionais.pt_BR
dc.description.resumoOver time, software systems tend to increase complexity and become harder to maintain. Despite the drawbacks of code complexity are well-known, complex code is present in most real software projects. Here, an important question arises: why, with all the advice out there against it, do we continue to end up with complex methods? Unfortunately, code complexity is typically assessed for single programming languages (often Java), reducing the generality of findings. Thus, assessing how and why complex code evolves in multiple programming languages is fundamental to better understand the similarities and differences among the languages. In this dissertation, we provide a multi-language empirical study to assess the evolution of complex methods and a survey study to better understand developers’ perceptions. We analyze 1,000 complex methods of 50 popular projects written in JavaScript, Python, Java, C++, and C# and we perform a survey with over 70 developers, including developers from large companies, like Google, Facebook, and Apple. We find that programming language plays an important role in the study of code complexity and that complex methods are not homogeneous in the operations they perform. The developers’ perception of complexity is subjective and varies per programming language. Moreover, developers may deliberately avoid refactoring complex code due to several reasons, including code stability, lack of priority, and refactoring risk. We conclude by discussing insights for researchers and practitioners.pt_BR
dc.description.sponsorshipCAPES - Coordenação de Aperfeiçoamento de Pessoal de Nível Superiorpt_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.subjectCode Complexitypt_BR
dc.subjectCode Smellspt_BR
dc.subjectSoftware Maintenancept_BR
dc.subjectSoftware Evolutionpt_BR
dc.subjectEmpirical Studypt_BR
dc.subject.otherComputação – Tesespt_BR
dc.subject.otherSoftware – Codificação –Tesespt_BR
dc.subject.otherSoftware – Manuteção – Tesespt_BR
dc.subject.otherSoftware – Desenvolvimento – Tesespt_BR
dc.titleAssessing the evolution of complex methods: a multi-language studypt_BR
dc.title.alternativeAvaliando a evolução de métodos complexos: um estudo multilínguept_BR
dc.typeDissertaçãopt_BR
Appears in Collections:Dissertações de Mestrado

Files in This Item:
File Description SizeFormat 
Dissertação-Mateus Fellipe Alves Lopes.pdf1.91 MBAdobe PDFView/Open


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