Code smells and refactorings for Elixir

Detalhes bibliográficos
Ano de defesa: 2024
Autor(a) principal: Lucas Francisco da Matta Vegi
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
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://hdl.handle.net/1843/80651
Resumo: Elixir é 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.
id UFMG_94a5f37e42570008a525015a4e08b5fc
oai_identifier_str oai:repositorio.ufmg.br:1843/80651
network_acronym_str UFMG
network_name_str Repositório Institucional da UFMG
repository_id_str
spelling Code smells and refactorings for ElixirCode smells e refatorações para ElixirComputação – TesesEngenharia de software – TesesElixir (Linguagem de programação de computadores - TesesRefatoração de sofware - TesesCode smells - TesesCode smellsRefactoringElixirFunctional programmingMining software repositoriesGrey literature reviewSystematic literature reviewElixir é 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.Outra AgênciaUniversidade Federal de Minas Gerais2025-03-14T14:26:50Z2025-09-09T00:05:55Z2025-03-14T14:26:50Z2024-12-10info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisapplication/pdfhttps://hdl.handle.net/1843/80651enghttp://creativecommons.org/licenses/by-nc-nd/3.0/pt/info:eu-repo/semantics/openAccessLucas Francisco da Matta Vegireponame:Repositório Institucional da UFMGinstname:Universidade Federal de Minas Gerais (UFMG)instacron:UFMG2025-09-09T18:18:11Zoai:repositorio.ufmg.br:1843/80651Repositório InstitucionalPUBhttps://repositorio.ufmg.br/oairepositorio@ufmg.bropendoar:2025-09-09T18:18:11Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)false
dc.title.none.fl_str_mv Code smells and refactorings for Elixir
Code smells e refatorações para Elixir
title Code smells and refactorings for Elixir
spellingShingle Code smells and refactorings for Elixir
Lucas Francisco da Matta Vegi
Computação – Teses
Engenharia de software – Teses
Elixir (Linguagem de programação de computadores - Teses
Refatoração de sofware - Teses
Code smells - Teses
Code smells
Refactoring
Elixir
Functional programming
Mining software repositories
Grey literature review
Systematic literature review
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 Lucas Francisco da Matta Vegi
author_facet Lucas Francisco da Matta Vegi
author_role author
dc.contributor.author.fl_str_mv Lucas Francisco da Matta Vegi
dc.subject.por.fl_str_mv Computação – Teses
Engenharia de software – Teses
Elixir (Linguagem de programação de computadores - Teses
Refatoração de sofware - Teses
Code smells - Teses
Code smells
Refactoring
Elixir
Functional programming
Mining software repositories
Grey literature review
Systematic literature review
topic Computação – Teses
Engenharia de software – Teses
Elixir (Linguagem de programação de computadores - Teses
Refatoração de sofware - Teses
Code smells - Teses
Code smells
Refactoring
Elixir
Functional programming
Mining software repositories
Grey literature review
Systematic literature review
description Elixir é 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.
publishDate 2024
dc.date.none.fl_str_mv 2024-12-10
2025-03-14T14:26:50Z
2025-09-09T00:05:55Z
2025-03-14T14:26:50Z
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 https://hdl.handle.net/1843/80651
url https://hdl.handle.net/1843/80651
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv http://creativecommons.org/licenses/by-nc-nd/3.0/pt/
info:eu-repo/semantics/openAccess
rights_invalid_str_mv http://creativecommons.org/licenses/by-nc-nd/3.0/pt/
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidade Federal de Minas Gerais
publisher.none.fl_str_mv Universidade Federal de Minas Gerais
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFMG
instname:Universidade Federal de Minas Gerais (UFMG)
instacron:UFMG
instname_str Universidade Federal de Minas Gerais (UFMG)
instacron_str UFMG
institution UFMG
reponame_str Repositório Institucional da UFMG
collection Repositório Institucional da UFMG
repository.name.fl_str_mv Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)
repository.mail.fl_str_mv repositorio@ufmg.br
_version_ 1856413897965174784