Assessing the evolution of complex methods: a multi-language study

dc.creatorMateus Fellipe Alves Lopes
dc.date.accessioned2022-01-08T03:29:57Z
dc.date.accessioned2025-09-09T01:30:05Z
dc.date.available2022-01-08T03:29:57Z
dc.date.issued2021-09-03
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.
dc.description.sponsorshipCAPES - Coordenação de Aperfeiçoamento de Pessoal de Nível Superior
dc.identifier.urihttps://hdl.handle.net/1843/39049
dc.languageeng
dc.publisherUniversidade Federal de Minas Gerais
dc.rightsAcesso Aberto
dc.subjectComputação – Teses
dc.subjectSoftware – Codificação –Teses
dc.subjectSoftware – Manuteção – Teses
dc.subjectSoftware – Desenvolvimento – Teses
dc.subject.otherCode Complexity
dc.subject.otherCode Smells
dc.subject.otherSoftware Maintenance
dc.subject.otherSoftware Evolution
dc.subject.otherEmpirical Study
dc.titleAssessing the evolution of complex methods: a multi-language study
dc.title.alternativeAvaliando a evolução de métodos complexos: um estudo multilíngue
dc.typeDissertação de mestrado
local.contributor.advisor1André Cavalcante Hora
local.contributor.advisor1Latteshttp://lattes.cnpq.br/4957418183504876
local.contributor.referee1Marco Túlio de Oliveira Valente
local.contributor.referee1Eduardo Magno Lages Figueiredo
local.creator.Latteshttp://lattes.cnpq.br/9530600119193335
local.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.
local.publisher.countryBrasil
local.publisher.departmentICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
local.publisher.initialsUFMG
local.publisher.programPrograma de Pós-Graduação em Ciência da Computação

Arquivos

Pacote original

Agora exibindo 1 - 1 de 1
Carregando...
Imagem de Miniatura
Nome:
Dissertação-Mateus Fellipe Alves Lopes.pdf
Tamanho:
1.87 MB
Formato:
Adobe Portable Document Format

Licença do pacote

Agora exibindo 1 - 1 de 1
Carregando...
Imagem de Miniatura
Nome:
license.txt
Tamanho:
2.07 KB
Formato:
Plain Text
Descrição: