Code smells and refactorings for Elixir

dc.creatorLucas Francisco da Matta Vegi
dc.date.accessioned2025-03-14T14:26:50Z
dc.date.accessioned2025-09-09T00:05:55Z
dc.date.available2025-03-14T14:26:50Z
dc.date.issued2024-12-10
dc.description.abstractElixir é uma linguagem de programação funcional moderna, criada em 2012, cuja popularidade vem crescendo na indústria. No entanto, até onde sabemos, existem poucos estudos na literatura que abordem a qualidade interna de sistemas implementados com essa linguagem. Particularmente, nenhum estudo até o momento investigou code smells ou refatorações específicos para Elixir. Portanto, para aproveitar essas oportunidades de pesquisa, nos inspiramos no conhecido livro de Fowler sobre code smells e refatorações para prospectar, estudar, documentar e avaliar code smells e estratégias de refatoração adaptadas especificamente a Elixir. Em um primeiro estudo, utilizamos uma abordagem metodológica mista para catalogar 35 code smells, dos quais 23 são novos e específicos para Elixir, enquanto 12 são code smells tradicionais catalogados por Fowler e Beck, que também afetam códigos implementados nessa linguagem. Esse catálogo foi validado por meio de questionários respondidos por 181 desenvolvedores experientes em Elixir, oriundos de 37 países e de todos os continentes. Em um segundo estudo, também adotamos uma abordagem metodológica mista, que incluiu uma revisão sistemática da literatura, para catalogar 82 estratégias de refatoração compatíveis com Elixir, sendo 14 delas inéditas e específicas para essa linguagem. Todas essas refatorações foram validadas por meio de novos questionários respondidos por 151 desenvolvedores de 42 países diferentes. Para documentar os code smells e as refatorações catalogadas, além de descrições textuais estruturadas, produzimos exemplos de código que os representam. Por fim, conduzimos um terceiro estudo, no qual os code smells e as refatorações para Elixir foram correlacionados, permitindo assim a definição de diretrizes práticas sobre como cada code smell pode ser removido de forma disciplinada com a ajuda de estratégias de refatoração. Nesse último estudo, também catalogamos cinco novas refatorações compostas para Elixir. De maneira geral, os resultados desta tese têm implicações práticas relacionadas à prevenção e remoção de code smells em Elixir, bem como à priorização do entendimento e uso das estratégias de refatoração para essa linguagem.
dc.description.sponsorshipOutra Agência
dc.identifier.urihttps://hdl.handle.net/1843/80651
dc.languageeng
dc.publisherUniversidade Federal de Minas Gerais
dc.rightsAcesso Aberto
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/3.0/pt/
dc.subjectComputação – Teses
dc.subjectEngenharia de software – Teses
dc.subjectElixir (Linguagem de programação de computadores - Teses
dc.subjectRefatoração de sofware - Teses
dc.subjectCode smells - Teses
dc.subject.otherCode smells
dc.subject.otherRefactoring
dc.subject.otherElixir
dc.subject.otherFunctional programming
dc.subject.otherMining software repositories
dc.subject.otherGrey literature review
dc.subject.otherSystematic literature review
dc.titleCode smells and refactorings for Elixir
dc.title.alternativeCode smells e refatorações para Elixir
dc.typeTese de doutorado
local.contributor.advisor1Marco Tulio de Oliveira Valente
local.contributor.advisor1Latteshttp://lattes.cnpq.br/2147157840592913
local.contributor.referee1Rohit Gheyi
local.contributor.referee1Marcelo de Almeida Maia
local.contributor.referee1André Cavalcante Hora
local.contributor.referee1Eduardo Magno Lages Figueiredo
local.creator.Latteshttp://lattes.cnpq.br/9490696653295454
local.description.resumoElixir is a modern functional programming language, created in 2012, whose popularity has been growing in the industry. Despite this fact, and to the best of our knowledge, there are few studies in the literature addressing the internal quality of systems implemented with this language. In particular, no study to date has investigated specific code smells or refactorings for Elixir. Therefore, to fill these research gaps, we take inspiration from Fowler's well-known book on code smells and refactorings to prospect, study, document, and evaluate code smells and refactoring strategies specifically tailored to Elixir. In the first study, we employed a mixed-method approach to catalog 35 code smells, 23 of which are new and specific to Elixir, while 12 are traditional code smells cataloged by Fowler and Beck that also affect code implemented in this language. We validated this catalog by surveying 181 experienced Elixir developers from 37 countries across all continents. In a second study, we also adopted a mixed-method approach, including a systematic literature review, to catalog 82 refactoring strategies compatible with Elixir, 14 of which are novel and specific to this language. All these refactorings were validated through another survey answered by 151 developers from 42 countries. To document the cataloged code smells and refactorings, in addition to structured textual descriptions, we produced code examples representing them. Finally, we conducted a third study where the code smells and refactorings for Elixir were correlated, allowing the definition of practical guidelines on how each code smell can be removed systematically with the help of refactoring strategies. In this final study, we also cataloged five new composite refactorings for Elixir. Overall, the results of this thesis have practical implications for the prevention and removal of code smells in Elixir, as well as the prioritization of understanding and using refactoring strategies for this language.
local.identifier.orcidhttps://orcid.org/0000-0002-7999-7098
local.publisher.countryBrasil
local.publisher.departmentICEX - INSTITUTO DE CIÊNCIAS EXATAS
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:
Lucas_Vegi_PhD_Thesis - Code smells and Refactorings for Elixir - v2.pdf
Tamanho:
7.3 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: