Code Smells and refactorings for Elixir

Detalhes bibliográficos
Ano de defesa: 2024
Autor(a) principal: Vegi, Lucas Francisco da Matta
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
Externas/Outras Instituições
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: https://locus.ufv.br/handle/123456789/33721
Resumo: Elixir é uma linguagem de programação funcional moderna, criada em 2012, cuja pop- ularidade 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, oriun- dos 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 correla- cionados, 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. Palavras-chave: code smells; refatoração; Elixir; programação funcional; mineração de repositórios de software; revisão da literatura cinza; revisão sistemática da literatura.
id UFV_4ee69a84382919ec6b0075275263ebf5
oai_identifier_str oai:locus.ufv.br:123456789/33721
network_acronym_str UFV
network_name_str LOCUS Repositório Institucional da UFV
repository_id_str
spelling Code Smells and refactorings for ElixirComputação – TesesEngenharia de software – TesesElixir (Linguagem de programação de computadores) – TesesRefatoração de software – TesesCode smells – TesesCIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWAREElixir é uma linguagem de programação funcional moderna, criada em 2012, cuja pop- ularidade 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, oriun- dos 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 correla- cionados, 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. Palavras-chave: code smells; refatoração; Elixir; programação funcional; mineração de repositórios de software; revisão da literatura cinza; revisão sistemática da literatura.Elixir 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 imple- mented 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, doc- ument, 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 refac- toring 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. Keywords: code smells; refactoring; Elixir; functional programming; mining software repositories; grey literature review; systematic literature review.Universidade Federal de Minas GeraisExternas/Outras InstituiçõesValente, Marco Túlio de Oliveirahttp://lattes.cnpq.br/9490696653295454Gheyi, RohitMaia, Marcelo de AlmeidaHora, André CavalcanteFigueiredo, Eduardo Magno LagesVegi, Lucas Francisco da Matta2025-03-19T17:56:21Z2024-12-10info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisapplication/pdfVEGI, Lucas Francisco da Matta. Code Smells and refactorings for Elixir. 2024. 222 f. Tese (Doutorado em Ciência da Computação) - Universidade Federal de Minas Gerais, Belo Horizonte. 2024.https://locus.ufv.br/handle/123456789/33721enginfo:eu-repo/semantics/openAccessreponame:LOCUS Repositório Institucional da UFVinstname:Universidade Federal de Viçosa (UFV)instacron:UFV2025-03-20T06:00:58Zoai:locus.ufv.br:123456789/33721Repositório InstitucionalPUBhttps://www.locus.ufv.br/oai/requestfabiojreis@ufv.bropendoar:21452025-03-20T06:00:58LOCUS Repositório Institucional da UFV - Universidade Federal de Viçosa (UFV)false
dc.title.none.fl_str_mv Code Smells and refactorings for Elixir
title Code Smells and refactorings for Elixir
spellingShingle Code Smells and refactorings for Elixir
Vegi, Lucas Francisco da Matta
Computação – Teses
Engenharia de software – Teses
Elixir (Linguagem de programação de computadores) – Teses
Refatoração de software – Teses
Code smells – Teses
CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
title_short Code Smells and refactorings for Elixir
title_full Code Smells and refactorings for Elixir
title_fullStr Code Smells and refactorings for Elixir
title_full_unstemmed Code Smells and refactorings for Elixir
title_sort Code Smells and refactorings for Elixir
author Vegi, Lucas Francisco da Matta
author_facet Vegi, Lucas Francisco da Matta
author_role author
dc.contributor.none.fl_str_mv Valente, Marco Túlio de Oliveira
http://lattes.cnpq.br/9490696653295454
Gheyi, Rohit
Maia, Marcelo de Almeida
Hora, André Cavalcante
Figueiredo, Eduardo Magno Lages
dc.contributor.author.fl_str_mv Vegi, Lucas Francisco da Matta
dc.subject.por.fl_str_mv Computação – Teses
Engenharia de software – Teses
Elixir (Linguagem de programação de computadores) – Teses
Refatoração de software – Teses
Code smells – Teses
CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
topic Computação – Teses
Engenharia de software – Teses
Elixir (Linguagem de programação de computadores) – Teses
Refatoração de software – Teses
Code smells – Teses
CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
description Elixir é uma linguagem de programação funcional moderna, criada em 2012, cuja pop- ularidade 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, oriun- dos 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 correla- cionados, 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. Palavras-chave: code smells; refatoração; Elixir; programação funcional; mineração de repositórios de software; revisão da literatura cinza; revisão sistemática da literatura.
publishDate 2024
dc.date.none.fl_str_mv 2024-12-10
2025-03-19T17:56:21Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/doctoralThesis
format doctoralThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv VEGI, Lucas Francisco da Matta. Code Smells and refactorings for Elixir. 2024. 222 f. Tese (Doutorado em Ciência da Computação) - Universidade Federal de Minas Gerais, Belo Horizonte. 2024.
https://locus.ufv.br/handle/123456789/33721
identifier_str_mv VEGI, Lucas Francisco da Matta. Code Smells and refactorings for Elixir. 2024. 222 f. Tese (Doutorado em Ciência da Computação) - Universidade Federal de Minas Gerais, Belo Horizonte. 2024.
url https://locus.ufv.br/handle/123456789/33721
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidade Federal de Minas Gerais
Externas/Outras Instituições
publisher.none.fl_str_mv Universidade Federal de Minas Gerais
Externas/Outras Instituições
dc.source.none.fl_str_mv reponame:LOCUS Repositório Institucional da UFV
instname:Universidade Federal de Viçosa (UFV)
instacron:UFV
instname_str Universidade Federal de Viçosa (UFV)
instacron_str UFV
institution UFV
reponame_str LOCUS Repositório Institucional da UFV
collection LOCUS Repositório Institucional da UFV
repository.name.fl_str_mv LOCUS Repositório Institucional da UFV - Universidade Federal de Viçosa (UFV)
repository.mail.fl_str_mv fabiojreis@ufv.br
_version_ 1855045615294087168