Use este identificador para citar ou linkar para este item: https://repositorio.ufba.br/handle/ri/34648
Tipo: Dissertação
Título: Investigando a incidência de code smells em métodos de padrões de projeto
Título(s) alternativo(s): Investigating the incidence of code smells in design pattern methods
Autor(es): Assunção, Ederson dos Santos
Autor(es): Assunção, Ederson dos Santos
Primeiro Orientador: Souza, Rodrigo Rocha Gomes e
metadata.dc.contributor.referee1: Villela, Ricardo Terra Nunes Bueno
metadata.dc.contributor.referee2: Sant'Anna, Cláudio Nogueira
Resumo: Padrões de projeto são soluções reutilizáveis que podem ser aplicadas para resolver problemas específicos em projetos de software. No entanto, tais padrões podem ser mal aplicados e dar origem a code smells. Code smells ou smells são fragmentos no código-fonte que indicam possíveis falhas de design. Existem situações em que os padrões de projeto podem coocorrer com code smells dentro do mesmo módulo de código (e.g., arquivos .java de projetos Java). Esse fenômeno, caso ocorra com frequência, pode resultar em uma oportunidade para avaliar se existe algum desvio ou má prática de aplicação dos padrões que possam ser evitados. Possivelmente, ao refinar a forma como os padrões são adicionados a projetos, o surgimento e existência de smells possam ser mitigados. Este trabalho apresenta dois estudos experimentais com o objetivo de investigar as relações de coocorrência entre padrões de projeto e smells. Ambos demandaram a aplicação de ferramentas de detecção automatizadas de padrões de projeto e smells em sistemas de código-fonte aberto desenvolvidos na linguagem Java. No primeiro estudo busca-se compreender com que frequência os code smells coocorrem com padrões de projeto, bem como determinar as coocorrências mais comuns. Para esse fim, fora identificadas instâncias de smells em métodos de padrões de projeto de 25 sistemas. Também foram manualmente inspecionados fragmentos do código-fonte dos projetos para obter informações sobre a relação entre pares específicos padrão-smell. Entre outras descobertas, este estudo revelou que os métodos que fazem parte do padrão Adapter são mais propensos a conter smells, especialmente o Feature Envy. O segundo estudo é aplicado sobre o histórico de versão proveniente de repositórios de software Open Source. Essa análise consiste em entender a relação entre as duas variáveis (padrões de projeto e code smells) ao longo da evolução do software. Os resultados encontrados sugerem que o padrão Template Method está mais propenso a ser introduzido simultaneamente com smells ao longo do tempo.
Abstract: Design patterns are reusable solutions that can be applied to solve specific problems of software projects. However, developers may not implement patterns adequately on some occasions. This can lead to the appearance of code smells. Code smells (or smells) are fragments of code that can indicate potential design flaws. There are situations in which design patterns and smells occur simultaneously in the same code unit (e.g., classes and methods of Java-based software projects). In case of such phenomenon occurs frequently it can reveal opportunities to investigate if a bad practice in the application of patterns is the cause of the occurrence of smells. As a consequence, refining the way how developers apply design patterns may be a good measure to avoid code smells. In this context, we present two experimental studies that aim at examining cases of co-occurrence of patterns and smells. Both studies required the application of detection tools to evaluate Java-based software projects. With our first study, we seek to comprehend the frequency by which code smells co-occur with design patterns. We also report the most common cases of co-occurrence. To achieve this, we identified instances of smells in methods of design patterns of 25 software systems. We also manually inspected source code fragments to obtain useful information about pairs of patterns and smells. Among other findings, we perceived that methods that take part in the implementation of the Adapter pattern are prone to contain smells, e.g., the Feature Envy smell. Our second study has the purpose of analyzing the evolution of open-source software projects. We wanted to provide insights about the co-occurrences along with the evolution of the projects. As a result, we found out that the Template Method pattern is more inclined to appear concomitantly with smells through time.
Palavras-chave: Padrões de projeto
Code smells
Design de software
Mineração de repositórios de software
Design patterns
Software repository mining
Software design
CNPq: CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
Idioma: por
País: Brasil
Editora / Evento / Instituição: Universidade Federal da Bahia
Sigla da Instituição: UFBA
metadata.dc.publisher.department: Instituto de Matemática
metadata.dc.publisher.program: Programa de Pós-Graduação em Ciência da Computação (PGCOMP) 
Citação: ASSUNÇÃO, Ederson dos Santos. Investigando a incidência de code smells em métodos de padrões de projeto. 2021. 69 f. Dissertação (Mestrado) - Curso de Ciência da Computação, Instituto de Computação, Universidade Federal da Bahia, Salvador, Bahia, 2021.
Tipo de Acesso: Acesso Aberto
URI: https://repositorio.ufba.br/handle/ri/34648
Data do documento: 1-Set-2021
Aparece nas coleções:Dissertação (PGCOMP)

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
PGCOMP-2021-Dissertação_Mestrado-Ederson_dos_Santos_Assunção.pdf2,11 MBAdobe PDFVisualizar/Abrir


Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.