Comparing integration effort and correctness of different merge approaches in version control systems
Autor(a) principal: | |
---|---|
Data de Publicação: | 2016 |
Tipo de documento: | Dissertação |
Idioma: | eng |
Título da fonte: | Repositório Institucional da UFPE |
dARK ID: | ark:/64986/0013000015gn5 |
Texto Completo: | https://repositorio.ufpe.br/handle/123456789/17923 |
Resumo: | During the integration of code contributions resulting from development tasks, one likely has to deal with conflicting changes and dedicate substantial effort to resolve conflicts. While unstructured merge tools try to automatically resolve part of the conflicts via textual similarity, semistructured tools try to go further by exploiting the syntactic structure of part of the artefacts involved. To understand the impact of the unstructured and semistructured merge approaches on integration effort (Productivity) and correctness of the merging process (Quality), we conduct two empirical studies. In the first one, aiming at increasing the existing body of evidence and assessing results for systems developed under an alternative version control paradigm, we replicate an experiment to compare the unstructured and semistructured approaches with respect to the number of conflicts reported by both merge approaches. We used both semistructured and unstructured merge in a sample 2.5 times bigger than the original study regarding the number of projects and 18 times bigger regarding the number of performed merges, and we compared the occurrence of conflicts. Similar to the original study, we observed that semistructured merge reduces the number of conflicts in 55% of the performed merges of the new sample. Besides that, the observed average conflict reduction of 62% in these merges is far superior than what has been observed before. We also bring new evidence that the use of semistructured merge can reduce the occurrence of conflicting merges by half. In order to verify the frequency of false positives and false negatives arising from the use of these merge approaches, we move forward and we conduct a second empirical study. We compare the unstructured and semistructured merge approaches by reproducing more than 30,000 merges from 50 projects, and collecting evidence about reported conflicts that do not represent interferences between development tasks (false positives), and interferences not reported as conflicts (false negatives). In particular, our assumption is that false positives amount to unnecessary integration effort because developers have to resolve conflicts that actually do not represent interferences. Besides that, false negatives amount to build issues or bugs, negatively impacting software quality and correctness of the merging process. By analyzing such critical factors we hope to guide developers on deciding which approach should be used in practice. Finally, our results show that semistructured merge eliminates a significant part of the false positives reported by unstructured merge, but brings false positives of its own. The overall number of false positives is reduced with semistructured merge, and we argue that the conflicts associated to its false positives are easier to resolve when comparing to the false positives reported by unstructured merge. We also observe that more interferences were missed by unstructured merge and reported by semistructured merge, but we argue that the semistructured merge ones are harder to detect and resolve than the other way around. Finally, our study suggests how a semistructured merge tool could be improved to eliminate the extra false positives and negatives it has in relation to unstructured merge. |
id |
UFPE_80044ede2db2eb05c271700f074c7253 |
---|---|
oai_identifier_str |
oai:repositorio.ufpe.br:123456789/17923 |
network_acronym_str |
UFPE |
network_name_str |
Repositório Institucional da UFPE |
repository_id_str |
2221 |
spelling |
CAVALCANTI, Guilherme José Carvalhohttp://lattes.cnpq.br/2569037604960951BORBA, Paulo Henrique Monteiro2016-09-27T18:16:18Z2016-09-27T18:16:18Z2016-02-29https://repositorio.ufpe.br/handle/123456789/17923ark:/64986/0013000015gn5During the integration of code contributions resulting from development tasks, one likely has to deal with conflicting changes and dedicate substantial effort to resolve conflicts. While unstructured merge tools try to automatically resolve part of the conflicts via textual similarity, semistructured tools try to go further by exploiting the syntactic structure of part of the artefacts involved. To understand the impact of the unstructured and semistructured merge approaches on integration effort (Productivity) and correctness of the merging process (Quality), we conduct two empirical studies. In the first one, aiming at increasing the existing body of evidence and assessing results for systems developed under an alternative version control paradigm, we replicate an experiment to compare the unstructured and semistructured approaches with respect to the number of conflicts reported by both merge approaches. We used both semistructured and unstructured merge in a sample 2.5 times bigger than the original study regarding the number of projects and 18 times bigger regarding the number of performed merges, and we compared the occurrence of conflicts. Similar to the original study, we observed that semistructured merge reduces the number of conflicts in 55% of the performed merges of the new sample. Besides that, the observed average conflict reduction of 62% in these merges is far superior than what has been observed before. We also bring new evidence that the use of semistructured merge can reduce the occurrence of conflicting merges by half. In order to verify the frequency of false positives and false negatives arising from the use of these merge approaches, we move forward and we conduct a second empirical study. We compare the unstructured and semistructured merge approaches by reproducing more than 30,000 merges from 50 projects, and collecting evidence about reported conflicts that do not represent interferences between development tasks (false positives), and interferences not reported as conflicts (false negatives). In particular, our assumption is that false positives amount to unnecessary integration effort because developers have to resolve conflicts that actually do not represent interferences. Besides that, false negatives amount to build issues or bugs, negatively impacting software quality and correctness of the merging process. By analyzing such critical factors we hope to guide developers on deciding which approach should be used in practice. Finally, our results show that semistructured merge eliminates a significant part of the false positives reported by unstructured merge, but brings false positives of its own. The overall number of false positives is reduced with semistructured merge, and we argue that the conflicts associated to its false positives are easier to resolve when comparing to the false positives reported by unstructured merge. We also observe that more interferences were missed by unstructured merge and reported by semistructured merge, but we argue that the semistructured merge ones are harder to detect and resolve than the other way around. Finally, our study suggests how a semistructured merge tool could be improved to eliminate the extra false positives and negatives it has in relation to unstructured merge.FACEPEDurante a integração de contribuições de código resultantes das tarefas de desenvolvimento, frequentemente desenvolvedores têm que lidar com alterações conflitantes e dedicar considerável esforço para resolver conflitos. Enquanto as ferramentas de integração não-estruturadas tentam resolver automaticamente parte dos conflitos através de similaridade textual, ferramentas semiestruturadas tentam ir mais longe, explorando a estrutura sintática de parte dos artefatos envolvidos. Para entender o impacto das abordagens de integração não-estruturada e semiestruturada sobre esforço de integração (Produtividade) e corretude do processo de integração (Qualidade), nós realizamos dois estudos empíricos. No primeiro, com o objetivo de aumentar o atual corpo de evidência e avaliar resultados para sistemas desenvolvidos usando um paradigma de controle de versão alternativo, nós replicamos um experimento para comparar a abordagem não-estruturada e semiestruturada de acordo com o número de conflitos reportados por ambas as abordagens. Nós usamos tanto a integração semiestruturada quanto a não-estruturada em uma amostra 2,5 vezes maior do que a do estudo original em relação ao número de projetos e 18 vezes maior em relação ao número de integrações realizadas, e comparamos a ocorrência de conflitos. Semelhante ao estudo original, observamos que a integração semiestruturada reduz o número de conflitos em 55% das integrações da nova amostra. Além disso, a redução de conflitos média observada de 62% nestas integrações é muito superior à observada anteriormente. Nós também trazemos nova evidência de que o uso da abordagem semiestruturada pode reduzir a ocorrência de integrações com conflitos pela metade. Com o intuito de verificar a frequência de falsos positivos e falsos negativos originados do uso dessas abordagens, nós seguimos adiante e conduzimos um segundo estudo empírico. Nós comparamos as abordagens reproduzindo mais de 30.000 integrações de 50 projetos, coletando evidência sobre os conflitos reportados que não representam interferências entre as tarefas de desenvolvimento (falsos positivos), e interferências não reportadas como conflitos (falsos negativos). Em particular, a nossa suposição é de que falsos positivos denotam esforço desnecessário de integração porque os desenvolvedores têm que resolver conflitos que, na realidade, não representam interferências. Além disso, falsos negativos denotam problemas de build ou bugs, impactando negativamente a qualidade do software e corretude do processo de integração. Ao analisar esses fatores críticos, esperamos orientar os desenvolvedores em decidir qual abordagem deve ser usada na prática. Finalmente, nossos resultados mostram que a abordagem semiestruturada elimina uma parte significativa dos falsos positivos reportados pela abordagem não-estruturada, mas traz falsos positivos próprios. O número global de falsos positivos é reduzido com a integração semiestruturada, e nós argumentamos que os conflitos associados aos seus falsos positivos são mais fáceis de resolver quando comparados aos falsos positivos reportados pela abordagem não-estruturada. Observamos, também, que mais interferências deixaram de ser detectadas pela abordagem não-estruturada, mas foram detectadas pela semiestruturada. No entanto, nós acreditamos que as interferências não detectadas pela abordagem semiestruturada são mais difíceis de detectar e resolver. Por fim, nosso estudo sugere como uma ferramenta de integração semiestruturada poderia ser melhorada para eliminar os falsos positivos e falsos negativos adicionados que possui em relação à não-estruturada.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/openAccessDesenvolvimento colaborativo. Integração de software. Integração semiestruturada. Sistemas de controle de versões. Estudos empíricosCollaborative development. Software merging. Semistructured merge. Version control systems. Empirical studiesComparing integration effort and correctness of different merge approaches in version control systemsinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesismestradoreponame:Repositório Institucional da UFPEinstname:Universidade Federal de Pernambuco (UFPE)instacron:UFPEORIGINALdissertação_gjcc.pdfdissertação_gjcc.pdfapplication/pdf1929523https://repositorio.ufpe.br/bitstream/123456789/17923/1/disserta%c3%a7%c3%a3o_gjcc.pdf59a910a15e3537942754d106de378d19MD51CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-81232https://repositorio.ufpe.br/bitstream/123456789/17923/2/license_rdf66e71c371cc565284e70f40736c94386MD52LICENSElicense.txtlicense.txttext/plain; charset=utf-82311https://repositorio.ufpe.br/bitstream/123456789/17923/3/license.txt4b8a02c7f2818eaf00dcf2260dd5eb08MD53TEXTdissertação_gjcc.pdf.txtdissertação_gjcc.pdf.txtExtracted texttext/plain196289https://repositorio.ufpe.br/bitstream/123456789/17923/4/disserta%c3%a7%c3%a3o_gjcc.pdf.txtfc9630bfa7bc0ce31f390b2122755448MD54THUMBNAILdissertação_gjcc.pdf.jpgdissertação_gjcc.pdf.jpgGenerated Thumbnailimage/jpeg1349https://repositorio.ufpe.br/bitstream/123456789/17923/5/disserta%c3%a7%c3%a3o_gjcc.pdf.jpg6026555cf2ff9e22227ad42c32b58e0cMD55123456789/179232019-10-25 02:14:12.595oai:repositorio.ufpe.br:123456789/17923TGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKClRvZG8gZGVwb3NpdGFudGUgZGUgbWF0ZXJpYWwgbm8gUmVwb3NpdMOzcmlvIEluc3RpdHVjaW9uYWwgKFJJKSBkZXZlIGNvbmNlZGVyLCDDoCBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBQZXJuYW1idWNvIChVRlBFKSwgdW1hIExpY2Vuw6dhIGRlIERpc3RyaWJ1acOnw6NvIE7Do28gRXhjbHVzaXZhIHBhcmEgbWFudGVyIGUgdG9ybmFyIGFjZXNzw612ZWlzIG9zIHNldXMgZG9jdW1lbnRvcywgZW0gZm9ybWF0byBkaWdpdGFsLCBuZXN0ZSByZXBvc2l0w7NyaW8uCgpDb20gYSBjb25jZXNzw6NvIGRlc3RhIGxpY2Vuw6dhIG7Do28gZXhjbHVzaXZhLCBvIGRlcG9zaXRhbnRlIG1hbnTDqW0gdG9kb3Mgb3MgZGlyZWl0b3MgZGUgYXV0b3IuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKTGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKCkFvIGNvbmNvcmRhciBjb20gZXN0YSBsaWNlbsOnYSBlIGFjZWl0w6EtbGEsIHZvY8OqIChhdXRvciBvdSBkZXRlbnRvciBkb3MgZGlyZWl0b3MgYXV0b3JhaXMpOgoKYSkgRGVjbGFyYSBxdWUgY29uaGVjZSBhIHBvbMOtdGljYSBkZSBjb3B5cmlnaHQgZGEgZWRpdG9yYSBkbyBzZXUgZG9jdW1lbnRvOwpiKSBEZWNsYXJhIHF1ZSBjb25oZWNlIGUgYWNlaXRhIGFzIERpcmV0cml6ZXMgcGFyYSBvIFJlcG9zaXTDs3JpbyBJbnN0aXR1Y2lvbmFsIGRhIFVGUEU7CmMpIENvbmNlZGUgw6AgVUZQRSBvIGRpcmVpdG8gbsOjbyBleGNsdXNpdm8gZGUgYXJxdWl2YXIsIHJlcHJvZHV6aXIsIGNvbnZlcnRlciAoY29tbyBkZWZpbmlkbyBhIHNlZ3VpciksIGNvbXVuaWNhciBlL291IGRpc3RyaWJ1aXIsIG5vIFJJLCBvIGRvY3VtZW50byBlbnRyZWd1ZSAoaW5jbHVpbmRvIG8gcmVzdW1vL2Fic3RyYWN0KSBlbSBmb3JtYXRvIGRpZ2l0YWwgb3UgcG9yIG91dHJvIG1laW87CmQpIERlY2xhcmEgcXVlIGF1dG9yaXphIGEgVUZQRSBhIGFycXVpdmFyIG1haXMgZGUgdW1hIGPDs3BpYSBkZXN0ZSBkb2N1bWVudG8gZSBjb252ZXJ0w6otbG8sIHNlbSBhbHRlcmFyIG8gc2V1IGNvbnRlw7pkbywgcGFyYSBxdWFscXVlciBmb3JtYXRvIGRlIGZpY2hlaXJvLCBtZWlvIG91IHN1cG9ydGUsIHBhcmEgZWZlaXRvcyBkZSBzZWd1cmFuw6dhLCBwcmVzZXJ2YcOnw6NvIChiYWNrdXApIGUgYWNlc3NvOwplKSBEZWNsYXJhIHF1ZSBvIGRvY3VtZW50byBzdWJtZXRpZG8gw6kgbyBzZXUgdHJhYmFsaG8gb3JpZ2luYWwgZSBxdWUgZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBhIHRlcmNlaXJvcyBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2Ugb3MgZGlyZWl0b3MgZGUgb3V0cmEgcGVzc29hIG91IGVudGlkYWRlOwpmKSBEZWNsYXJhIHF1ZSwgbm8gY2FzbyBkbyBkb2N1bWVudG8gc3VibWV0aWRvIGNvbnRlciBtYXRlcmlhbCBkbyBxdWFsIG7Do28gZGV0w6ltIG9zIGRpcmVpdG9zIGRlCmF1dG9yLCBvYnRldmUgYSBhdXRvcml6YcOnw6NvIGlycmVzdHJpdGEgZG8gcmVzcGVjdGl2byBkZXRlbnRvciBkZXNzZXMgZGlyZWl0b3MgcGFyYSBjZWRlciDDoApVRlBFIG9zIGRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgTGljZW7Dp2EgZSBhdXRvcml6YXIgYSB1bml2ZXJzaWRhZGUgYSB1dGlsaXrDoS1sb3MgbGVnYWxtZW50ZS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBlc3NlIG1hdGVyaWFsIGN1am9zIGRpcmVpdG9zIHPDo28gZGUgdGVyY2Vpcm9zIGVzdMOhIGNsYXJhbWVudGUgaWRlbnRpZmljYWRvIGUgcmVjb25oZWNpZG8gbm8gdGV4dG8gb3UgY29udGXDumRvIGRvIGRvY3VtZW50byBlbnRyZWd1ZTsKZykgU2UgbyBkb2N1bWVudG8gZW50cmVndWUgw6kgYmFzZWFkbyBlbSB0cmFiYWxobyBmaW5hbmNpYWRvIG91IGFwb2lhZG8gcG9yIG91dHJhIGluc3RpdHVpw6fDo28gcXVlIG7Do28gYSBVRlBFLMKgZGVjbGFyYSBxdWUgY3VtcHJpdSBxdWFpc3F1ZXIgb2JyaWdhw6fDtWVzIGV4aWdpZGFzIHBlbG8gcmVzcGVjdGl2byBjb250cmF0byBvdSBhY29yZG8uCgpBIFVGUEUgaWRlbnRpZmljYXLDoSBjbGFyYW1lbnRlIG8ocykgbm9tZShzKSBkbyhzKSBhdXRvciAoZXMpIGRvcyBkaXJlaXRvcyBkbyBkb2N1bWVudG8gZW50cmVndWUgZSBuw6NvIGZhcsOhIHF1YWxxdWVyIGFsdGVyYcOnw6NvLCBwYXJhIGFsw6ltIGRvIHByZXZpc3RvIG5hIGFsw61uZWEgYykuCg==Repositório InstitucionalPUBhttps://repositorio.ufpe.br/oai/requestattena@ufpe.bropendoar:22212019-10-25T05:14:12Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)false |
dc.title.pt_BR.fl_str_mv |
Comparing integration effort and correctness of different merge approaches in version control systems |
title |
Comparing integration effort and correctness of different merge approaches in version control systems |
spellingShingle |
Comparing integration effort and correctness of different merge approaches in version control systems CAVALCANTI, Guilherme José Carvalho Desenvolvimento colaborativo. Integração de software. Integração semiestruturada. Sistemas de controle de versões. Estudos empíricos Collaborative development. Software merging. Semistructured merge. Version control systems. Empirical studies |
title_short |
Comparing integration effort and correctness of different merge approaches in version control systems |
title_full |
Comparing integration effort and correctness of different merge approaches in version control systems |
title_fullStr |
Comparing integration effort and correctness of different merge approaches in version control systems |
title_full_unstemmed |
Comparing integration effort and correctness of different merge approaches in version control systems |
title_sort |
Comparing integration effort and correctness of different merge approaches in version control systems |
author |
CAVALCANTI, Guilherme José Carvalho |
author_facet |
CAVALCANTI, Guilherme José Carvalho |
author_role |
author |
dc.contributor.authorLattes.pt_BR.fl_str_mv |
http://lattes.cnpq.br/2569037604960951 |
dc.contributor.author.fl_str_mv |
CAVALCANTI, Guilherme José Carvalho |
dc.contributor.advisor1.fl_str_mv |
BORBA, Paulo Henrique Monteiro |
contributor_str_mv |
BORBA, Paulo Henrique Monteiro |
dc.subject.por.fl_str_mv |
Desenvolvimento colaborativo. Integração de software. Integração semiestruturada. Sistemas de controle de versões. Estudos empíricos Collaborative development. Software merging. Semistructured merge. Version control systems. Empirical studies |
topic |
Desenvolvimento colaborativo. Integração de software. Integração semiestruturada. Sistemas de controle de versões. Estudos empíricos Collaborative development. Software merging. Semistructured merge. Version control systems. Empirical studies |
description |
During the integration of code contributions resulting from development tasks, one likely has to deal with conflicting changes and dedicate substantial effort to resolve conflicts. While unstructured merge tools try to automatically resolve part of the conflicts via textual similarity, semistructured tools try to go further by exploiting the syntactic structure of part of the artefacts involved. To understand the impact of the unstructured and semistructured merge approaches on integration effort (Productivity) and correctness of the merging process (Quality), we conduct two empirical studies. In the first one, aiming at increasing the existing body of evidence and assessing results for systems developed under an alternative version control paradigm, we replicate an experiment to compare the unstructured and semistructured approaches with respect to the number of conflicts reported by both merge approaches. We used both semistructured and unstructured merge in a sample 2.5 times bigger than the original study regarding the number of projects and 18 times bigger regarding the number of performed merges, and we compared the occurrence of conflicts. Similar to the original study, we observed that semistructured merge reduces the number of conflicts in 55% of the performed merges of the new sample. Besides that, the observed average conflict reduction of 62% in these merges is far superior than what has been observed before. We also bring new evidence that the use of semistructured merge can reduce the occurrence of conflicting merges by half. In order to verify the frequency of false positives and false negatives arising from the use of these merge approaches, we move forward and we conduct a second empirical study. We compare the unstructured and semistructured merge approaches by reproducing more than 30,000 merges from 50 projects, and collecting evidence about reported conflicts that do not represent interferences between development tasks (false positives), and interferences not reported as conflicts (false negatives). In particular, our assumption is that false positives amount to unnecessary integration effort because developers have to resolve conflicts that actually do not represent interferences. Besides that, false negatives amount to build issues or bugs, negatively impacting software quality and correctness of the merging process. By analyzing such critical factors we hope to guide developers on deciding which approach should be used in practice. Finally, our results show that semistructured merge eliminates a significant part of the false positives reported by unstructured merge, but brings false positives of its own. The overall number of false positives is reduced with semistructured merge, and we argue that the conflicts associated to its false positives are easier to resolve when comparing to the false positives reported by unstructured merge. We also observe that more interferences were missed by unstructured merge and reported by semistructured merge, but we argue that the semistructured merge ones are harder to detect and resolve than the other way around. Finally, our study suggests how a semistructured merge tool could be improved to eliminate the extra false positives and negatives it has in relation to unstructured merge. |
publishDate |
2016 |
dc.date.accessioned.fl_str_mv |
2016-09-27T18:16:18Z |
dc.date.available.fl_str_mv |
2016-09-27T18:16:18Z |
dc.date.issued.fl_str_mv |
2016-02-29 |
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/17923 |
dc.identifier.dark.fl_str_mv |
ark:/64986/0013000015gn5 |
url |
https://repositorio.ufpe.br/handle/123456789/17923 |
identifier_str_mv |
ark:/64986/0013000015gn5 |
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/17923/1/disserta%c3%a7%c3%a3o_gjcc.pdf https://repositorio.ufpe.br/bitstream/123456789/17923/2/license_rdf https://repositorio.ufpe.br/bitstream/123456789/17923/3/license.txt https://repositorio.ufpe.br/bitstream/123456789/17923/4/disserta%c3%a7%c3%a3o_gjcc.pdf.txt https://repositorio.ufpe.br/bitstream/123456789/17923/5/disserta%c3%a7%c3%a3o_gjcc.pdf.jpg |
bitstream.checksum.fl_str_mv |
59a910a15e3537942754d106de378d19 66e71c371cc565284e70f40736c94386 4b8a02c7f2818eaf00dcf2260dd5eb08 fc9630bfa7bc0ce31f390b2122755448 6026555cf2ff9e22227ad42c32b58e0c |
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_ |
1815173010065195008 |