Semistructured merge in JavaScript systems
Autor(a) principal: | |
---|---|
Data de Publicação: | 2019 |
Tipo de documento: | Dissertação |
Idioma: | eng |
Título da fonte: | Repositório Institucional da UFPE |
dARK ID: | ark:/64986/001300000xwjz |
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/33477ark:/64986/001300000xwjzIn 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 |
dc.identifier.dark.fl_str_mv |
ark:/64986/001300000xwjz |
url |
https://repositorio.ufpe.br/handle/123456789/33477 |
identifier_str_mv |
ark:/64986/001300000xwjz |
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_ |
1815172947862618112 |