Detecting code smells in software product lines

Detalhes bibliográficos
Ano de defesa: 2014
Autor(a) principal: Abílio, Ramon Simões
Orientador(a): Costa, Heitor Augustus Xavier
Banca de defesa: Figueiredo, Eduardo Magno Lages, Cirilo, Elder José Reioli, Villela, Ricardo Terra Nunes Bueno
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: UNIVERSIDADE FEDERAL DE LAVRAS
Programa de Pós-Graduação: DCC - Programa de Pós-graduação
Departamento: Não Informado pela instituição
País: BRASIL
Palavras-chave em Português:
Área do conhecimento CNPq:
Link de acesso: https://repositorio.ufla.br/handle/1/2064
Resumo: Dissertação apresentada à Universidade Federal de Lavras, como parte das exigências do Programa de Pós-Graduação em Ciência da Computação, área de concentração em Banco de Dados e Engenharia de Software, para a obtenção do título de Mestre.
id UFLA_405ff130b05e05008a78bb3ab64b8fb1
oai_identifier_str oai:repositorio.ufla.br:1/2064
network_acronym_str UFLA
network_name_str Repositório Institucional da UFLA
repository_id_str
spelling 2014-08-04T12:21:54Z20142014-08-04T12:21:54Z20142014-08-042014-02-25ABÍLIO, R. S. Detecting code smells in software product lines. 2014. 140 p. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal de Lavras, Lavras, 2014.https://repositorio.ufla.br/handle/1/2064Dissertação apresentada à Universidade Federal de Lavras, como parte das exigências do Programa de Pós-Graduação em Ciência da Computação, área de concentração em Banco de Dados e Engenharia de Software, para a obtenção do título de Mestre.Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES)Banco de Dados e Engenharia de SoftwareAnomalias de código são sintomas que indicam que alguma coisa está errada no código fonte. Essas anomalias têm sido catalogadas e investigadas em diversas técnicas de programação, como as programações orientadas a objetos e orientadas a aspectos. Essas técnicas podem ser utilizadas para desenvolver Linhas de Produtos de Software (LPS). A programação orientada a características (POC) é uma técnica específica para tratar a modularização de características em LPS. Uma das linguagens POC mais populares é a AHEAD e é também utilizada neste trabalho. Apesar disso, ainda faltam estudos sistemáticos sobre a categorização e detecção de anomalias de código em LPSs baseadas em AHEAD. Portanto, este trabalho estende as definições de três anomalias de código tradicionais, chamadas God Method, God Class e Shotgun Surgery, para que elas abordem as abstrações da POC. Foram propostas, inclusive, oito novas medidas para quantificar características específicas de abordagens composicionais como a AHEAD. Finalmente, essas medidas foram combinadas com medidas existentes para definir três estratégias de detecção para identificar as anomalias investigadas e desenvolver uma ferramenta computacional para medir e detectar anomalias de código. Para avaliar as estratégias de detecção, um estudo exploratório foi realizado envolvendo 26 participantes (especialistas em Engenharia de Software). Os participantes realizaram inspeções manuais baseadas em medidas para identificar anomalias de código em métodos e componentes, e os resultados foram comparados com os resultados das estratégias utilizando testes estatísticos. As análises indicam que as estratégias de detecção propostas podem ser utilizadas como preditoras das anomalias, pois os testes estatísticos indicam acordo entre os resultados obtidos a partir das estratégias e os resultados obtidos a partir dos participantes. Portanto, as principais contribuições deste trabalho são: oito medidas que abordam mecanismos específicos de abordagens composicionais; perspectivas diferentes para três anomalias de código tradicionais; três estratégias de detecção baseadas em medidas e uma ferramenta computacional para medir e detectar as anomalias investigadas em código fonte AHEAD.Code smells are symptoms that something is wrong in the source code. They have been catalogued and investigated in several programming techniques, such as object-oriented and aspect-oriented programming. These techniques could also be used to develop Software Product Lines (SPL).Feature-oriented programming (FOP) is a specific technique to deal with the modularization of features in SPL. One of the most popular FOP languages is AHEAD, and as far as we are concerned. Despite of that, we still lack systematic studies on the categorization and detection of code smells in AHEAD-based SPL. Therefore, this work extended the definitions of three traditional code smells, namely God Method, God Class, and Shotgun Surgery, to consider FOP abstractions. We then proposed eight new FOP measures to quantify specific characteristics of compositional approaches like AHEAD. Finally, we combined the proposed and existing measures to define three detection strategies for identifying the investigated code smells and developed a computational tool to measure and detect the code smells. To evaluate the detection strategies, we performed an exploratory study involving 26 participants (Software Engineering experts). The participants performed manual inspections relying on measures to identify code smells in methods and components and we compared their results with the strategies’ using statistical tests. Our analysis showed that the proposed detection strategies can be used as code smell predictor, since the statistical tests indicated agreement between results obtained from the strategies and those obtained from the study participants. Therefore, the main contributions of this work are fourfold: eight measures that address specific mechanisms of compositional approaches; a different perspective of three traditional code smells; three measure-based detection strategies; and a computational tool to measure and detect the target code smells in AHEAD source code.UNIVERSIDADE FEDERAL DE LAVRASDCC - Programa de Pós-graduaçãoUFLABRASILCNPQ_NÃO_INFORMADOAnomalias de códigoEstratégias de detecçãoProgramação orientada a característicasLinha de produto de softwareCode smellDetection strategyFeature-oriented programmingSoftware product lineDetecting code smells in software product linesinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisCosta, Heitor Augustus XavierFigueiredo, Eduardo Magno LagesCirilo, Elder José ReioliVillela, Ricardo Terra Nunes BuenoFigueiredo, EduardoAbílio, Ramon Simõesinfo:eu-repo/semantics/openAccessengreponame:Repositório Institucional da UFLAinstname:Universidade Federal de Lavras (UFLA)instacron:UFLALICENSElicense.txtlicense.txttext/plain; charset=utf-8953https://repositorio.ufla.br/bitstreams/763a069b-8d2f-4dfb-902d-c5417dddfa32/download760884c1e72224de569e74f79eb87ce3MD52falseAnonymousREADORIGINALDISSERTAÇÃO_Detecting code smells in software product lines.pdfDISSERTAÇÃO_Detecting code smells in software product lines.pdfapplication/pdf1305027https://repositorio.ufla.br/bitstreams/9dd2517f-acd7-4776-890c-1c1058cd4c47/download64d46411c930aea6115379f614fd422bMD51trueAnonymousREADTEXTDISSERTAÇÃO_Detecting code smells in software product lines.pdf.txtDISSERTAÇÃO_Detecting code smells in software product lines.pdf.txtExtracted texttext/plain100267https://repositorio.ufla.br/bitstreams/8fb6f8c7-7d8a-4304-be88-c2021afa0edd/download74390f1c4c9dea1b37c172a4904d1cd2MD53falseAnonymousREADTHUMBNAILDISSERTAÇÃO_Detecting code smells in software product lines.pdf.jpgDISSERTAÇÃO_Detecting code smells in software product lines.pdf.jpgGenerated Thumbnailimage/jpeg2566https://repositorio.ufla.br/bitstreams/d76ba362-8981-466c-8461-3a94675f5253/downloadc101bdadfa35efc722da7d65924eaf2dMD54falseAnonymousREAD1/20642025-08-06 08:29:26.708open.accessoai:repositorio.ufla.br:1/2064https://repositorio.ufla.brRepositório InstitucionalPUBhttps://repositorio.ufla.br/server/oai/requestnivaldo@ufla.br || repositorio.biblioteca@ufla.bropendoar:2025-08-06T11:29:26Repositório Institucional da UFLA - Universidade Federal de Lavras (UFLA)falseREVDTEFSQcOHw4NPIERFIERJU1RSSUJVScOHw4NPIE7Dg08tRVhDTFVTSVZBCk8gcmVmZXJpZG8gYXV0b3I6CmEpIERlY2xhcmEgcXVlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIMOpIHNldSB0cmFiYWxobyBvcmlnaW5hbCwgZSBxdWUKZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4KRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2UsIHRhbnRvIHF1YW50bwpsaGUgw6kgcG9zc8OtdmVsIHNhYmVyLCBvcyBkaXJlaXRvcyBkZSBxdWFscXVlciBvdXRyYSBwZXNzb2Egb3UKZW50aWRhZGUuCmIpIFNlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIGNvbnTDqW0gbWF0ZXJpYWwgZG8gcXVhbCBuw6NvIGRldMOpbSBvcwpkaXJlaXRvcyBkZSBhdXRvciwgZGVjbGFyYSBxdWUgb2J0ZXZlIGF1dG9yaXphw6fDo28gZG8gZGV0ZW50b3IgZG9zCmRpcmVpdG9zIGRlIGF1dG9yIHBhcmEgY29uY2VkZXIgw6AgVW5pdmVyc2lkYWRlIEZlZGVyYWwgZGUgTGF2cmFzIG9zCmRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgbGljZW7Dp2EsIGUgcXVlIGVzc2UgbWF0ZXJpYWwgY3Vqb3MKZGlyZWl0b3Mgc8OjbyBkZSB0ZXJjZWlyb3MgZXN0w6EgY2xhcmFtZW50ZSBpZGVudGlmaWNhZG8gZSByZWNvbmhlY2lkbwpubyB0ZXh0byBvdSBjb250ZcO6ZG8gZG8gZG9jdW1lbnRvIGVudHJlZ3VlLiBTZSBvIGRvY3VtZW50byBlbnRyZWd1ZSDDqQpiYXNlYWRvIGVtIHRyYWJhbGhvIGZpbmFuY2lhZG8gb3UgYXBvaWFkbyBwb3Igb3V0cmEgaW5zdGl0dWnDp8OjbyBxdWUKbsOjbyBhIFVuaXZlcnNpZGFkZSBGZWRlcmFsIGRlIExhdnJhcywgZGVjbGFyYSBxdWUgY3VtcHJpdSBxdWFpc3F1ZXIKb2JyaWdhw6fDtWVzIGV4aWdpZGFzIHBlbG8gcmVzcGVjdGl2byBjb250cmF0byBvdSBhY29yZG8uCgo=
dc.title.pt_BR.fl_str_mv Detecting code smells in software product lines
title Detecting code smells in software product lines
spellingShingle Detecting code smells in software product lines
Abílio, Ramon Simões
CNPQ_NÃO_INFORMADO
Anomalias de código
Estratégias de detecção
Programação orientada a características
Linha de produto de software
Code smell
Detection strategy
Feature-oriented programming
Software product line
title_short Detecting code smells in software product lines
title_full Detecting code smells in software product lines
title_fullStr Detecting code smells in software product lines
title_full_unstemmed Detecting code smells in software product lines
title_sort Detecting code smells in software product lines
author Abílio, Ramon Simões
author_facet Abílio, Ramon Simões
author_role author
dc.contributor.advisor1.fl_str_mv Costa, Heitor Augustus Xavier
dc.contributor.referee1.fl_str_mv Figueiredo, Eduardo Magno Lages
Cirilo, Elder José Reioli
Villela, Ricardo Terra Nunes Bueno
dc.contributor.advisor-co1.fl_str_mv Figueiredo, Eduardo
dc.contributor.author.fl_str_mv Abílio, Ramon Simões
contributor_str_mv Costa, Heitor Augustus Xavier
Figueiredo, Eduardo Magno Lages
Cirilo, Elder José Reioli
Villela, Ricardo Terra Nunes Bueno
Figueiredo, Eduardo
dc.subject.cnpq.fl_str_mv CNPQ_NÃO_INFORMADO
topic CNPQ_NÃO_INFORMADO
Anomalias de código
Estratégias de detecção
Programação orientada a características
Linha de produto de software
Code smell
Detection strategy
Feature-oriented programming
Software product line
dc.subject.por.fl_str_mv Anomalias de código
Estratégias de detecção
Programação orientada a características
Linha de produto de software
Code smell
Detection strategy
Feature-oriented programming
Software product line
description Dissertação apresentada à Universidade Federal de Lavras, como parte das exigências do Programa de Pós-Graduação em Ciência da Computação, área de concentração em Banco de Dados e Engenharia de Software, para a obtenção do título de Mestre.
publishDate 2014
dc.date.copyright.none.fl_str_mv 2014
dc.date.submitted.none.fl_str_mv 2014-02-25
dc.date.accessioned.fl_str_mv 2014-08-04T12:21:54Z
dc.date.available.fl_str_mv 2014
2014-08-04T12:21:54Z
dc.date.issued.fl_str_mv 2014-08-04
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 ABÍLIO, R. S. Detecting code smells in software product lines. 2014. 140 p. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal de Lavras, Lavras, 2014.
dc.identifier.uri.fl_str_mv https://repositorio.ufla.br/handle/1/2064
identifier_str_mv ABÍLIO, R. S. Detecting code smells in software product lines. 2014. 140 p. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal de Lavras, Lavras, 2014.
url https://repositorio.ufla.br/handle/1/2064
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv UNIVERSIDADE FEDERAL DE LAVRAS
dc.publisher.program.fl_str_mv DCC - Programa de Pós-graduação
dc.publisher.initials.fl_str_mv UFLA
dc.publisher.country.fl_str_mv BRASIL
publisher.none.fl_str_mv UNIVERSIDADE FEDERAL DE LAVRAS
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFLA
instname:Universidade Federal de Lavras (UFLA)
instacron:UFLA
instname_str Universidade Federal de Lavras (UFLA)
instacron_str UFLA
institution UFLA
reponame_str Repositório Institucional da UFLA
collection Repositório Institucional da UFLA
bitstream.url.fl_str_mv https://repositorio.ufla.br/bitstreams/763a069b-8d2f-4dfb-902d-c5417dddfa32/download
https://repositorio.ufla.br/bitstreams/9dd2517f-acd7-4776-890c-1c1058cd4c47/download
https://repositorio.ufla.br/bitstreams/8fb6f8c7-7d8a-4304-be88-c2021afa0edd/download
https://repositorio.ufla.br/bitstreams/d76ba362-8981-466c-8461-3a94675f5253/download
bitstream.checksum.fl_str_mv 760884c1e72224de569e74f79eb87ce3
64d46411c930aea6115379f614fd422b
74390f1c4c9dea1b37c172a4904d1cd2
c101bdadfa35efc722da7d65924eaf2d
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFLA - Universidade Federal de Lavras (UFLA)
repository.mail.fl_str_mv nivaldo@ufla.br || repositorio.biblioteca@ufla.br
_version_ 1854947732893990912