Skip navigation
Por favor, use este identificador para citar o enlazar este ítem: https://repositorio.ufpe.br/handle/123456789/35862

Comparte esta pagina

Registro completo de metadatos
Campo DC Valor Lengua/Idioma
dc.contributor.advisorBORBA, Paulo Henrique Monteiro-
dc.contributor.authorCAVALCANTI, Guilherme José de Carvalho-
dc.date.accessioned2019-12-18T19:30:51Z-
dc.date.available2019-12-18T19:30:51Z-
dc.date.issued2019-10-02-
dc.identifier.citationCAVALCANTI, José de Carvalho. Should we replace our merge tools?. 2019. Tese (Doutorado em Ciência da Computação) – Universidade Federal de Pernambuco, Recife, 2019.pt_BR
dc.identifier.urihttps://repositorio.ufpe.br/handle/123456789/35862-
dc.description.abstractMerge conflicts often occur when developers concurrently change the same code artifacts. While state of practice unstructured merge tools (e.g git merge) try to automatically resolve merge conflicts based on textual similarity, semistructured and structured merge tools try to go further by exploiting the syntactic structure and semantics of the involved artifacts. Previous studies compare semistructured and structured merge with unstructured merge concerning the number of reported conflicts, showing, for most projects and merge situations, a reduction in favor of semistructured and structured merge. This evidence, however, might not be sufficient to justify industrial adoption of advanced merge strategies such as semistructured and structured merge. The problem is that previous studies do not investigate whether the observed reduction on the number of reported conflicts actually leads to integration effort reduction (Productivity) without negative impact on the correctness of the merging process (Quality). Besides, it is unknown how semistructured merge compares with structured merge. So, to decide whether we should replace our state of practice unstructured merge tools, we need to compare these merge strategies and understand their differences. We then first compare unstructured and semistructured merge. Our results and complementary analysis indicate that the number of false positives is significantly reduced when using semistructured merge when compared to unstructured merge. However, we find no evidence that semistructured merge leads to fewer false negatives. Driven by these findings, we implement an improved semistructured merge tool that further combines both approaches to reduce the false positives and false negatives of semistructured merge. Semistructured merge has shown significant advantages over unstructured merge, especially as implemented by our improved tool. However, before deciding to replace unstructured tools by semistructured merge, we need to investigate whether structured merge is a better alternative than semistructured merge. So, we compare semistructured and structured merge. Our results show that semistructured and structured merge differ on 24% of the scenarios with conflicts. Semistructured merge reports more false positives, whereas structured merge has more false negatives. Finally, we observe that adapting a semistructured merge tool to resolve a particular kind of conflict makes semistructured and structured merge even closer. Overall, our findings suggests that semistructured merge is a better replacement of unstructured tools for conservative developers, having significant gains with a closer behavior to unstructured tools than structured merge. Besides that, practitioners might be reluctant to adopt structured merge because of the observed performance overhead and its tendency to false negatives. So, when choosing between semistructured and structured merge, semistructured merge would be a better match for developers that are not overly concerned with semistructured extra false positives.pt_BR
dc.description.sponsorshipFACEPEpt_BR
dc.language.isoengpt_BR
dc.publisherUniversidade Federal de Pernambucopt_BR
dc.rightsopenAccesspt_BR
dc.rightsAttribution-NonCommercial-NoDerivs 3.0 Brazil*
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/3.0/br/*
dc.subjectEngenharia de Softwarept_BR
dc.subjectIntegração de Softwarept_BR
dc.subjectDesenvolvimento colaborativopt_BR
dc.subjectSistema de controle de versõespt_BR
dc.titleShould we replace our merge tools?pt_BR
dc.typedoctoralThesispt_BR
dc.contributor.authorLatteshttp://lattes.cnpq.br/2569037604960951pt_BR
dc.publisher.initialsUFPEpt_BR
dc.publisher.countryBrasilpt_BR
dc.degree.leveldoutoradopt_BR
dc.contributor.advisorLatteshttp://lattes.cnpq.br/9395715443254344pt_BR
dc.publisher.programPrograma de Pos Graduacao em Ciencia da Computacaopt_BR
dc.description.abstractxConflitos de integração frequentemente ocorrem quando os desenvolvedores alteram simultaneamente os mesmos artefatos de código. Enquanto que as ferramentas de integração não-estruturadas, que representam o estado da prática (por exemplo, git merge), tentam resolver conflitos automaticamente, baseadas em semelhança textual, as ferramentas de integração semiestruturada e estruturada tentam ir além explorando a estrutura sintática e a semântica dos artefatos envolvidos. Estudos anteriores comparam as estratégias semiestruturada e estruturada com a não-estruturada em relação ao número de conflitos reportados, mostrando, para a maioria dos projetos e situações de integração, uma redução a favor das estratégias semiestruturada e estruturada. O problema desses estudos anteriores é que eles não investigam se a redução observada no número de conflitos realmente leva à redução do esforço de integração (Produtividade) sem impacto negativo na corretude do processo de integração (Qualidade). Além disso, não se sabe como a estratégia semiestruturada se compara com a estruturada. Para ajudar os desenvolvedores a decidir que tipo de ferramenta usar e entender melhor suas diferenças, conduzimos dois estudos empíricos. No primeiro, comparamos a integração não-estruturada e a semiestruturada. Nossos resultados e análises complementares indicam que o número de falsos positivos é significativamente reduzido ao usar a estratégia semiestruturada quando comparado à não-estruturada. No entanto, nós não encontramos evidências de que a integração semiestruturada leva a menos falsos negativos. Motivados por essas descobertas, implementamos uma ferramenta de integração semiestruturada que combina ainda mais as duas estratégias para reduzir os falsos positivos e os falsos negativos da integração semiestruturada. No segundo estudo, comparamos as integrações semiestruturada e estruturada. Nossos resultados mostram que as integrações semiestruturada e estruturada diferem em 24% dos cenários com conflitos. A estratégia semiestruturada reporta mais falsos positivos, enquanto a estruturada tem mais falsos negativos. Finalmente, observamos que adaptar uma ferramenta semiestruturada para resolver um determinado tipo de conflito torna-a ainda mais próxima à integração estruturada. No geral, nossas descobertas sugerem que a estratégia semiestruturada é uma melhor alternativa à não-estruturada para desenvolvedores conservadores, possuindo ganhos significativos com um comportamento mais próximo ao das ferramentas nãoestruturadas do que ferramentas estruturadas. Além disso, os usuários podem relutar em adotar a estratégia estruturada por causa do seu impacto no desempenho e sua tendência a falsos negativos. Dessa forma, a estratégia semiestruturada seria mais apropriada para desenvolvedores que não são muito preocupados com seus falsos positivos extras.pt_BR
Aparece en las colecciones: Teses de Doutorado - Ciência da Computação

Ficheros en este ítem:
Fichero Descripción Tamaño Formato  
TESE Guilherme José de Carvalho Cavalcanti.pdf1,69 MBAdobe PDFVista previa
Visualizar/Abrir


Este ítem está protegido por copyright original



Este ítem está sujeto a una licencia Creative Commons Licencia Creative Commons Creative Commons