Investigando a incidência de code smells em métodos de padrões de projeto
Autor(a) principal: | |
---|---|
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_ |
1808459635825311744 |