Uma abordagem para testar implementações de refatoramentos estruturais e comportamentais de programas C.
| Ano de defesa: | 2014 |
|---|---|
| Autor(a) principal: | |
| Orientador(a): | |
| Banca de defesa: | , |
| Tipo de documento: | Dissertação |
| Tipo de acesso: | Acesso aberto |
| Idioma: | por |
| 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/1623 |
Resumo: | Refatorar um programa é o ato de mudar sua estrutura visando melhorar algum aspecto arquitetural, sem que se mude seu comportamento observável. Desenvolvedores utilizam ferramentas como Eclipse e NetBeans para auxiliá-los no refatoramento de seus programas. Essas ferramentas implementam um conjunto de condições para garantir que as transformações realizadas não mudem o comportamento observável do programa. Porém, não é trivial identificar todas as condições necessárias para que um refatoramento seja correto devido à complexidade da semântica das linguagens e por não haver uma definição formal das linguagens e consequentemente dos refatoramentos. Os desenvolvedores de ferramentas de refatoramento costumam, por não haver uma definição formal, implementar os refatoramentos de acordo com seus conhecimentos da linguagem de programação. Na prática, desenvolvedores utilizam coleções de testes para avaliar a corretude de suas implementações. Entretanto, não existem evidências que os desenvolvedores utilizem um processo sistemático na definição dessas coleções. Neste trabalho, propomos uma técnica para testar implementações de refatoramentos de programas C. Ela consiste em cinco fases. Primeiramente, geramos automaticamente diversos programas C para serem refatorados a partir do CDOLLY, que foi proposto baseado em uma especificação em Alloy. Depois, geramos automaticamente uma coleção de testes de unidade dos programas via o CATESTER. Em seguida, aplicamos o refatoramento através do CREXECUTOR nos programas gerados utilizando a ferramenta a ser testada. Após isso, executamos a coleção de testes nos programas refatorados e, por fim, classificamos os erros de compilação e mudanças comportamentais identificados em bugs. Avaliamos a nossa técnica na implementação de oito refatoramentos do Eclipse CDT. Estes refatoramentos não só modificam a estrutura do programa, como também o corpo das funções, como o refatoramento Extract Function. Detectamos 41 bugs, que introduzem erros de compilação no programa resultante, e seis bugs relacionados a mudanças comportamentais. Replicamos manualmente os bugs encontrados em implementações de refatoramentos do NetBeans CND, Xrefactory e OpenRefactory e detectamos 29 bugs nessas ferramentas. |
| id |
UFCG_17fa7e94254d47f33509d528a1bf8a31 |
|---|---|
| oai_identifier_str |
oai:dspace.sti.ufcg.edu.br:riufcg/1623 |
| network_acronym_str |
UFCG |
| network_name_str |
Biblioteca Digital de Teses e Dissertações da UFCG |
| repository_id_str |
|
| spelling |
GHEYI, Rohit.GHEYI, R.http://lattes.cnpq.br/2931270888717344RIBEIRO, Márcio de Medeiros.MASSONI, Tiago Lima.MENDES, G. W. D.http://lattes.cnpq.br/6081656791771567MENDES, Gustavo Wagner Diniz.Refatorar um programa é o ato de mudar sua estrutura visando melhorar algum aspecto arquitetural, sem que se mude seu comportamento observável. Desenvolvedores utilizam ferramentas como Eclipse e NetBeans para auxiliá-los no refatoramento de seus programas. Essas ferramentas implementam um conjunto de condições para garantir que as transformações realizadas não mudem o comportamento observável do programa. Porém, não é trivial identificar todas as condições necessárias para que um refatoramento seja correto devido à complexidade da semântica das linguagens e por não haver uma definição formal das linguagens e consequentemente dos refatoramentos. Os desenvolvedores de ferramentas de refatoramento costumam, por não haver uma definição formal, implementar os refatoramentos de acordo com seus conhecimentos da linguagem de programação. Na prática, desenvolvedores utilizam coleções de testes para avaliar a corretude de suas implementações. Entretanto, não existem evidências que os desenvolvedores utilizem um processo sistemático na definição dessas coleções. Neste trabalho, propomos uma técnica para testar implementações de refatoramentos de programas C. Ela consiste em cinco fases. Primeiramente, geramos automaticamente diversos programas C para serem refatorados a partir do CDOLLY, que foi proposto baseado em uma especificação em Alloy. Depois, geramos automaticamente uma coleção de testes de unidade dos programas via o CATESTER. Em seguida, aplicamos o refatoramento através do CREXECUTOR nos programas gerados utilizando a ferramenta a ser testada. Após isso, executamos a coleção de testes nos programas refatorados e, por fim, classificamos os erros de compilação e mudanças comportamentais identificados em bugs. Avaliamos a nossa técnica na implementação de oito refatoramentos do Eclipse CDT. Estes refatoramentos não só modificam a estrutura do programa, como também o corpo das funções, como o refatoramento Extract Function. Detectamos 41 bugs, que introduzem erros de compilação no programa resultante, e seis bugs relacionados a mudanças comportamentais. Replicamos manualmente os bugs encontrados em implementações de refatoramentos do NetBeans CND, Xrefactory e OpenRefactory e detectamos 29 bugs nessas ferramentas.Refactoring a program is the act of changing its structure in order to improve any architectural aspect, without changing its observable behavior. Developers use tools like Eclipse and NetBeans to help refactoring their programs. These tools implement a set of conditions to ensure that the transformations performed do not change the observable behavior of the program. However, it is not easy to identify ali the necessary conditions for a refactoring to be correct due to the semantic complexity of the languages, mainly because the languages are not formally proved and neither the refactorings. In practice, developers often use collections of tests to assess the correctness of their implementations. However, there is no evidence of having systematic process in the definition of this collection. In this work, we propose a technique to test refactoring implementations of C programs. It consists of five phases. First, we generate automatically several C programs to be refactored from CDOLLY, which has been proposed based on a specification in Alloy. Then, we generate automatically a collection of unit tests of the programs via CATESTER. We then apply the refactoring through CREXECUTOR on the generated programs using the tool to be tested. After this, we execute the test collection in the refactored programs and finally we classify the compilation errors and behavioral changes in bugs. We evaluated our technique in the implementation of eight refactorings of Eclipse CDT. These refactorings not only modify the program structure, but also the body functions, such as the refactoring Extract Function. We detected 41 bugs, which introduce compilation errors in the resulting program, and six bugs related to behavioral changes. We analyzed manually these bugs in refactoring implementations of NetBeans, Xrefactory and OpenRefactory and identified 29 bugs in these tools.Submitted by Johnny Rodrigues (johnnyrodrigues@ufcg.edu.br) on 2018-08-31T23:09:48Z No. of bitstreams: 1 GUSTAVO WAGNER DINIZ MENDES - DISSERTAÇÃO PPGCC 2014..pdf: 7175302 bytes, checksum: c99a663c85f93c308e26cc6d963f5d2e (MD5)Made available in DSpace on 2018-08-31T23:09:48Z (GMT). No. of bitstreams: 1 GUSTAVO WAGNER DINIZ MENDES - DISSERTAÇÃO PPGCC 2014..pdf: 7175302 bytes, checksum: c99a663c85f93c308e26cc6d963f5d2e (MD5) Previous issue date: 2014-03-13Universidade Federal de Campina GrandePÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃOUFCGBrasilCentro de Engenharia Elétrica e Informática - CEEICiência da Computação.Teste de softwareProgramas CRefatoração de programaRefatoramentos estruturais - programas CRefatoramentos comportamentais - programas CEngenharia de softwareTestes de programasGeração de programasSoftware TestingRefactoring programsUma abordagem para testar implementações de refatoramentos estruturais e comportamentais de programas C.An approach to testing implementations of structural and behavioral refactorings of C programs2014-03-132018-08-31T23:09:48Z2018-08-312018-08-31T23:09:48Zhttps://dspace.sti.ufcg.edu.br/handle/riufcg/1623MENDES, Gustavo Wagner Diniz. Uma abordagem para testar implementações de refatoramentos estruturais e comportamentais de programas C. 2014. 118f. (Dissertação de Mestrado 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, 2014. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/1623info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisporinfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFCGinstname:Universidade Federal de Campina Grande (UFCG)instacron:UFCGTEXTGUSTAVO WAGNER DINIZ MENDES - DISSERTAÇÃO PPGCC 2014.pdf.txtGUSTAVO WAGNER DINIZ MENDES - DISSERTAÇÃO PPGCC 2014.pdf.txttext/plain219296https://dspace.sti.ufcg.edu.br/bitstream/riufcg/1623/4/GUSTAVO+WAGNER+DINIZ+MENDES+-+DISSERTA%C3%87%C3%83O+PPGCC+2014.pdf.txtc363e62b7c151e8fffe1dd570a728668MD54ORIGINALGUSTAVO WAGNER DINIZ MENDES - DISSERTAÇÃO PPGCC 2014.pdfGUSTAVO WAGNER DINIZ MENDES - DISSERTAÇÃO PPGCC 2014.pdfapplication/pdf8172180https://dspace.sti.ufcg.edu.br/bitstream/riufcg/1623/3/GUSTAVO+WAGNER+DINIZ+MENDES+-+DISSERTA%C3%87%C3%83O+PPGCC+2014.pdfb1b3eaa32e14129caeab9906f8b2e503MD53LICENSElicense.txtlicense.txttext/plain; charset=utf-81748https://dspace.sti.ufcg.edu.br/bitstream/riufcg/1623/2/license.txt8a4605be74aa9ea9d79846c1fba20a33MD52riufcg/16232025-07-24 03:23:03.25oai:dspace.sti.ufcg.edu.br:riufcg/1623Tk9URTogUExBQ0UgWU9VUiBPV04gTElDRU5TRSBIRVJFClRoaXMgc2FtcGxlIGxpY2Vuc2UgaXMgcHJvdmlkZWQgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seS4KCk5PTi1FWENMVVNJVkUgRElTVFJJQlVUSU9OIExJQ0VOU0UKCkJ5IHNpZ25pbmcgYW5kIHN1Ym1pdHRpbmcgdGhpcyBsaWNlbnNlLCB5b3UgKHRoZSBhdXRob3Iocykgb3IgY29weXJpZ2h0Cm93bmVyKSBncmFudHMgdG8gRFNwYWNlIFVuaXZlcnNpdHkgKERTVSkgdGhlIG5vbi1leGNsdXNpdmUgcmlnaHQgdG8gcmVwcm9kdWNlLAp0cmFuc2xhdGUgKGFzIGRlZmluZWQgYmVsb3cpLCBhbmQvb3IgZGlzdHJpYnV0ZSB5b3VyIHN1Ym1pc3Npb24gKGluY2x1ZGluZwp0aGUgYWJzdHJhY3QpIHdvcmxkd2lkZSBpbiBwcmludCBhbmQgZWxlY3Ryb25pYyBmb3JtYXQgYW5kIGluIGFueSBtZWRpdW0sCmluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYXVkaW8gb3IgdmlkZW8uCgpZb3UgYWdyZWUgdGhhdCBEU1UgbWF5LCB3aXRob3V0IGNoYW5naW5nIHRoZSBjb250ZW50LCB0cmFuc2xhdGUgdGhlCnN1Ym1pc3Npb24gdG8gYW55IG1lZGl1bSBvciBmb3JtYXQgZm9yIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZhdGlvbi4KCllvdSBhbHNvIGFncmVlIHRoYXQgRFNVIG1heSBrZWVwIG1vcmUgdGhhbiBvbmUgY29weSBvZiB0aGlzIHN1Ym1pc3Npb24gZm9yCnB1cnBvc2VzIG9mIHNlY3VyaXR5LCBiYWNrLXVwIGFuZCBwcmVzZXJ2YXRpb24uCgpZb3UgcmVwcmVzZW50IHRoYXQgdGhlIHN1Ym1pc3Npb24gaXMgeW91ciBvcmlnaW5hbCB3b3JrLCBhbmQgdGhhdCB5b3UgaGF2ZQp0aGUgcmlnaHQgdG8gZ3JhbnQgdGhlIHJpZ2h0cyBjb250YWluZWQgaW4gdGhpcyBsaWNlbnNlLiBZb3UgYWxzbyByZXByZXNlbnQKdGhhdCB5b3VyIHN1Ym1pc3Npb24gZG9lcyBub3QsIHRvIHRoZSBiZXN0IG9mIHlvdXIga25vd2xlZGdlLCBpbmZyaW5nZSB1cG9uCmFueW9uZSdzIGNvcHlyaWdodC4KCklmIHRoZSBzdWJtaXNzaW9uIGNvbnRhaW5zIG1hdGVyaWFsIGZvciB3aGljaCB5b3UgZG8gbm90IGhvbGQgY29weXJpZ2h0LAp5b3UgcmVwcmVzZW50IHRoYXQgeW91IGhhdmUgb2J0YWluZWQgdGhlIHVucmVzdHJpY3RlZCBwZXJtaXNzaW9uIG9mIHRoZQpjb3B5cmlnaHQgb3duZXIgdG8gZ3JhbnQgRFNVIHRoZSByaWdodHMgcmVxdWlyZWQgYnkgdGhpcyBsaWNlbnNlLCBhbmQgdGhhdApzdWNoIHRoaXJkLXBhcnR5IG93bmVkIG1hdGVyaWFsIGlzIGNsZWFybHkgaWRlbnRpZmllZCBhbmQgYWNrbm93bGVkZ2VkCndpdGhpbiB0aGUgdGV4dCBvciBjb250ZW50IG9mIHRoZSBzdWJtaXNzaW9uLgoKSUYgVEhFIFNVQk1JU1NJT04gSVMgQkFTRUQgVVBPTiBXT1JLIFRIQVQgSEFTIEJFRU4gU1BPTlNPUkVEIE9SIFNVUFBPUlRFRApCWSBBTiBBR0VOQ1kgT1IgT1JHQU5JWkFUSU9OIE9USEVSIFRIQU4gRFNVLCBZT1UgUkVQUkVTRU5UIFRIQVQgWU9VIEhBVkUKRlVMRklMTEVEIEFOWSBSSUdIVCBPRiBSRVZJRVcgT1IgT1RIRVIgT0JMSUdBVElPTlMgUkVRVUlSRUQgQlkgU1VDSApDT05UUkFDVCBPUiBBR1JFRU1FTlQuCgpEU1Ugd2lsbCBjbGVhcmx5IGlkZW50aWZ5IHlvdXIgbmFtZShzKSBhcyB0aGUgYXV0aG9yKHMpIG9yIG93bmVyKHMpIG9mIHRoZQpzdWJtaXNzaW9uLCBhbmQgd2lsbCBub3QgbWFrZSBhbnkgYWx0ZXJhdGlvbiwgb3RoZXIgdGhhbiBhcyBhbGxvd2VkIGJ5IHRoaXMKbGljZW5zZSwgdG8geW91ciBzdWJtaXNzaW9uLgo=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:23:03Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG)false |
| dc.title.pt_BR.fl_str_mv |
Uma abordagem para testar implementações de refatoramentos estruturais e comportamentais de programas C. |
| dc.title.alternative.pt_BR.fl_str_mv |
An approach to testing implementations of structural and behavioral refactorings of C programs |
| title |
Uma abordagem para testar implementações de refatoramentos estruturais e comportamentais de programas C. |
| spellingShingle |
Uma abordagem para testar implementações de refatoramentos estruturais e comportamentais de programas C. MENDES, Gustavo Wagner Diniz. Ciência da Computação. Teste de software Programas C Refatoração de programa Refatoramentos estruturais - programas C Refatoramentos comportamentais - programas C Engenharia de software Testes de programas Geração de programas Software Testing Refactoring programs |
| title_short |
Uma abordagem para testar implementações de refatoramentos estruturais e comportamentais de programas C. |
| title_full |
Uma abordagem para testar implementações de refatoramentos estruturais e comportamentais de programas C. |
| title_fullStr |
Uma abordagem para testar implementações de refatoramentos estruturais e comportamentais de programas C. |
| title_full_unstemmed |
Uma abordagem para testar implementações de refatoramentos estruturais e comportamentais de programas C. |
| title_sort |
Uma abordagem para testar implementações de refatoramentos estruturais e comportamentais de programas C. |
| author |
MENDES, Gustavo Wagner Diniz. |
| author_facet |
MENDES, Gustavo Wagner Diniz. |
| author_role |
author |
| dc.contributor.advisor1.fl_str_mv |
GHEYI, Rohit. |
| dc.contributor.advisor1ID.fl_str_mv |
GHEYI, R. |
| dc.contributor.advisor1Lattes.fl_str_mv |
http://lattes.cnpq.br/2931270888717344 |
| dc.contributor.referee1.fl_str_mv |
RIBEIRO, Márcio de Medeiros. |
| dc.contributor.referee2.fl_str_mv |
MASSONI, Tiago Lima. |
| dc.contributor.authorID.fl_str_mv |
MENDES, G. W. D. |
| dc.contributor.authorLattes.fl_str_mv |
http://lattes.cnpq.br/6081656791771567 |
| dc.contributor.author.fl_str_mv |
MENDES, Gustavo Wagner Diniz. |
| contributor_str_mv |
GHEYI, Rohit. RIBEIRO, Márcio de Medeiros. MASSONI, Tiago Lima. |
| dc.subject.cnpq.fl_str_mv |
Ciência da Computação. |
| topic |
Ciência da Computação. Teste de software Programas C Refatoração de programa Refatoramentos estruturais - programas C Refatoramentos comportamentais - programas C Engenharia de software Testes de programas Geração de programas Software Testing Refactoring programs |
| dc.subject.por.fl_str_mv |
Teste de software Programas C Refatoração de programa Refatoramentos estruturais - programas C Refatoramentos comportamentais - programas C Engenharia de software Testes de programas Geração de programas Software Testing Refactoring programs |
| description |
Refatorar um programa é o ato de mudar sua estrutura visando melhorar algum aspecto arquitetural, sem que se mude seu comportamento observável. Desenvolvedores utilizam ferramentas como Eclipse e NetBeans para auxiliá-los no refatoramento de seus programas. Essas ferramentas implementam um conjunto de condições para garantir que as transformações realizadas não mudem o comportamento observável do programa. Porém, não é trivial identificar todas as condições necessárias para que um refatoramento seja correto devido à complexidade da semântica das linguagens e por não haver uma definição formal das linguagens e consequentemente dos refatoramentos. Os desenvolvedores de ferramentas de refatoramento costumam, por não haver uma definição formal, implementar os refatoramentos de acordo com seus conhecimentos da linguagem de programação. Na prática, desenvolvedores utilizam coleções de testes para avaliar a corretude de suas implementações. Entretanto, não existem evidências que os desenvolvedores utilizem um processo sistemático na definição dessas coleções. Neste trabalho, propomos uma técnica para testar implementações de refatoramentos de programas C. Ela consiste em cinco fases. Primeiramente, geramos automaticamente diversos programas C para serem refatorados a partir do CDOLLY, que foi proposto baseado em uma especificação em Alloy. Depois, geramos automaticamente uma coleção de testes de unidade dos programas via o CATESTER. Em seguida, aplicamos o refatoramento através do CREXECUTOR nos programas gerados utilizando a ferramenta a ser testada. Após isso, executamos a coleção de testes nos programas refatorados e, por fim, classificamos os erros de compilação e mudanças comportamentais identificados em bugs. Avaliamos a nossa técnica na implementação de oito refatoramentos do Eclipse CDT. Estes refatoramentos não só modificam a estrutura do programa, como também o corpo das funções, como o refatoramento Extract Function. Detectamos 41 bugs, que introduzem erros de compilação no programa resultante, e seis bugs relacionados a mudanças comportamentais. Replicamos manualmente os bugs encontrados em implementações de refatoramentos do NetBeans CND, Xrefactory e OpenRefactory e detectamos 29 bugs nessas ferramentas. |
| publishDate |
2014 |
| dc.date.issued.fl_str_mv |
2014-03-13 |
| dc.date.accessioned.fl_str_mv |
2018-08-31T23:09:48Z |
| dc.date.available.fl_str_mv |
2018-08-31 2018-08-31T23:09:48Z |
| 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://dspace.sti.ufcg.edu.br/handle/riufcg/1623 |
| dc.identifier.citation.fl_str_mv |
MENDES, Gustavo Wagner Diniz. Uma abordagem para testar implementações de refatoramentos estruturais e comportamentais de programas C. 2014. 118f. (Dissertação de Mestrado 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, 2014. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/1623 |
| url |
https://dspace.sti.ufcg.edu.br/handle/riufcg/1623 |
| identifier_str_mv |
MENDES, Gustavo Wagner Diniz. Uma abordagem para testar implementações de refatoramentos estruturais e comportamentais de programas C. 2014. 118f. (Dissertação de Mestrado 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, 2014. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/1623 |
| dc.language.iso.fl_str_mv |
por |
| language |
por |
| 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/1623/4/GUSTAVO+WAGNER+DINIZ+MENDES+-+DISSERTA%C3%87%C3%83O+PPGCC+2014.pdf.txt https://dspace.sti.ufcg.edu.br/bitstream/riufcg/1623/3/GUSTAVO+WAGNER+DINIZ+MENDES+-+DISSERTA%C3%87%C3%83O+PPGCC+2014.pdf https://dspace.sti.ufcg.edu.br/bitstream/riufcg/1623/2/license.txt |
| bitstream.checksum.fl_str_mv |
c363e62b7c151e8fffe1dd570a728668 b1b3eaa32e14129caeab9906f8b2e503 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_ |
1863363391820660736 |