Learning syntactic program transformations from examples.
| Ano de defesa: | 2018 |
|---|---|
| Autor(a) principal: | |
| Orientador(a): | , |
| Banca de defesa: | |
| Tipo de documento: | Tese |
| Tipo de acesso: | Acesso aberto |
| Idioma: | eng |
| Instituição de defesa: |
Universidade Federal de Campina Grande
|
| Programa de Pós-Graduação: |
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
|
| Departamento: |
Centro de Engenharia Elétrica e Informática - CEEI
|
| País: |
Brasil
|
| Palavras-chave em Português: | |
| Área do conhecimento CNPq: | |
| Link de acesso: | https://dspace.sti.ufcg.edu.br/handle/riufcg/1712 |
Resumo: | Ferramentas como ErrorProne, ReSharper e PMD ajudam os programadores a detectar e/ou remover automaticamente vários padrões de códigos suspeitos, possíveis bugs ou estilo de código incorreto. Essas regras podem ser expressas como quick fixes que detectam e reescrevem padrões de código indesejados. No entanto, estender seus catálogos de regras é complexo e demorado. Nesse contexto, os programadores podem querer executar uma edição repetitiva automaticamente para melhorar sua produtividade, mas as ferramentas disponíveis não a suportam. Além disso, os projetistas de ferramentas podem querer identificar regras úteis para automatizarem. Fenômeno semelhante ocorre em sistemas de tutoria inteligente, onde os instrutores escrevem transformações complicadas que descrevem "falhas comuns" para consertar submissões semelhantes de estudantes a tarefas de programação. Nesta tese, apresentamos duas técnicas. REFAZER, uma técnica para gerar automaticamente transformações de programa. Também propomos REVISAR, nossa técnica para aprender quick fixes em repositórios. Nós instanciamos e avaliamos REFAZER em dois domínios. Primeiro, dados exemplos de edições de código dos alunos para corrigir submissões de tarefas incorretas, aprendemos transformações para corrigir envios de outros alunos com falhas semelhantes. Em nossa avaliação em quatro tarefas de programação de setecentos e vinte alunos, nossa técnica ajudou a corrigir submissões incorretas para 87% dos alunos. No segundo domínio, usamos edições de código repetitivas aplicadas por desenvolvedores ao mesmo projeto para sintetizar a transformação de programa que aplica essas edições a outros locais no código. Em nossa avaliação em 56 cenários de edições repetitivas de três grandes projetos de código aberto em C#, REFAZER aprendeu a transformação pretendida em 84% dos casos e usou apenas 2.9 exemplos em média. Para avaliar REVISAR, selecionamos 9 projetos e REVISAR aprendeu 920 transformações entre projetos. Atuamos como projetistas de ferramentas, inspecionamos as 381 transformações mais comuns e classificamos 32 como quick fixes. Para avaliar a qualidade das quick fixes, realizamos uma survey com 164 programadores de 124 projetos, com os 10 quick fixes que apareceram em mais projetos. Os programadores suportaram 9 (90%) quick fixes. Enviamos 20 pull requests aplicando quick fixes em 9 projetos e, no momento da escrita, os programadores apoiaram 17 (85%) e aceitaram 10 delas. |
| id |
UFCG_e38fbab7f8812bad463c3d1c350f144c |
|---|---|
| oai_identifier_str |
oai:dspace.sti.ufcg.edu.br:riufcg/1712 |
| network_acronym_str |
UFCG |
| network_name_str |
Biblioteca Digital de Teses e Dissertações da UFCG |
| repository_id_str |
|
| spelling |
SOARES, Gustavo Araújo.SOARES, G.http://lattes.cnpq.br/6215732726947926GHEYI, Rohit.GHEYI, R.http://lattes.cnpq.br/2931270888717344SOUSA, R. R.http://lattes.cnpq.br/7392223184852549SOUSA, Reudismam Rolim de.Ferramentas como ErrorProne, ReSharper e PMD ajudam os programadores a detectar e/ou remover automaticamente vários padrões de códigos suspeitos, possíveis bugs ou estilo de código incorreto. Essas regras podem ser expressas como quick fixes que detectam e reescrevem padrões de código indesejados. No entanto, estender seus catálogos de regras é complexo e demorado. Nesse contexto, os programadores podem querer executar uma edição repetitiva automaticamente para melhorar sua produtividade, mas as ferramentas disponíveis não a suportam. Além disso, os projetistas de ferramentas podem querer identificar regras úteis para automatizarem. Fenômeno semelhante ocorre em sistemas de tutoria inteligente, onde os instrutores escrevem transformações complicadas que descrevem "falhas comuns" para consertar submissões semelhantes de estudantes a tarefas de programação. Nesta tese, apresentamos duas técnicas. REFAZER, uma técnica para gerar automaticamente transformações de programa. Também propomos REVISAR, nossa técnica para aprender quick fixes em repositórios. Nós instanciamos e avaliamos REFAZER em dois domínios. Primeiro, dados exemplos de edições de código dos alunos para corrigir submissões de tarefas incorretas, aprendemos transformações para corrigir envios de outros alunos com falhas semelhantes. Em nossa avaliação em quatro tarefas de programação de setecentos e vinte alunos, nossa técnica ajudou a corrigir submissões incorretas para 87% dos alunos. No segundo domínio, usamos edições de código repetitivas aplicadas por desenvolvedores ao mesmo projeto para sintetizar a transformação de programa que aplica essas edições a outros locais no código. Em nossa avaliação em 56 cenários de edições repetitivas de três grandes projetos de código aberto em C#, REFAZER aprendeu a transformação pretendida em 84% dos casos e usou apenas 2.9 exemplos em média. Para avaliar REVISAR, selecionamos 9 projetos e REVISAR aprendeu 920 transformações entre projetos. Atuamos como projetistas de ferramentas, inspecionamos as 381 transformações mais comuns e classificamos 32 como quick fixes. Para avaliar a qualidade das quick fixes, realizamos uma survey com 164 programadores de 124 projetos, com os 10 quick fixes que apareceram em mais projetos. Os programadores suportaram 9 (90%) quick fixes. Enviamos 20 pull requests aplicando quick fixes em 9 projetos e, no momento da escrita, os programadores apoiaram 17 (85%) e aceitaram 10 delas.Tools such as ErrorProne, ReSharper, and PMD help programmers by automatically detecting and/or removing several suspicious code patterns, potential bugs, or instances of bad code style. These rules could be expressed as quick fixes that detect and rewrite unwanted code patterns. However, extending their catalogs of rules is complex and time-consuming. In this context, programmers may want to perform a repetitive edit into their code automatically to improve their productivity, but available tools do not support it. In addition, tool designers may want to identify rules helpful to be automated. A similar phenomenon appears in intelligent tutoring systems where instructors have to write cumbersome code transformations that describe “common faults” to fix similar student submissions to programming assignments. In this thesis, we present two techniques. REFAZER, a technique for automatically generating program transformations. We also propose REVISAR, our technique for learning quick fixes from code repositories. We instantiate and evaluate REFAZER in two domains. First, given examples of code edits used by students to fix incorrect programming assignment submissions, we learn program transformations that can fix other students’ submissions with similar faults. In our evaluation conducted on four programming tasks performed by seven hundred and twenty students, our technique helped to fix incorrect submissions for 87% of the students. In the second domain, we use repetitive code edits applied by developers to the same project to synthesize a program transformation that applies these edits to other locations in the code. In our evaluation conducted on 56 scenarios of repetitive edits taken from three large C# open-source projects, REFAZER learns the intended program transformation in 84% of the cases and using only 2.9 examples on average. To evaluate REVISAR, we select 9 projects, and REVISAR learns 920 transformations across projects. We acted as tool designers, inspected the most common 381 transformations and classified 32 as quick fixes. To assess the quality of the quick fixes, we performed a survey with 164 programmers from 124 projects, showing the 10 quick fixes that appeared in most projects. Programmers supported 9 (90%) quick fixes. We submitted 20 pull requests applying our quick fixes to 9 projects and, at the time of the writing, programmers supported 17 (85%) and accepted 10 of them.Submitted by Lucienne Costa (lucienneferreira@ufcg.edu.br) on 2018-09-13T20:44:41Z No. of bitstreams: 1 REUDISMAM ROLIM DE SOUSA – TESE (PPGCC) 2018.pdf: 4395945 bytes, checksum: 2241c8bad2cdc8eda86eb53c2e64c227 (MD5)Made available in DSpace on 2018-09-13T20:44:41Z (GMT). No. of bitstreams: 1 REUDISMAM ROLIM DE SOUSA – TESE (PPGCC) 2018.pdf: 4395945 bytes, checksum: 2241c8bad2cdc8eda86eb53c2e64c227 (MD5) Previous issue date: 2018-08-02CapesUniversidade Federal de Campina GrandePÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃOUFCGBrasilCentro de Engenharia Elétrica e Informática - CEEICiência da ComputaçãoProgram TransformationQuick FixProgram SynthesisTotoring SystemsRefactoringLearning syntactic program transformations from examples.2018-08-022018-09-13T20:44:41Z2018-09-132018-09-13T20:44:41Zhttps://dspace.sti.ufcg.edu.br/handle/riufcg/1712SOUSA, R. R. de. Learning syntactic program transformations from examples. 2018. 159 f. Tese (Doutorado em Ciência da Computação) – Programa de Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2018. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/1712info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisenginfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFCGinstname:Universidade Federal de Campina Grande (UFCG)instacron:UFCGTEXTREUDISMAM ROLIM DE SOUSA – TESE (PPGCC) 2018.pdf.txtREUDISMAM ROLIM DE SOUSA – TESE (PPGCC) 2018.pdf.txttext/plain316927https://dspace.sti.ufcg.edu.br/bitstream/riufcg/1712/4/REUDISMAM+ROLIM+DE+SOUSA+%E2%80%93+TESE+%28PPGCC%29+2018.pdf.txt524390917960e9bbedf343675ecbf5fcMD54ORIGINALREUDISMAM ROLIM DE SOUSA – TESE (PPGCC) 2018.pdfREUDISMAM ROLIM DE SOUSA – TESE (PPGCC) 2018.pdfapplication/pdf2174625https://dspace.sti.ufcg.edu.br/bitstream/riufcg/1712/3/REUDISMAM+ROLIM+DE+SOUSA+%E2%80%93+TESE+%28PPGCC%29+2018.pdff153fcd28c5d65a332d362a3f468d114MD53LICENSElicense.txtlicense.txttext/plain; charset=utf-81748https://dspace.sti.ufcg.edu.br/bitstream/riufcg/1712/2/license.txt8a4605be74aa9ea9d79846c1fba20a33MD52riufcg/17122025-07-24 03:08:37.773oai:dspace.sti.ufcg.edu.br:riufcg/1712Tk9URTogUExBQ0UgWU9VUiBPV04gTElDRU5TRSBIRVJFClRoaXMgc2FtcGxlIGxpY2Vuc2UgaXMgcHJvdmlkZWQgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seS4KCk5PTi1FWENMVVNJVkUgRElTVFJJQlVUSU9OIExJQ0VOU0UKCkJ5IHNpZ25pbmcgYW5kIHN1Ym1pdHRpbmcgdGhpcyBsaWNlbnNlLCB5b3UgKHRoZSBhdXRob3Iocykgb3IgY29weXJpZ2h0Cm93bmVyKSBncmFudHMgdG8gRFNwYWNlIFVuaXZlcnNpdHkgKERTVSkgdGhlIG5vbi1leGNsdXNpdmUgcmlnaHQgdG8gcmVwcm9kdWNlLAp0cmFuc2xhdGUgKGFzIGRlZmluZWQgYmVsb3cpLCBhbmQvb3IgZGlzdHJpYnV0ZSB5b3VyIHN1Ym1pc3Npb24gKGluY2x1ZGluZwp0aGUgYWJzdHJhY3QpIHdvcmxkd2lkZSBpbiBwcmludCBhbmQgZWxlY3Ryb25pYyBmb3JtYXQgYW5kIGluIGFueSBtZWRpdW0sCmluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYXVkaW8gb3IgdmlkZW8uCgpZb3UgYWdyZWUgdGhhdCBEU1UgbWF5LCB3aXRob3V0IGNoYW5naW5nIHRoZSBjb250ZW50LCB0cmFuc2xhdGUgdGhlCnN1Ym1pc3Npb24gdG8gYW55IG1lZGl1bSBvciBmb3JtYXQgZm9yIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZhdGlvbi4KCllvdSBhbHNvIGFncmVlIHRoYXQgRFNVIG1heSBrZWVwIG1vcmUgdGhhbiBvbmUgY29weSBvZiB0aGlzIHN1Ym1pc3Npb24gZm9yCnB1cnBvc2VzIG9mIHNlY3VyaXR5LCBiYWNrLXVwIGFuZCBwcmVzZXJ2YXRpb24uCgpZb3UgcmVwcmVzZW50IHRoYXQgdGhlIHN1Ym1pc3Npb24gaXMgeW91ciBvcmlnaW5hbCB3b3JrLCBhbmQgdGhhdCB5b3UgaGF2ZQp0aGUgcmlnaHQgdG8gZ3JhbnQgdGhlIHJpZ2h0cyBjb250YWluZWQgaW4gdGhpcyBsaWNlbnNlLiBZb3UgYWxzbyByZXByZXNlbnQKdGhhdCB5b3VyIHN1Ym1pc3Npb24gZG9lcyBub3QsIHRvIHRoZSBiZXN0IG9mIHlvdXIga25vd2xlZGdlLCBpbmZyaW5nZSB1cG9uCmFueW9uZSdzIGNvcHlyaWdodC4KCklmIHRoZSBzdWJtaXNzaW9uIGNvbnRhaW5zIG1hdGVyaWFsIGZvciB3aGljaCB5b3UgZG8gbm90IGhvbGQgY29weXJpZ2h0LAp5b3UgcmVwcmVzZW50IHRoYXQgeW91IGhhdmUgb2J0YWluZWQgdGhlIHVucmVzdHJpY3RlZCBwZXJtaXNzaW9uIG9mIHRoZQpjb3B5cmlnaHQgb3duZXIgdG8gZ3JhbnQgRFNVIHRoZSByaWdodHMgcmVxdWlyZWQgYnkgdGhpcyBsaWNlbnNlLCBhbmQgdGhhdApzdWNoIHRoaXJkLXBhcnR5IG93bmVkIG1hdGVyaWFsIGlzIGNsZWFybHkgaWRlbnRpZmllZCBhbmQgYWNrbm93bGVkZ2VkCndpdGhpbiB0aGUgdGV4dCBvciBjb250ZW50IG9mIHRoZSBzdWJtaXNzaW9uLgoKSUYgVEhFIFNVQk1JU1NJT04gSVMgQkFTRUQgVVBPTiBXT1JLIFRIQVQgSEFTIEJFRU4gU1BPTlNPUkVEIE9SIFNVUFBPUlRFRApCWSBBTiBBR0VOQ1kgT1IgT1JHQU5JWkFUSU9OIE9USEVSIFRIQU4gRFNVLCBZT1UgUkVQUkVTRU5UIFRIQVQgWU9VIEhBVkUKRlVMRklMTEVEIEFOWSBSSUdIVCBPRiBSRVZJRVcgT1IgT1RIRVIgT0JMSUdBVElPTlMgUkVRVUlSRUQgQlkgU1VDSApDT05UUkFDVCBPUiBBR1JFRU1FTlQuCgpEU1Ugd2lsbCBjbGVhcmx5IGlkZW50aWZ5IHlvdXIgbmFtZShzKSBhcyB0aGUgYXV0aG9yKHMpIG9yIG93bmVyKHMpIG9mIHRoZQpzdWJtaXNzaW9uLCBhbmQgd2lsbCBub3QgbWFrZSBhbnkgYWx0ZXJhdGlvbiwgb3RoZXIgdGhhbiBhcyBhbGxvd2VkIGJ5IHRoaXMKbGljZW5zZSwgdG8geW91ciBzdWJtaXNzaW9uLgo=Biblioteca Digital de Teses e Dissertaçõeshttp://bdtd.ufcg.edu.br/PUBhttp://dspace.sti.ufcg.edu.br:8080/oai/requestbdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.bropendoar:48512025-07-24T06:08:37Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG)false |
| dc.title.pt_BR.fl_str_mv |
Learning syntactic program transformations from examples. |
| title |
Learning syntactic program transformations from examples. |
| spellingShingle |
Learning syntactic program transformations from examples. SOUSA, Reudismam Rolim de. Ciência da Computação Program Transformation Quick Fix Program Synthesis Totoring Systems Refactoring |
| title_short |
Learning syntactic program transformations from examples. |
| title_full |
Learning syntactic program transformations from examples. |
| title_fullStr |
Learning syntactic program transformations from examples. |
| title_full_unstemmed |
Learning syntactic program transformations from examples. |
| title_sort |
Learning syntactic program transformations from examples. |
| author |
SOUSA, Reudismam Rolim de. |
| author_facet |
SOUSA, Reudismam Rolim de. |
| author_role |
author |
| dc.contributor.advisor2ID.pt_BR.fl_str_mv |
GHEYI, R. |
| dc.contributor.advisor1.fl_str_mv |
SOARES, Gustavo Araújo. |
| dc.contributor.advisor1ID.fl_str_mv |
SOARES, G. |
| dc.contributor.advisor1Lattes.fl_str_mv |
http://lattes.cnpq.br/6215732726947926 |
| dc.contributor.advisor2.fl_str_mv |
GHEYI, Rohit. |
| dc.contributor.advisor2Lattes.fl_str_mv |
http://lattes.cnpq.br/2931270888717344 |
| dc.contributor.authorID.fl_str_mv |
SOUSA, R. R. |
| dc.contributor.authorLattes.fl_str_mv |
http://lattes.cnpq.br/7392223184852549 |
| dc.contributor.author.fl_str_mv |
SOUSA, Reudismam Rolim de. |
| contributor_str_mv |
SOARES, Gustavo Araújo. GHEYI, Rohit. |
| dc.subject.cnpq.fl_str_mv |
Ciência da Computação |
| topic |
Ciência da Computação Program Transformation Quick Fix Program Synthesis Totoring Systems Refactoring |
| dc.subject.por.fl_str_mv |
Program Transformation Quick Fix Program Synthesis Totoring Systems Refactoring |
| description |
Ferramentas como ErrorProne, ReSharper e PMD ajudam os programadores a detectar e/ou remover automaticamente vários padrões de códigos suspeitos, possíveis bugs ou estilo de código incorreto. Essas regras podem ser expressas como quick fixes que detectam e reescrevem padrões de código indesejados. No entanto, estender seus catálogos de regras é complexo e demorado. Nesse contexto, os programadores podem querer executar uma edição repetitiva automaticamente para melhorar sua produtividade, mas as ferramentas disponíveis não a suportam. Além disso, os projetistas de ferramentas podem querer identificar regras úteis para automatizarem. Fenômeno semelhante ocorre em sistemas de tutoria inteligente, onde os instrutores escrevem transformações complicadas que descrevem "falhas comuns" para consertar submissões semelhantes de estudantes a tarefas de programação. Nesta tese, apresentamos duas técnicas. REFAZER, uma técnica para gerar automaticamente transformações de programa. Também propomos REVISAR, nossa técnica para aprender quick fixes em repositórios. Nós instanciamos e avaliamos REFAZER em dois domínios. Primeiro, dados exemplos de edições de código dos alunos para corrigir submissões de tarefas incorretas, aprendemos transformações para corrigir envios de outros alunos com falhas semelhantes. Em nossa avaliação em quatro tarefas de programação de setecentos e vinte alunos, nossa técnica ajudou a corrigir submissões incorretas para 87% dos alunos. No segundo domínio, usamos edições de código repetitivas aplicadas por desenvolvedores ao mesmo projeto para sintetizar a transformação de programa que aplica essas edições a outros locais no código. Em nossa avaliação em 56 cenários de edições repetitivas de três grandes projetos de código aberto em C#, REFAZER aprendeu a transformação pretendida em 84% dos casos e usou apenas 2.9 exemplos em média. Para avaliar REVISAR, selecionamos 9 projetos e REVISAR aprendeu 920 transformações entre projetos. Atuamos como projetistas de ferramentas, inspecionamos as 381 transformações mais comuns e classificamos 32 como quick fixes. Para avaliar a qualidade das quick fixes, realizamos uma survey com 164 programadores de 124 projetos, com os 10 quick fixes que apareceram em mais projetos. Os programadores suportaram 9 (90%) quick fixes. Enviamos 20 pull requests aplicando quick fixes em 9 projetos e, no momento da escrita, os programadores apoiaram 17 (85%) e aceitaram 10 delas. |
| publishDate |
2018 |
| dc.date.issued.fl_str_mv |
2018-08-02 |
| dc.date.accessioned.fl_str_mv |
2018-09-13T20:44:41Z |
| dc.date.available.fl_str_mv |
2018-09-13 2018-09-13T20:44:41Z |
| dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
| dc.type.driver.fl_str_mv |
info:eu-repo/semantics/doctoralThesis |
| format |
doctoralThesis |
| status_str |
publishedVersion |
| dc.identifier.uri.fl_str_mv |
https://dspace.sti.ufcg.edu.br/handle/riufcg/1712 |
| dc.identifier.citation.fl_str_mv |
SOUSA, R. R. de. Learning syntactic program transformations from examples. 2018. 159 f. Tese (Doutorado em Ciência da Computação) – Programa de Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2018. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/1712 |
| url |
https://dspace.sti.ufcg.edu.br/handle/riufcg/1712 |
| identifier_str_mv |
SOUSA, R. R. de. Learning syntactic program transformations from examples. 2018. 159 f. Tese (Doutorado em Ciência da Computação) – Programa de Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2018. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/1712 |
| dc.language.iso.fl_str_mv |
eng |
| language |
eng |
| dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
| eu_rights_str_mv |
openAccess |
| dc.publisher.none.fl_str_mv |
Universidade Federal de Campina Grande |
| dc.publisher.program.fl_str_mv |
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO |
| dc.publisher.initials.fl_str_mv |
UFCG |
| dc.publisher.country.fl_str_mv |
Brasil |
| dc.publisher.department.fl_str_mv |
Centro de Engenharia Elétrica e Informática - CEEI |
| publisher.none.fl_str_mv |
Universidade Federal de Campina Grande |
| dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da UFCG instname:Universidade Federal de Campina Grande (UFCG) instacron:UFCG |
| instname_str |
Universidade Federal de Campina Grande (UFCG) |
| instacron_str |
UFCG |
| institution |
UFCG |
| reponame_str |
Biblioteca Digital de Teses e Dissertações da UFCG |
| collection |
Biblioteca Digital de Teses e Dissertações da UFCG |
| bitstream.url.fl_str_mv |
https://dspace.sti.ufcg.edu.br/bitstream/riufcg/1712/4/REUDISMAM+ROLIM+DE+SOUSA+%E2%80%93+TESE+%28PPGCC%29+2018.pdf.txt https://dspace.sti.ufcg.edu.br/bitstream/riufcg/1712/3/REUDISMAM+ROLIM+DE+SOUSA+%E2%80%93+TESE+%28PPGCC%29+2018.pdf https://dspace.sti.ufcg.edu.br/bitstream/riufcg/1712/2/license.txt |
| bitstream.checksum.fl_str_mv |
524390917960e9bbedf343675ecbf5fc f153fcd28c5d65a332d362a3f468d114 8a4605be74aa9ea9d79846c1fba20a33 |
| bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 |
| repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG) |
| repository.mail.fl_str_mv |
bdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.br |
| _version_ |
1863363392923762688 |