Um Estudo Exploratório Sobre Redundância Funcional Em Repositórios Java De Larga Escala

dc.contributor.advisorLemos, Otavio Augusto Lazzarini [UNIFESP]
dc.contributor.authorSuzuki, Marcelo Rosa [UNIFESP]
dc.contributor.institutionUniversidade Federal de São Paulo (UNIFESP)pt
dc.date.accessioned2019-06-19T14:58:32Z
dc.date.available2019-06-19T14:58:32Z
dc.date.issued2017-09-29
dc.description.abstractIn large code repositories, the probability of functions to repeat across projects is high. This type of functional redundancy is desirable for recent code reuse and repair approaches. Yet, functional redundancy is hard to measure because it is closely related to program equivalence, which is an undecidable problem. This is one of the reasons most studies that investigate redundancy focus on syntactic rather than semantic replication (e.g., cloning). In this dissertation is evaluate the extent of functional redundancy in a code repositor y with 68 Java projects taken randomly from SourceForge. The technique approximates function similarity by first searching for methods that possess similar interfaces (return type, name, and parameter types). We then execute these methods to verify which candidate pairs have matching outputs for a given sample of inputs. Some recent studies have also focused on this type of semantic replication, but our detection approach is generally cheaper and more precise, because it focuses on methods and uses interfaces to reduce the search space. The results are conservative, because the scope is restricted to static methods, but indicate for relatively high semantic redundancy in the repository. In particular, it was found 984 pairs of redundant methods, and 28 out of the 68 (41.17%) projects in the repository presented redundancy. The study also indicates that the proposed redundancy detection approach has high precision and is generally inexpensive (only four executions were required per method to attain 100% precision).en
dc.description.abstractEm repositórios de larga escala existe uma alta probabilidade de que funções se repitam entre projetos. Esse tipo de redundância funcional é desejável para abordagens recentes de reuso e reparo de código. Entretanto, de maneira geral é difícil de se medir a redundância funcional, pois esta característica está diretamente relacionada com a equivalência de programas, um problema sabidamente indecidível. Essa é uma das razões pelas quais a maioria dos estudos sobre redundância focam em replicação sintática (por exemplo, clonagem) em vez de semântica. Nesta dissertação é feita uma avaliação da extensão da redundância funcional em um repositório com 68 projetos Java escolhidos aleatoriamente do SourceForge. A técnica proposta para a medição da redundância funcional aproxima similaridade funcional inicialmente a partir da busca por métodos que possuem interfaces similares (mesmo tipo de retorno, nome e tipos de parâmetros). O segundo passo é executar os pares de métodos com interface semelhante com algumas entradas pré-definidas, observando se as saídas são coincidentes para as mesmas entradas. Alguns estudos recentes também focam na replicação semântica, porém a abordagem de detecção proposta aqui é focado em métodos e utiliza interfaces para reduzir o espaço de busca. Os resultados obtidos foram conservadores, pois focou-se apenas em métodos estáticos, mas apontam para uma redundância semântica relativamente alta no repositório. Em particular, encontrou-se 984 pares de métodos redundantes, e 28 dos 68 projetos (41.17%) avaliados no estudo apresentaram redundância semântica. O estudo também indica que a utilização da abordagem de detecção de redundância proposta atinge alta precisão a um custo baixo (apenas quatro execuções por método foram necessárias para atingir uma precisão de 100%).pt
dc.description.sourceDados abertos - Sucupira - Teses e dissertações (2017)
dc.format.extent0p.
dc.identifierhttps://sucupira.capes.gov.br/sucupira/public/consultas/coleta/trabalhoConclusao/viewTrabalhoConclusao.jsf?popup=true&id_trabalho=5141363pt
dc.identifier.file2017-1033.pdf
dc.identifier.urihttp://repositorio.unifesp.br/handle/11600/50881
dc.language.isopor
dc.publisherUniversidade Federal de São Paulo (UNIFESP)
dc.rightsAcesso restrito
dc.subjectCode Reuseen
dc.subjectSearch In Source Codeen
dc.subjectSemantic Replicationen
dc.subjectReuso De Softwarept
dc.subjectBusca De Código-Fontept
dc.subjectRedundância De Softwarept
dc.titleUm Estudo Exploratório Sobre Redundância Funcional Em Repositórios Java De Larga Escalapt
dc.typeDissertação de mestrado
unifesp.campusSão José dos Campos, Instituto de Ciência e Tecnologiapt
unifesp.graduateProgramCiência da computaçãopt
unifesp.knowledgeAreaCiência Da Computaçãopt
unifesp.researchAreaSistemas Computacionaispt
Arquivos