Semistructured merge in JavaScript systems

Detalhes bibliográficos
Ano de defesa: 2019
Autor(a) principal: TAVARES, Alberto Trindade
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: Universidade Federal de Pernambuco
UFPE
Brasil
Programa de Pos Graduacao em Ciencia da Computacao
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: https://repositorio.ufpe.br/handle/123456789/33477
Resumo: In a collaborative development environment, programmers often work on simultaneous tasks which involve common software artifacts. As a consequence, when developers merge independent code contributions from different tasks, one might have to deal with conflicting changes, hampering the productivity of such collaborative development. The industry widely uses unstructured merge tools, that rely on textual analysis, to detect and resolve conflicts between developers’ code contributions. On the other hand, semistructured merge tools go further by partially analyzing the syntactic structure and semantics of the code artifacts involved in a conflict. Previous studies compared these merge approaches, showing that semistructured merge is superior to unstructured one with respect to the number of reported conflicts, reducing the integration effort spent by developers, but, also, possibly negatively impacting the correctness of the merging process. However, these studies are based on semistructured merge tools, built on top of the FSTMerge architecture, that support different languages such as Java and C#, but not JavaScript, the most popular programming language for the Web. JavaScript has distinctive features when compared to those languages, which potentially lead to different results of effectiveness in solving conflicts by using the semistructured merge approach. In this work, we implement different versions of semistructured tools— based on FSTMerge— that work with JavaScript, and we conduct a study to compare them to an unstructured tool in order to better understand how semistructured merge works across different languages. During the implementation of tools for JavaScript, we found that the FSTMerge approach is not fully generalizable for programming languages that share similar characteristics with JavaScript; in particular, languages that allow statements at the same syntactic level as commutative and associative declarations. For those languages, further adaptations to the FSTMerge architecture are necessary. Nevertheless, we found evidences that semistructured merge approach for JavaScript reports fewer spurious conflicts than unstructured merge, without significantly impacting the integration correctness. Even though the reduction of reported conflicts is lower than that reported in previous studies for Java and C#, semistructured merge still seems to be a promising alternative to traditional unstructured merge when working with JavaScript.
id UFPE_3cfb4a065ee675072adb765aee2373f5
oai_identifier_str oai:repositorio.ufpe.br:123456789/33477
network_acronym_str UFPE
network_name_str Repositório Institucional da UFPE
repository_id_str
spelling Semistructured merge in JavaScript systemsEngenharia de softwareIntegração de softwareIn a collaborative development environment, programmers often work on simultaneous tasks which involve common software artifacts. As a consequence, when developers merge independent code contributions from different tasks, one might have to deal with conflicting changes, hampering the productivity of such collaborative development. The industry widely uses unstructured merge tools, that rely on textual analysis, to detect and resolve conflicts between developers’ code contributions. On the other hand, semistructured merge tools go further by partially analyzing the syntactic structure and semantics of the code artifacts involved in a conflict. Previous studies compared these merge approaches, showing that semistructured merge is superior to unstructured one with respect to the number of reported conflicts, reducing the integration effort spent by developers, but, also, possibly negatively impacting the correctness of the merging process. However, these studies are based on semistructured merge tools, built on top of the FSTMerge architecture, that support different languages such as Java and C#, but not JavaScript, the most popular programming language for the Web. JavaScript has distinctive features when compared to those languages, which potentially lead to different results of effectiveness in solving conflicts by using the semistructured merge approach. In this work, we implement different versions of semistructured tools— based on FSTMerge— that work with JavaScript, and we conduct a study to compare them to an unstructured tool in order to better understand how semistructured merge works across different languages. During the implementation of tools for JavaScript, we found that the FSTMerge approach is not fully generalizable for programming languages that share similar characteristics with JavaScript; in particular, languages that allow statements at the same syntactic level as commutative and associative declarations. For those languages, further adaptations to the FSTMerge architecture are necessary. Nevertheless, we found evidences that semistructured merge approach for JavaScript reports fewer spurious conflicts than unstructured merge, without significantly impacting the integration correctness. Even though the reduction of reported conflicts is lower than that reported in previous studies for Java and C#, semistructured merge still seems to be a promising alternative to traditional unstructured merge when working with JavaScript.Em um ambiente de desenvolvimento colaborativo, programadores frequentemente trabalham de forma paralela em tarefas de desenvolvimento que envolvem artefatos de software em comum. Como consequência, durante a integração de contribuições de código resultantes de diferentes tarefas, programadores podem ter que lidar com alterações conflitantes, o que afeta a sua produtividade. A indústria usa, em sua maior parte, ferramentas de integração não-estruturadas, que se baseiam somente em uma análise textual, para resolver conflitos entre as contribuições dos programadores. Por sua vez, ferramentas de integração semi-estruturadas tentam ir além, explorando a estrutura sintática do código envolvido em um conflito. Estudos anteriores compararam essas duas abordagens de integração de código e eles obtiveram resultados que mostraram que a integração semiestruturada é superior à não-estruturada no que diz respeito à quantidade de conflitos reportados, o que reduz o esforço de desenvolvedores na integração de código, mas, ao mesmo tempo, também mostraram que a integração semi-estruturada pode ter um impacto negativo na corretude do código produzido. No entanto, esses estudos são baseados em ferramentas de merge semi-estruturada, construídas a partir de uma arquitetura conhecida como FSTMerge, que suportam diferentes linguagens de programação, tais como Java e C#, mas não JavaScript, que é a linguagem de programação mais popular para a Web. JavaScript possui características distintas quando comparada com essas outras linguagens, o que leva a integração semi-estruturada a apresentar resultados diferentes de efetividade na resolução de conflitos. Neste trabalho, nós implementamos diferentes versões de ferramentas semi-estruturadas, baseadas no FSTMerge, para JavaScript e conduzimos um estudo para compará-las com uma ferramenta não estruturada, com o objetivo de entender melhor como a abordagem semi-estruturada se comporta em diferentes linguagens. Durante a implementação dessas ferramentas para JavaScript, nós observamos que a abordagem proposta pelo FSTMerge não é totalmente generalizável para JavaScript e outras linguagens que compartilham características similares; em especial, linguagens que permitem comandos no mesmo nível sintático que declarações comutativas e associativas. Para tais linguagens, é necessário realizar adaptações na arquitetura do FSTMerge. Não obstante, nós obtivemos resultados que indicam que a abordagem semi-estruturada para JavaScript reporta menos conflitos espúrios que a abordagem não-estruturada, sem afetar negativamente a corretude da integração de código. Embora essa redução no número de conflitos reportados seja menor que a obtida em estudos baseados em Java e C#, a abordagem semi-estruturada, ao considerar programas escritos em JavaScript, ainda se mostra uma alternativa promissora às tradicionais ferramentas não-estruturadas.Universidade Federal de PernambucoUFPEBrasilPrograma de Pos Graduacao em Ciencia da ComputacaoSOARES, Sérgio Castelo BrancoBORBA, Paulo Henrique Monteirohttp://lattes.cnpq.br/2961098890138800http://lattes.cnpq.br/6456667887502521TAVARES, Alberto Trindade2019-09-23T17:56:27Z2019-09-23T17:56:27Z2019-02-25info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttps://repositorio.ufpe.br/handle/123456789/33477engAttribution-NonCommercial-NoDerivs 3.0 Brazilhttp://creativecommons.org/licenses/by-nc-nd/3.0/br/info:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFPEinstname:Universidade Federal de Pernambuco (UFPE)instacron:UFPE2019-10-26T03:12:26Zoai:repositorio.ufpe.br:123456789/33477Repositório InstitucionalPUBhttps://repositorio.ufpe.br/oai/requestattena@ufpe.bropendoar:22212019-10-26T03:12:26Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)false
dc.title.none.fl_str_mv Semistructured merge in JavaScript systems
title Semistructured merge in JavaScript systems
spellingShingle Semistructured merge in JavaScript systems
TAVARES, Alberto Trindade
Engenharia de software
Integração de software
title_short Semistructured merge in JavaScript systems
title_full Semistructured merge in JavaScript systems
title_fullStr Semistructured merge in JavaScript systems
title_full_unstemmed Semistructured merge in JavaScript systems
title_sort Semistructured merge in JavaScript systems
author TAVARES, Alberto Trindade
author_facet TAVARES, Alberto Trindade
author_role author
dc.contributor.none.fl_str_mv SOARES, Sérgio Castelo Branco
BORBA, Paulo Henrique Monteiro
http://lattes.cnpq.br/2961098890138800
http://lattes.cnpq.br/6456667887502521
dc.contributor.author.fl_str_mv TAVARES, Alberto Trindade
dc.subject.por.fl_str_mv Engenharia de software
Integração de software
topic Engenharia de software
Integração de software
description In a collaborative development environment, programmers often work on simultaneous tasks which involve common software artifacts. As a consequence, when developers merge independent code contributions from different tasks, one might have to deal with conflicting changes, hampering the productivity of such collaborative development. The industry widely uses unstructured merge tools, that rely on textual analysis, to detect and resolve conflicts between developers’ code contributions. On the other hand, semistructured merge tools go further by partially analyzing the syntactic structure and semantics of the code artifacts involved in a conflict. Previous studies compared these merge approaches, showing that semistructured merge is superior to unstructured one with respect to the number of reported conflicts, reducing the integration effort spent by developers, but, also, possibly negatively impacting the correctness of the merging process. However, these studies are based on semistructured merge tools, built on top of the FSTMerge architecture, that support different languages such as Java and C#, but not JavaScript, the most popular programming language for the Web. JavaScript has distinctive features when compared to those languages, which potentially lead to different results of effectiveness in solving conflicts by using the semistructured merge approach. In this work, we implement different versions of semistructured tools— based on FSTMerge— that work with JavaScript, and we conduct a study to compare them to an unstructured tool in order to better understand how semistructured merge works across different languages. During the implementation of tools for JavaScript, we found that the FSTMerge approach is not fully generalizable for programming languages that share similar characteristics with JavaScript; in particular, languages that allow statements at the same syntactic level as commutative and associative declarations. For those languages, further adaptations to the FSTMerge architecture are necessary. Nevertheless, we found evidences that semistructured merge approach for JavaScript reports fewer spurious conflicts than unstructured merge, without significantly impacting the integration correctness. Even though the reduction of reported conflicts is lower than that reported in previous studies for Java and C#, semistructured merge still seems to be a promising alternative to traditional unstructured merge when working with JavaScript.
publishDate 2019
dc.date.none.fl_str_mv 2019-09-23T17:56:27Z
2019-09-23T17:56:27Z
2019-02-25
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 https://repositorio.ufpe.br/handle/123456789/33477
url https://repositorio.ufpe.br/handle/123456789/33477
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv Attribution-NonCommercial-NoDerivs 3.0 Brazil
http://creativecommons.org/licenses/by-nc-nd/3.0/br/
info:eu-repo/semantics/openAccess
rights_invalid_str_mv Attribution-NonCommercial-NoDerivs 3.0 Brazil
http://creativecommons.org/licenses/by-nc-nd/3.0/br/
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidade Federal de Pernambuco
UFPE
Brasil
Programa de Pos Graduacao em Ciencia da Computacao
publisher.none.fl_str_mv Universidade Federal de Pernambuco
UFPE
Brasil
Programa de Pos Graduacao em Ciencia da Computacao
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFPE
instname:Universidade Federal de Pernambuco (UFPE)
instacron:UFPE
instname_str Universidade Federal de Pernambuco (UFPE)
instacron_str UFPE
institution UFPE
reponame_str Repositório Institucional da UFPE
collection Repositório Institucional da UFPE
repository.name.fl_str_mv Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)
repository.mail.fl_str_mv attena@ufpe.br
_version_ 1856042062544109568