Investigando a incidência de code smells em métodos de padrões de projeto

Detalhes bibliográficos
Autor(a) principal: Assunção, Ederson dos Santos
Data de Publicação: 2021
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Institucional da UFBA
Texto Completo: https://repositorio.ufba.br/handle/ri/34648
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.
id UFBA-2_c3886c258b4a4cacb78ad1d02287e96e
oai_identifier_str oai:repositorio.ufba.br:ri/34648
network_acronym_str UFBA-2
network_name_str Repositório Institucional da UFBA
repository_id_str 1932
spelling Assunção, Ederson dos SantosAssunção, Ederson dos SantosSouza, Rodrigo Rocha Gomes eSouza, Rodrigo Rocha Gomes e0000-0001-8186-0069http://lattes.cnpq.br/7697794806460975Souza, Rodrigo Rocha Gomes eVillela, Ricardo Terra Nunes BuenoSant'Anna, Cláudio NogueiraVillela, Ricardo Terra Nunes Buenohttp://lattes.cnpq.br/0162081093970868Sant'Anna, Cláudio Nogueirahttp://lattes.cnpq.br/3228159608138969http://lattes.cnpq.br/76557170742771002022-01-05T18:42:11Z2022-01-052022-01-05T18:42:11Z2021-09-012021-09-01ASSUNÇÃ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.https://repositorio.ufba.br/handle/ri/34648Padrõ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.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.Submitted by Ederson Assunção (edstito@gmail.com) on 2021-12-14T17:11:03Z No. of bitstreams: 1 PGCOMP-2021-Dissertação_Mestrado-Ederson_dos_Santos_Assunção.pdf: 2157722 bytes, checksum: eda426f61dd89b8381568c43dec50491 (MD5)Rejected by Solange Rocha (soluny@gmail.com), reason: Prezado boa tarde! O item foi submetido à coleção Dissertações (PGCOMP) como artigo e é uma dissertação de mestrado. Por favor, refazer o depósito na comunidade correspondente - Programa de Pós-Graduação em Ciência da Computação (PGCOMP) na coleção Dissertações (PGCOMP) para darmos continuidade a validação. Grata! on 2021-12-16T17:35:46Z (GMT)Submitted by Ederson Assunção (edstito@gmail.com) on 2021-12-17T14:45:04Z No. of bitstreams: 1 PGCOMP-2021-Dissertação_Mestrado-Ederson_dos_Santos_Assunção.pdf: 2157722 bytes, checksum: eda426f61dd89b8381568c43dec50491 (MD5)Approved for entry into archive by Solange Rocha (soluny@gmail.com) on 2022-01-05T18:42:10Z (GMT) No. of bitstreams: 1 PGCOMP-2021-Dissertação_Mestrado-Ederson_dos_Santos_Assunção.pdf: 2157722 bytes, checksum: eda426f61dd89b8381568c43dec50491 (MD5)Made available in DSpace on 2022-01-05T18:42:11Z (GMT). No. of bitstreams: 1 PGCOMP-2021-Dissertação_Mestrado-Ederson_dos_Santos_Assunção.pdf: 2157722 bytes, checksum: eda426f61dd89b8381568c43dec50491 (MD5) Previous issue date: 2021-09-01porpt_BRUniversidade Federal da BahiaUniversidade Federal da BahiaPrograma de Pós-Graduação em Ciência da Computação (PGCOMP) UFBABrasilInstituto de MatemáticaCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWAREPadrões de projetoCode smellsDesign de softwareMineração de repositórios de softwareDesign patternsSoftware repository miningSoftware designInvestigando a incidência de code smells em métodos de padrões de projetoInvestigating the incidence of code smells in design pattern methodsinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFBAinstname:Universidade Federal da Bahia (UFBA)instacron:UFBAORIGINALPGCOMP-2021-Dissertação_Mestrado-Ederson_dos_Santos_Assunção.pdfPGCOMP-2021-Dissertação_Mestrado-Ederson_dos_Santos_Assunção.pdfapplication/pdf2157722https://repositorio.ufba.br/bitstream/ri/34648/1/PGCOMP-2021-Disserta%c3%a7%c3%a3o_Mestrado-Ederson_dos_Santos_Assun%c3%a7%c3%a3o.pdfeda426f61dd89b8381568c43dec50491MD51LICENSElicense.txtlicense.txttext/plain1582https://repositorio.ufba.br/bitstream/ri/34648/2/license.txt907e2b7d511fb2c3e42dbdd41a6197c6MD52TEXTPGCOMP-2021-Dissertação_Mestrado-Ederson_dos_Santos_Assunção.pdf.txtPGCOMP-2021-Dissertação_Mestrado-Ederson_dos_Santos_Assunção.pdf.txtExtracted texttext/plain184354https://repositorio.ufba.br/bitstream/ri/34648/3/PGCOMP-2021-Disserta%c3%a7%c3%a3o_Mestrado-Ederson_dos_Santos_Assun%c3%a7%c3%a3o.pdf.txt568b344ddd2c7c87118e689cd142ca2dMD53ri/346482022-01-08 06:40:42.09oai:repositorio.ufba.br:ri/34648VGVybW8gZGUgTGljZW7Dp2EsIG7Do28gZXhjbHVzaXZvLCBwYXJhIG8gZGVww7NzaXRvIG5vIFJlcG9zaXTDs3JpbyBJbnN0aXR1Y2lvbmFsIGRhIFVGQkEuCgogUGVsbyBwcm9jZXNzbyBkZSBzdWJtaXNzw4PCg8OCwqNvIGRlIGRvY3VtZW50b3MsIG8gYXV0b3Igb3Ugc2V1IHJlcHJlc2VudGFudGUgbGVnYWwsIGFvIGFjZWl0YXIgZXNzZSB0ZXJtbyBkZSBsaWNlbsODwoPDgsKnYSwgY29uY2VkZSBhbyBSZXBvc2l0w4PCg8OCwrNyaW8gSW5zdGl0dWNpb25hbCBkYSBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkYSBCYWhpYSBvIGRpcmVpdG8gZGUgbWFudGVyIHVtYSBjw4PCg8OCwrNwaWEgZW0gc2V1IHJlcG9zaXTDg8KDw4LCs3JpbyBjb20gYSBmaW5hbGlkYWRlLCBwcmltZWlyYSwgZGUgcHJlc2VydmHDg8KDw4LCp8ODwoPDgsKjby4gCgpFc3NlcyB0ZXJtb3MsIG7Dg8KDw4LCo28gZXhjbHVzaXZvcywgbWFudMODwoPDgsKpbSBvcyBkaXJlaXRvcyBkZSBhdXRvci9jb3B5cmlnaHQsIG1hcyBlbnRlbmRlIG8gZG9jdW1lbnRvIGNvbW8gcGFydGUgZG8gYWNlcnZvIGludGVsZWN0dWFsIGRlc3NhIFVuaXZlcnNpZGFkZS4KCiBQYXJhIG9zIGRvY3VtZW50b3MgcHVibGljYWRvcyBjb20gcmVwYXNzZSBkZSBkaXJlaXRvcyBkZSBkaXN0cmlidWnDg8KDw4LCp8ODwoPDgsKjbywgZXNzZSB0ZXJtbyBkZSBsaWNlbsODwoPDgsKnYSBlbnRlbmRlIHF1ZToKCiBNYW50ZW5kbyBvcyBkaXJlaXRvcyBhdXRvcmFpcywgcmVwYXNzYWRvcyBhIHRlcmNlaXJvcywgZW0gY2FzbyBkZSBwdWJsaWNhw4PCg8OCwqfDg8KDw4LCtWVzLCBvIHJlcG9zaXTDg8KDw4LCs3JpbyBwb2RlIHJlc3RyaW5naXIgbyBhY2Vzc28gYW8gdGV4dG8gaW50ZWdyYWwsIG1hcyBsaWJlcmEgYXMgaW5mb3JtYcODwoPDgsKnw4PCg8OCwrVlcyBzb2JyZSBvIGRvY3VtZW50byAoTWV0YWRhZG9zIGRlc2NyaXRpdm9zKS4KCiBEZXN0YSBmb3JtYSwgYXRlbmRlbmRvIGFvcyBhbnNlaW9zIGRlc3NhIHVuaXZlcnNpZGFkZSBlbSBtYW50ZXIgc3VhIHByb2R1w4PCg8OCwqfDg8KDw4LCo28gY2llbnTDg8KDw4LCrWZpY2EgY29tIGFzIHJlc3RyacODwoPDgsKnw4PCg8OCwrVlcyBpbXBvc3RhcyBwZWxvcyBlZGl0b3JlcyBkZSBwZXJpw4PCg8OCwrNkaWNvcy4KCiBQYXJhIGFzIHB1YmxpY2HDg8KDw4LCp8ODwoPDgsK1ZXMgc2VtIGluaWNpYXRpdmFzIHF1ZSBzZWd1ZW0gYSBwb2zDg8KDw4LCrXRpY2EgZGUgQWNlc3NvIEFiZXJ0bywgb3MgZGVww4PCg8OCwrNzaXRvcyBjb21wdWxzw4PCg8OCwrNyaW9zIG5lc3NlIHJlcG9zaXTDg8KDw4LCs3JpbyBtYW50w4PCg8OCwqltIG9zIGRpcmVpdG9zIGF1dG9yYWlzLCBtYXMgbWFudMODwoPDgsKpbSBhY2Vzc28gaXJyZXN0cml0byBhb3MgbWV0YWRhZG9zIGUgdGV4dG8gY29tcGxldG8uIEFzc2ltLCBhIGFjZWl0YcODwoPDgsKnw4PCg8OCwqNvIGRlc3NlIHRlcm1vIG7Dg8KDw4LCo28gbmVjZXNzaXRhIGRlIGNvbnNlbnRpbWVudG8gcG9yIHBhcnRlIGRlIGF1dG9yZXMvZGV0ZW50b3JlcyBkb3MgZGlyZWl0b3MsIHBvciBlc3RhcmVtIGVtIGluaWNpYXRpdmFzIGRlIGFjZXNzbyBhYmVydG8uCg==Repositório InstitucionalPUBhttp://192.188.11.11:8080/oai/requestopendoar:19322022-01-08T09:40:42Repositório Institucional da UFBA - Universidade Federal da Bahia (UFBA)false
dc.title.pt_BR.fl_str_mv Investigando a incidência de code smells em métodos de padrões de projeto
dc.title.alternative.pt_BR.fl_str_mv Investigating the incidence of code smells in design pattern methods
title Investigando a incidência de code smells em métodos de padrões de projeto
spellingShingle Investigando a incidência de code smells em métodos de padrões de projeto
Assunção, Ederson dos Santos
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
Padrões de projeto
Code smells
Design de software
Mineração de repositórios de software
Design patterns
Software repository mining
Software design
title_short Investigando a incidência de code smells em métodos de padrões de projeto
title_full Investigando a incidência de code smells em métodos de padrões de projeto
title_fullStr Investigando a incidência de code smells em métodos de padrões de projeto
title_full_unstemmed Investigando a incidência de code smells em métodos de padrões de projeto
title_sort Investigando a incidência de code smells em métodos de padrões de projeto
author Assunção, Ederson dos Santos
author_facet Assunção, Ederson dos Santos
author_role author
dc.contributor.author.fl_str_mv Assunção, Ederson dos Santos
Assunção, Ederson dos Santos
dc.contributor.advisor1.fl_str_mv Souza, Rodrigo Rocha Gomes e
Souza, Rodrigo Rocha Gomes e
dc.contributor.advisor1ID.fl_str_mv 0000-0001-8186-0069
dc.contributor.advisor1Lattes.fl_str_mv http://lattes.cnpq.br/7697794806460975
dc.contributor.referee1.fl_str_mv Souza, Rodrigo Rocha Gomes e
Villela, Ricardo Terra Nunes Bueno
Sant'Anna, Cláudio Nogueira
Villela, Ricardo Terra Nunes Bueno
dc.contributor.referee1Lattes.fl_str_mv http://lattes.cnpq.br/0162081093970868
dc.contributor.referee2.fl_str_mv Sant'Anna, Cláudio Nogueira
dc.contributor.referee2Lattes.fl_str_mv http://lattes.cnpq.br/3228159608138969
dc.contributor.authorLattes.fl_str_mv http://lattes.cnpq.br/7655717074277100
contributor_str_mv Souza, Rodrigo Rocha Gomes e
Souza, Rodrigo Rocha Gomes e
Souza, Rodrigo Rocha Gomes e
Villela, Ricardo Terra Nunes Bueno
Sant'Anna, Cláudio Nogueira
Villela, Ricardo Terra Nunes Bueno
Sant'Anna, Cláudio Nogueira
dc.subject.cnpq.fl_str_mv CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
topic CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
Padrões de projeto
Code smells
Design de software
Mineração de repositórios de software
Design patterns
Software repository mining
Software design
dc.subject.por.fl_str_mv Padrões de projeto
Code smells
Design de software
Mineração de repositórios de software
Design patterns
Software repository mining
Software design
description 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.
publishDate 2021
dc.date.submitted.none.fl_str_mv 2021-09-01
dc.date.issued.fl_str_mv 2021-09-01
dc.date.accessioned.fl_str_mv 2022-01-05T18:42:11Z
dc.date.available.fl_str_mv 2022-01-05
2022-01-05T18:42:11Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv 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.
dc.identifier.uri.fl_str_mv https://repositorio.ufba.br/handle/ri/34648
identifier_str_mv 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.
url https://repositorio.ufba.br/handle/ri/34648
dc.language.iso.fl_str_mv por
pt_BR
language por
language_invalid_str_mv pt_BR
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal da Bahia
Universidade Federal da Bahia
dc.publisher.program.fl_str_mv Programa de Pós-Graduação em Ciência da Computação (PGCOMP) 
dc.publisher.initials.fl_str_mv UFBA
dc.publisher.country.fl_str_mv Brasil
dc.publisher.department.fl_str_mv Instituto de Matemática
publisher.none.fl_str_mv Universidade Federal da Bahia
Universidade Federal da Bahia
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFBA
instname:Universidade Federal da Bahia (UFBA)
instacron:UFBA
instname_str Universidade Federal da Bahia (UFBA)
instacron_str UFBA
institution UFBA
reponame_str Repositório Institucional da UFBA
collection Repositório Institucional da UFBA
bitstream.url.fl_str_mv https://repositorio.ufba.br/bitstream/ri/34648/1/PGCOMP-2021-Disserta%c3%a7%c3%a3o_Mestrado-Ederson_dos_Santos_Assun%c3%a7%c3%a3o.pdf
https://repositorio.ufba.br/bitstream/ri/34648/2/license.txt
https://repositorio.ufba.br/bitstream/ri/34648/3/PGCOMP-2021-Disserta%c3%a7%c3%a3o_Mestrado-Ederson_dos_Santos_Assun%c3%a7%c3%a3o.pdf.txt
bitstream.checksum.fl_str_mv eda426f61dd89b8381568c43dec50491
907e2b7d511fb2c3e42dbdd41a6197c6
568b344ddd2c7c87118e689cd142ca2d
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFBA - Universidade Federal da Bahia (UFBA)
repository.mail.fl_str_mv
_version_ 1801502737888706560