Semistructured merge in JavaScript systems

Detalhes bibliográficos
Autor(a) principal: TAVARES, Alberto Trindade
Data de Publicação: 2019
Tipo de documento: Dissertação
Idioma: eng
Título da fonte: Repositório Institucional da UFPE
Texto Completo: 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 2221
spelling TAVARES, Alberto Trindadehttp://lattes.cnpq.br/2961098890138800http://lattes.cnpq.br/6456667887502521SOARES, Sérgio Castelo BrancoBORBA, Paulo Henrique Monteiro2019-09-23T17:56:27Z2019-09-23T17:56:27Z2019-02-25https://repositorio.ufpe.br/handle/123456789/33477In 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.engUniversidade Federal de PernambucoPrograma de Pos Graduacao em Ciencia da ComputacaoUFPEBrasilAttribution-NonCommercial-NoDerivs 3.0 Brazilhttp://creativecommons.org/licenses/by-nc-nd/3.0/br/info:eu-repo/semantics/openAccessEngenharia de softwareIntegração de softwareSemistructured merge in JavaScript systemsinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesismestradoreponame:Repositório Institucional da UFPEinstname:Universidade Federal de Pernambuco (UFPE)instacron:UFPETHUMBNAILDISSERTAÇÃO Alberto Trindade Tavares.pdf.jpgDISSERTAÇÃO Alberto Trindade Tavares.pdf.jpgGenerated Thumbnailimage/jpeg1222https://repositorio.ufpe.br/bitstream/123456789/33477/5/DISSERTA%c3%87%c3%83O%20Alberto%20Trindade%20Tavares.pdf.jpg255e055eb91d54680397082caea95b59MD55ORIGINALDISSERTAÇÃO Alberto Trindade Tavares.pdfDISSERTAÇÃO Alberto Trindade Tavares.pdfapplication/pdf4299786https://repositorio.ufpe.br/bitstream/123456789/33477/1/DISSERTA%c3%87%c3%83O%20Alberto%20Trindade%20Tavares.pdf34b91511670413c3e9473ba4480d9126MD51CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8811https://repositorio.ufpe.br/bitstream/123456789/33477/2/license_rdfe39d27027a6cc9cb039ad269a5db8e34MD52LICENSElicense.txtlicense.txttext/plain; charset=utf-82310https://repositorio.ufpe.br/bitstream/123456789/33477/3/license.txtbd573a5ca8288eb7272482765f819534MD53TEXTDISSERTAÇÃO Alberto Trindade Tavares.pdf.txtDISSERTAÇÃO Alberto Trindade Tavares.pdf.txtExtracted texttext/plain227517https://repositorio.ufpe.br/bitstream/123456789/33477/4/DISSERTA%c3%87%c3%83O%20Alberto%20Trindade%20Tavares.pdf.txtd76be3f0eb815f268ea721ccbe8d92ccMD54123456789/334772019-10-26 00:12:26.462oai:repositorio.ufpe.br:123456789/33477TGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKClRvZG8gZGVwb3NpdGFudGUgZGUgbWF0ZXJpYWwgbm8gUmVwb3NpdMOzcmlvIEluc3RpdHVjaW9uYWwgKFJJKSBkZXZlIGNvbmNlZGVyLCDDoCBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBQZXJuYW1idWNvIChVRlBFKSwgdW1hIExpY2Vuw6dhIGRlIERpc3RyaWJ1acOnw6NvIE7Do28gRXhjbHVzaXZhIHBhcmEgbWFudGVyIGUgdG9ybmFyIGFjZXNzw612ZWlzIG9zIHNldXMgZG9jdW1lbnRvcywgZW0gZm9ybWF0byBkaWdpdGFsLCBuZXN0ZSByZXBvc2l0w7NyaW8uCgpDb20gYSBjb25jZXNzw6NvIGRlc3RhIGxpY2Vuw6dhIG7Do28gZXhjbHVzaXZhLCBvIGRlcG9zaXRhbnRlIG1hbnTDqW0gdG9kb3Mgb3MgZGlyZWl0b3MgZGUgYXV0b3IuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKTGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKCkFvIGNvbmNvcmRhciBjb20gZXN0YSBsaWNlbsOnYSBlIGFjZWl0w6EtbGEsIHZvY8OqIChhdXRvciBvdSBkZXRlbnRvciBkb3MgZGlyZWl0b3MgYXV0b3JhaXMpOgoKYSkgRGVjbGFyYSBxdWUgY29uaGVjZSBhIHBvbMOtdGljYSBkZSBjb3B5cmlnaHQgZGEgZWRpdG9yYSBkbyBzZXUgZG9jdW1lbnRvOwpiKSBEZWNsYXJhIHF1ZSBjb25oZWNlIGUgYWNlaXRhIGFzIERpcmV0cml6ZXMgcGFyYSBvIFJlcG9zaXTDs3JpbyBJbnN0aXR1Y2lvbmFsIGRhIFVGUEU7CmMpIENvbmNlZGUgw6AgVUZQRSBvIGRpcmVpdG8gbsOjbyBleGNsdXNpdm8gZGUgYXJxdWl2YXIsIHJlcHJvZHV6aXIsIGNvbnZlcnRlciAoY29tbyBkZWZpbmlkbyBhIHNlZ3VpciksIGNvbXVuaWNhciBlL291IGRpc3RyaWJ1aXIsIG5vIFJJLCBvIGRvY3VtZW50byBlbnRyZWd1ZSAoaW5jbHVpbmRvIG8gcmVzdW1vL2Fic3RyYWN0KSBlbSBmb3JtYXRvIGRpZ2l0YWwgb3UgcG9yIG91dHJvIG1laW87CmQpIERlY2xhcmEgcXVlIGF1dG9yaXphIGEgVUZQRSBhIGFycXVpdmFyIG1haXMgZGUgdW1hIGPDs3BpYSBkZXN0ZSBkb2N1bWVudG8gZSBjb252ZXJ0w6otbG8sIHNlbSBhbHRlcmFyIG8gc2V1IGNvbnRlw7pkbywgcGFyYSBxdWFscXVlciBmb3JtYXRvIGRlIGZpY2hlaXJvLCBtZWlvIG91IHN1cG9ydGUsIHBhcmEgZWZlaXRvcyBkZSBzZWd1cmFuw6dhLCBwcmVzZXJ2YcOnw6NvIChiYWNrdXApIGUgYWNlc3NvOwplKSBEZWNsYXJhIHF1ZSBvIGRvY3VtZW50byBzdWJtZXRpZG8gw6kgbyBzZXUgdHJhYmFsaG8gb3JpZ2luYWwgZSBxdWUgZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBhIHRlcmNlaXJvcyBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2Ugb3MgZGlyZWl0b3MgZGUgb3V0cmEgcGVzc29hIG91IGVudGlkYWRlOwpmKSBEZWNsYXJhIHF1ZSwgbm8gY2FzbyBkbyBkb2N1bWVudG8gc3VibWV0aWRvIGNvbnRlciBtYXRlcmlhbCBkbyBxdWFsIG7Do28gZGV0w6ltIG9zIGRpcmVpdG9zIGRlCmF1dG9yLCBvYnRldmUgYSBhdXRvcml6YcOnw6NvIGlycmVzdHJpdGEgZG8gcmVzcGVjdGl2byBkZXRlbnRvciBkZXNzZXMgZGlyZWl0b3MgcGFyYSBjZWRlciDDoApVRlBFIG9zIGRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgTGljZW7Dp2EgZSBhdXRvcml6YXIgYSB1bml2ZXJzaWRhZGUgYSB1dGlsaXrDoS1sb3MgbGVnYWxtZW50ZS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBlc3NlIG1hdGVyaWFsIGN1am9zIGRpcmVpdG9zIHPDo28gZGUgdGVyY2Vpcm9zIGVzdMOhIGNsYXJhbWVudGUgaWRlbnRpZmljYWRvIGUgcmVjb25oZWNpZG8gbm8gdGV4dG8gb3UgY29udGXDumRvIGRvIGRvY3VtZW50byBlbnRyZWd1ZTsKZykgU2UgbyBkb2N1bWVudG8gZW50cmVndWUgw6kgYmFzZWFkbyBlbSB0cmFiYWxobyBmaW5hbmNpYWRvIG91IGFwb2lhZG8gcG9yIG91dHJhIGluc3RpdHVpw6fDo28gcXVlIG7Do28gYSBVRlBFLCBkZWNsYXJhIHF1ZSBjdW1wcml1IHF1YWlzcXVlciBvYnJpZ2HDp8O1ZXMgZXhpZ2lkYXMgcGVsbyByZXNwZWN0aXZvIGNvbnRyYXRvIG91IGFjb3Jkby4KCkEgVUZQRSBpZGVudGlmaWNhcsOhIGNsYXJhbWVudGUgbyhzKSBub21lKHMpIGRvKHMpIGF1dG9yIChlcykgZG9zIGRpcmVpdG9zIGRvIGRvY3VtZW50byBlbnRyZWd1ZSBlIG7Do28gZmFyw6EgcXVhbHF1ZXIgYWx0ZXJhw6fDo28sIHBhcmEgYWzDqW0gZG8gcHJldmlzdG8gbmEgYWzDrW5lYSBjKS4KRepositó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.pt_BR.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.authorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/2961098890138800
dc.contributor.advisorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/6456667887502521
dc.contributor.author.fl_str_mv TAVARES, Alberto Trindade
dc.contributor.advisor1.fl_str_mv SOARES, Sérgio Castelo Branco
dc.contributor.advisor-co1.fl_str_mv BORBA, Paulo Henrique Monteiro
contributor_str_mv SOARES, Sérgio Castelo Branco
BORBA, Paulo Henrique Monteiro
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.accessioned.fl_str_mv 2019-09-23T17:56:27Z
dc.date.available.fl_str_mv 2019-09-23T17:56:27Z
dc.date.issued.fl_str_mv 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.publisher.none.fl_str_mv Universidade Federal de Pernambuco
dc.publisher.program.fl_str_mv Programa de Pos Graduacao em Ciencia da Computacao
dc.publisher.initials.fl_str_mv UFPE
dc.publisher.country.fl_str_mv Brasil
publisher.none.fl_str_mv Universidade Federal de Pernambuco
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
bitstream.url.fl_str_mv https://repositorio.ufpe.br/bitstream/123456789/33477/5/DISSERTA%c3%87%c3%83O%20Alberto%20Trindade%20Tavares.pdf.jpg
https://repositorio.ufpe.br/bitstream/123456789/33477/1/DISSERTA%c3%87%c3%83O%20Alberto%20Trindade%20Tavares.pdf
https://repositorio.ufpe.br/bitstream/123456789/33477/2/license_rdf
https://repositorio.ufpe.br/bitstream/123456789/33477/3/license.txt
https://repositorio.ufpe.br/bitstream/123456789/33477/4/DISSERTA%c3%87%c3%83O%20Alberto%20Trindade%20Tavares.pdf.txt
bitstream.checksum.fl_str_mv 255e055eb91d54680397082caea95b59
34b91511670413c3e9473ba4480d9126
e39d27027a6cc9cb039ad269a5db8e34
bd573a5ca8288eb7272482765f819534
d76be3f0eb815f268ea721ccbe8d92cc
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)
repository.mail.fl_str_mv attena@ufpe.br
_version_ 1802310841841745920