Uma abordagem híbrida para detecção de código clonado em Linhas de Produtos de Software

Detalhes bibliográficos
Autor(a) principal: Batista, Mallú Eduarda
Data de Publicação: 2020
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Institucional da UFLA
Texto Completo: http://repositorio.ufla.br/jspui/handle/1/46122
Resumo: Software Product Line (SPL) corresponds to software systems that share a common set of functions (commonality) that were developed using a common asset base, plus variations (variability) that are important characteristics to differentiate products from the same systems family. Cloned codes enter the scope of software systems development for several reasons, such as copy and paste, reuse code, add functions and increase and derive data. Given the existence of four types of clones, being classified according to their syntactic (Types 1, 2 and 3) or semantic similarity (Type 4), there are several reports of their occurrence in object-oriented systems whose relations are directly linked to software quality and maintainability. In the context of LPS development, it is possible to detect the existence of cloned code and make necessary changes so that this code is not propagated to other products originating from that LPS. In this Master's work, the objective is to address how to detect cloning of code in LPS, presenting a proposal for a hybrid approach to detecting Type 1 and 2 code clones in LPS. Such an approach is based on the construction of a dependency graph using AST and consists of the use of techniques for static code analysis, supported by the analysis of the sequence of method calls and the structural analysis of method signatures. In order to be able to (semi) automate this proposal of approach, a computational support (plug-in for the Eclipse IDE platform) was implemented and the evaluation of this proposal was carried out, through the internal and external evaluation where the values of precision and recalling the use of this support and comparing it with another clone detection tool. The results obtained show a high precision and reliability in the use of the tool developed to detect clones in LPS oriented to the characteristic besides the comparison of the clones obtained in relation to the PMD CPD tool.
id UFLA_330f3225dd14ebbf6796c5f67437b7a6
oai_identifier_str oai:localhost:1/46122
network_acronym_str UFLA
network_name_str Repositório Institucional da UFLA
repository_id_str
spelling Uma abordagem híbrida para detecção de código clonado em Linhas de Produtos de SoftwareA hybrid approach for cloned code detection in software product linesClonagem de códigoLinha de produtos de softwareCode cloningSoftware product lineCiência da ComputaçãoSoftware Product Line (SPL) corresponds to software systems that share a common set of functions (commonality) that were developed using a common asset base, plus variations (variability) that are important characteristics to differentiate products from the same systems family. Cloned codes enter the scope of software systems development for several reasons, such as copy and paste, reuse code, add functions and increase and derive data. Given the existence of four types of clones, being classified according to their syntactic (Types 1, 2 and 3) or semantic similarity (Type 4), there are several reports of their occurrence in object-oriented systems whose relations are directly linked to software quality and maintainability. In the context of LPS development, it is possible to detect the existence of cloned code and make necessary changes so that this code is not propagated to other products originating from that LPS. In this Master's work, the objective is to address how to detect cloning of code in LPS, presenting a proposal for a hybrid approach to detecting Type 1 and 2 code clones in LPS. Such an approach is based on the construction of a dependency graph using AST and consists of the use of techniques for static code analysis, supported by the analysis of the sequence of method calls and the structural analysis of method signatures. In order to be able to (semi) automate this proposal of approach, a computational support (plug-in for the Eclipse IDE platform) was implemented and the evaluation of this proposal was carried out, through the internal and external evaluation where the values of precision and recalling the use of this support and comparing it with another clone detection tool. The results obtained show a high precision and reliability in the use of the tool developed to detect clones in LPS oriented to the characteristic besides the comparison of the clones obtained in relation to the PMD CPD tool.Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES)Linha de Produtos de Software (LPS) corresponde a sistemas de software que compartilham um conjunto comum de funções (comunalidades) que foram desenvolvidas adotando uma base de ativos comum, acrescidas de variações (variabilidades) que são importantes características para diferir os produtos de uma mesma família de sistemas. Códigos clonados adentram o escopo de desenvolvimento de sistemas de software por diversas razões, como copiar e colar, reutilizar código, adicionar funções e aumento e derivação de dados. Dada a existência de quatro Tipos de clones, sendo eles classificados quanto a sua semelhança sintática (Tipos 1, 2 e 3) ou semântica (Tipo 4), tem-se vários relatos da ocorrência dos mesmos em sistemas orientados a objetos cuja relações estão diretamente ligadas a qualidade e a manutenibilidade de software. No contexto de desenvolvimento de LPS, é possível detectar a existência de código clonado e efetuar alterações necessárias para que esse código não seja propagado para outros produtos originários dessa LPS. Neste trabalho de Mestrado, o objetivo é abordar como detectar clonagem de código em LPS, apresentando uma proposta de abordagem híbrida de detecção de clones de código dos Tipos 1 e 2 em LPS. Tal abordagem é baseada na construção de gráfico de dependências utilizando a AST e consiste na utilização de técnicas para análise estática de código, sustentada pela análise de sequência de chamadas de métodos e na análise estrutural de assinaturas de métodos. Para que se possa (semi) automatizar essa proposta de abordagem, foi implementado um apoio computacional (plug-in para a plataforma Eclipse IDE) e realizada a avaliação dessa proposta, por meio da avaliação interna e externa onde foram mensurados os valores da precisão e recall na utilização desse apoio e realizada a comparação com outra ferramenta de detecção de clones. Os resultados obtidos mostram uma alta precisão e confiabilidade na utilização da ferramenta desenvolvida para detectar clones em LPS orientada a característica além da comparação dos clones obtidos em relação a ferramenta CPD do PMD.Universidade Federal de LavrasPrograma de Pós-Graduação em Ciência da ComputaçãoUFLAbrasilDepartamento de Ciência da ComputaçãoCosta, Heitor Augustus XavierParreira Júnior, Paulo AfonsoFigueiredo, Eduardo Magno LagesBatista, Mallú Eduarda2021-02-18T16:52:52Z2021-02-18T16:52:52Z2021-02-182020-12-10info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfBATISTA, M. E. Uma abordagem híbrida para detecção de código clonado em Linhas de Produtos de Software. 2020. 100 p. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de Lavras, Lavras, 2021.http://repositorio.ufla.br/jspui/handle/1/46122porinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFLAinstname:Universidade Federal de Lavras (UFLA)instacron:UFLA2021-02-18T16:52:52Zoai:localhost:1/46122Repositório InstitucionalPUBhttp://repositorio.ufla.br/oai/requestnivaldo@ufla.br || repositorio.biblioteca@ufla.bropendoar:2021-02-18T16:52:52Repositório Institucional da UFLA - Universidade Federal de Lavras (UFLA)false
dc.title.none.fl_str_mv Uma abordagem híbrida para detecção de código clonado em Linhas de Produtos de Software
A hybrid approach for cloned code detection in software product lines
title Uma abordagem híbrida para detecção de código clonado em Linhas de Produtos de Software
spellingShingle Uma abordagem híbrida para detecção de código clonado em Linhas de Produtos de Software
Batista, Mallú Eduarda
Clonagem de código
Linha de produtos de software
Code cloning
Software product line
Ciência da Computação
title_short Uma abordagem híbrida para detecção de código clonado em Linhas de Produtos de Software
title_full Uma abordagem híbrida para detecção de código clonado em Linhas de Produtos de Software
title_fullStr Uma abordagem híbrida para detecção de código clonado em Linhas de Produtos de Software
title_full_unstemmed Uma abordagem híbrida para detecção de código clonado em Linhas de Produtos de Software
title_sort Uma abordagem híbrida para detecção de código clonado em Linhas de Produtos de Software
author Batista, Mallú Eduarda
author_facet Batista, Mallú Eduarda
author_role author
dc.contributor.none.fl_str_mv Costa, Heitor Augustus Xavier
Parreira Júnior, Paulo Afonso
Figueiredo, Eduardo Magno Lages
dc.contributor.author.fl_str_mv Batista, Mallú Eduarda
dc.subject.por.fl_str_mv Clonagem de código
Linha de produtos de software
Code cloning
Software product line
Ciência da Computação
topic Clonagem de código
Linha de produtos de software
Code cloning
Software product line
Ciência da Computação
description Software Product Line (SPL) corresponds to software systems that share a common set of functions (commonality) that were developed using a common asset base, plus variations (variability) that are important characteristics to differentiate products from the same systems family. Cloned codes enter the scope of software systems development for several reasons, such as copy and paste, reuse code, add functions and increase and derive data. Given the existence of four types of clones, being classified according to their syntactic (Types 1, 2 and 3) or semantic similarity (Type 4), there are several reports of their occurrence in object-oriented systems whose relations are directly linked to software quality and maintainability. In the context of LPS development, it is possible to detect the existence of cloned code and make necessary changes so that this code is not propagated to other products originating from that LPS. In this Master's work, the objective is to address how to detect cloning of code in LPS, presenting a proposal for a hybrid approach to detecting Type 1 and 2 code clones in LPS. Such an approach is based on the construction of a dependency graph using AST and consists of the use of techniques for static code analysis, supported by the analysis of the sequence of method calls and the structural analysis of method signatures. In order to be able to (semi) automate this proposal of approach, a computational support (plug-in for the Eclipse IDE platform) was implemented and the evaluation of this proposal was carried out, through the internal and external evaluation where the values of precision and recalling the use of this support and comparing it with another clone detection tool. The results obtained show a high precision and reliability in the use of the tool developed to detect clones in LPS oriented to the characteristic besides the comparison of the clones obtained in relation to the PMD CPD tool.
publishDate 2020
dc.date.none.fl_str_mv 2020-12-10
2021-02-18T16:52:52Z
2021-02-18T16:52:52Z
2021-02-18
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.uri.fl_str_mv BATISTA, M. E. Uma abordagem híbrida para detecção de código clonado em Linhas de Produtos de Software. 2020. 100 p. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de Lavras, Lavras, 2021.
http://repositorio.ufla.br/jspui/handle/1/46122
identifier_str_mv BATISTA, M. E. Uma abordagem híbrida para detecção de código clonado em Linhas de Produtos de Software. 2020. 100 p. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de Lavras, Lavras, 2021.
url http://repositorio.ufla.br/jspui/handle/1/46122
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidade Federal de Lavras
Programa de Pós-Graduação em Ciência da Computação
UFLA
brasil
Departamento de Ciência da Computação
publisher.none.fl_str_mv Universidade Federal de Lavras
Programa de Pós-Graduação em Ciência da Computação
UFLA
brasil
Departamento de Ciência da Computação
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
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_ 1807835055904522240