Mostrar registro simples

dc.creator.ID ALVES, E. L. G. pt_BR
dc.creator.Lattes http://lattes.cnpq.br/2793969744497453 pt_BR
dc.contributor.advisor1 MACHADO, Patrícia Duarte de Lima.
dc.contributor.advisor1ID MACHADO, P. D. L. pt_BR
dc.contributor.advisor1Lattes http://lattes.cnpq.br/2495918356675019 pt_BR
dc.contributor.advisor2 MASSONI, Tiago LIma.
dc.contributor.advisor2ID MASSONI, T. L. pt_BR
dc.contributor.advisor2Lattes http://lattes.cnpq.br/3563923906851611 pt_BR
dc.contributor.referee1 COELHO, Roberta de Souza.
dc.contributor.referee2 BORBA, Paulo Henrique Monteiro.
dc.contributor.referee3 RAMALHO, Franklin de Souza.
dc.contributor.referee4 GHEYI, Rohit.
dc.description.resumo Um estudo recente mostra que cerca de 90% de todos os refactoramentos são aplicadosmanualmente. Refatoramentos manuais são mais suscetíveis a erro, uma vez que desenvolvedores tem que coordenar transformações relacionadas e entender relações, muitas vezes complexas, entre arquivos, variáveis e métodos. Neste contexto, suites de regressão são usadas para diminuir as chances de introdução de defeitos durante refatoramentos. Contudo, devido aos altos custos de lidar com suites massivas, existe a necessidade de otimização da execução destas. Técnicas de priorização de casos de teste propõem uma nova ordem de execução, almejando a detecção antecipada de faltas. Entretanto, as técnicas atuais não são projetadas para lidar especificamente com faltas relacionadas a refatoramentos. Neste documento propomos RBA (Refactoring-Based Approach), uma técnica de prioritização voltada para refatoramentos. RBA reordena uma suite existente de acordo com um conjunto de modelos de falta (Refactoring Fault Models - RFMs). Estes abrangem os elementos de códigoque são geralmente impactados dado um refatoramento. Apesar de ser a técnica de validação de refatoramentos mais usada na prática, em alguns casos, o uso de suites de regressão pode ser inadequado. Suites inadequadas podem impedir desenvolvedores de iniciar uma tarefa de refatoramento dada as chances de introdução de defeitos. A fim de complementar a validação por testes e ajudar na revisão de refatoramentos, nós propomos REFDISTILLER, uma técnica que usa anáise estática para detectar edições de código negligenciadas e edições extra que desviam de um refatoramento padrão e podem vir a mudar o comportamento do software. Ambas abordagens (RBA e REFDISTILLER) focam em sistemas Java/JUnit e em um sub conjunto dos refatoramentos mais comuns. Uma avaliação usando um dataset composto de faltas de refatoramento sutis, e comparando com técnicas de prioritização tradicionais, mostra que RBA melhor prioriza as suites em 71% dos casos, promovendo um melhor agrupamento dos casos de teste em 73% dos casos. REFDISTILLER detecta 97% das faltas do nosso dataset de faltas injetadas. Destas, 24% não são detectadas por suites de teste geradas. Finalmente, em um estudo com projetos open-source, REFDISTILLER detecta 22.1 mais anomalias que as suites de teste, com uma precisão de 94%. Esses resultados mostram que (i) RBA consegue melhorar consideravelmente a priorização durante evoluções perfectivas, melhorando tanto a antecipação da detecção de defeitos, quanto fornecendo mais informação sobre estes antecipadamente; (ii) REFDISTILLER complementa efetivamente a análise dinâmica por achar novas anomalias e fornecer informações extra que ajudam no debug e correção das faltas. pt_BR
dc.publisher.country Brasil pt_BR
dc.publisher.department Centro de Engenharia Elétrica e Informática - CEEI pt_BR
dc.publisher.program PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO pt_BR
dc.publisher.initials UFCG pt_BR
dc.subject.cnpq Ciência da Computação. pt_BR
dc.title Early detection of manual refactoring faults. pt_BR
dc.date.issued 2015-04-07
dc.description.abstract A recent study states that about 90% of all refactorings are done manually. Manual refactoring edits are error prone, as refactoring requires developers to coordinaterelated transformations and to understand the complex inter-relationship between affected files, variables, and methods. In this context, regression tests suites are often used as safety net for decreasing the chances of introducing behavior changes while refactoring. However, due to the high costs related to handling massive test suites, there is a need for optimizing testing execution. Test case prioritization techniques propose new test execution orders fostering early fault detection. However, existing general-purpose prioritization techniques are not specifically designed for detecting refactoring-related faults. In this work we propose a refactoringaware strategy - (RBA) (Refactoring-Based Approach) – for prioritizing regression test case execution. RBA reorders an existing test suite, according to a set of proposed Refactoring Fault Models (RFMs), which comprise impact locations of certain refactorings. Although being the most used refactoring validation strategy in practice, regression suites might be inadequate. Inadequate test suites may prevent developers from initiating or performing refactorings due to the risk of introducing bugs. To complement testing validation and help developers to review refactorings, we propose REFDISTILLER, a static analysis approach for detecting missing and extra edits that deviate from a standard refactoring and thus may affect a program’s behavior. Both strategies (RBA and RefDistiller) focus on Java/JUnit systems and on a set of the most common refactoring types. Our evaluation using a data set composed by hard-to-identify refactoring faults shows that RBA improves the position of the first fault-revealing test case in 71% of the suites, also providing a better grouping rate (in 73% of the cases) for test cases in the prioritized sequence, when compared to well-know general purpose techniques. Regarding REFDISTILLER, it detects 97% of all faults from our data set with seeded refactoring faults, of which 24% are not detected by generated test suites. Moreover, in a study with open source projects. REFDISTILLER detects 22.1 times more anomalies than testing, with 94% precision on overage. Those results show that (i) RBA can considerably improve prioritization during perfective evolution, both by anticipating fault detection as well as by helping to giving more information about the defects earlier, and (ii) REFDISTILLER effectively complements dynamic analysis by finding additional anomalies, while providing information that help fault debugging/fixing. pt_BR
dc.identifier.uri http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/595
dc.date.accessioned 2018-05-07T17:20:12Z
dc.date.available 2018-05-07
dc.date.available 2018-05-07T17:20:12Z
dc.type Tese pt_BR
dc.subject Refactoramento Manual pt_BR
dc.subject Suítes de Regressão pt_BR
dc.subject Detecção Antecipada de Falhas pt_BR
dc.subject Refactoring-Based Approach pt_BR
dc.subject Refdistiller pt_BR
dc.subject Anáise Estática pt_BR
dc.rights Acesso Aberto pt_BR
dc.creator ALVES, Everton Leandro Galdino.
dc.publisher Universidade Federal de Campina Grande pt_BR
dc.language eng pt_BR
dc.title.alternative Detecção antecipada de falhas de refatoração manual. pt_BR
dc.identifier.citation ALVES, Everton Leandro Galdino. Early detection of manual refactoring faults. 2015. 142 f. (Tese de Doutorado em Ciência da Computação) Programa de Pós-graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande - Paraíba - Brasil, 2015. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/595 pt_BR


Arquivos deste item

Este item aparece na(s) seguinte(s) coleção(s)

Mostrar registro simples

Buscar DSpace


Busca avançada

Navegar

Minha conta