Code smells and refactorings for Elixir

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...

Descripción completa

Detalles Bibliográficos
Autor: Lucas Francisco da Matta Vegi
Tipo de recurso: tesis doctoral
Estado:Versión publicada
Fecha de publicación:2024
País:Brasil
Institución:Universidade Federal de Minas Gerais (UFMG)
Repositorio:Repositório Institucional da UFMG
Idioma:inglés
OAI Identifier:oai:repositorio.ufmg.br:1843/80651
Acceso en línea:http://hdl.handle.net/1843/80651
https://orcid.org/0000-0002-7999-7098
Access Level:acceso abierto
Palabra clave:Code smells
Refactoring
Elixir
Functional programming
Mining software repositories
Grey literature review
Systematic literature review
Computação – Teses
Engenharia de software – Teses
Elixir (Linguagem de programação de computadores - Teses
Refatoração de sofware - Teses
Code smells - Teses
Descripción
Sumario: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.