Safe evolution of software product lines and sets of product lines
Autor(a) principal: | |
---|---|
Data de Publicação: | 2014 |
Tipo de documento: | Tese |
Idioma: | eng |
Título da fonte: | Repositório Institucional da UFPE |
dARK ID: | ark:/64986/001300000x9m7 |
Texto Completo: | https://repositorio.ufpe.br/handle/123456789/12164 |
Resumo: | Linhas de Produtos de Software exploram reuso entre sistemas de software, fornecendo uma maneira sistemática de gerá-los. Extrair e evoluir linhas de produtos a partir de produtos existentes pode ser caro e propenso a erros. Tais tarefas podem se beneficiar de refatoramentos com base formal, garantindo corretude por construção. Linhas de produtos são muitas vezes desenvolvidas no contexto de um conjunto de linhas relacionadas. Por exemplo, no contexto de populações de produtos, podemos ter diferentes versões de uma linha sendo desenvolvidas simultaneamente em diferentes branches. Também podemos combinar várias linhas que dependem umas das outras para desenvolver multilinhas de produto. Ao evoluir uma linha pertencente a um conjunto, é importante verificar se as alterações afetam as demais linhas do mesmo conjunto. A teoria de refinamento de linhas de produtos formaliza a noção de evolução segura em termos de uma relação de refinamento. Refinamento captura preservação de comportamento, mas abstrai melhoria de qualidade. Neste trabalho, n´os estendemos essa teoria para populações de produtos e multilinhas de produtos. Estabelecemos propriedades de composicionalidade, que estabelecem as condições necessárias para garantir a evolução segura de conjuntos de linhas quando evoluímos individualmente seus membros. As teorias de refinamento são gerais com respeito às diferentes linguagens usadas para descrever modelos de características, modelos de configuração e demais artefatos para implementar linhas de produtos e conjuntos de linhas. Pressupostos e axiomas estabelecem as interfaces entre nossas teorias e linguagens específicas. Instanciar as teorias com diferentes combinações de linguagens concretas nos permite derivar transformações que abstraem evoluções seguras, que vão desde a evolução individual de artefatos até a evolução de linhas de produtos e seus conjuntos como um todo. Investigamos e exploramos semelhanças entre estas linguagens, abstraindo propriedades em comum, o que resulta em transformações expressas em n´níveis mais altos de abstração, que podem ser reutilizados por mais linguagens. Desta forma, n´os propomos uma linha de produtos de teorias, onde diferentes linguagens correspondem a diferentes features, e os produtos correspondem à instanciações das teorias de refinamento. Foi utilizado o Prototype Verification System para codificação e prova das teorias e suas instanciações. Para avaliar a expressividade das transformações propostas, analisamos o histórico de evolução de linhas de produtos, observando se transformações são expressivas o suficiente para justificar os cenários de evolução segura. Além disso, também estudamos a evolução do kernel do Linux e mostramos que a maioria dos padrões de evolução encontrados está de acordo com a noção de refinamento de linhas de produtos. Finalmente, também usamos as transformações para raciocinar sobre a evolução da linha de produtos de teorias. |
id |
UFPE_82c6e9fffca69e315262d936a6cb6072 |
---|---|
oai_identifier_str |
oai:repositorio.ufpe.br:123456789/12164 |
network_acronym_str |
UFPE |
network_name_str |
Repositório Institucional da UFPE |
repository_id_str |
2221 |
spelling |
TEIXEIRA, Leopoldo MottaBORBA, Paulo Henrique MonteiroGHEYI, Rohit2015-03-12T14:36:57Z2015-03-12T14:36:57Z2014-01-31TEIXEIRA, Leopoldo Motta. Safe evolution of software product lines and sets of product lines. Recife, 2014. 148 f. Tese (doutorado) - UFPE, Centro de Informática, Programa de Pós-graduação em Ciência da Computação, 2014..https://repositorio.ufpe.br/handle/123456789/12164ark:/64986/001300000x9m7Linhas de Produtos de Software exploram reuso entre sistemas de software, fornecendo uma maneira sistemática de gerá-los. Extrair e evoluir linhas de produtos a partir de produtos existentes pode ser caro e propenso a erros. Tais tarefas podem se beneficiar de refatoramentos com base formal, garantindo corretude por construção. Linhas de produtos são muitas vezes desenvolvidas no contexto de um conjunto de linhas relacionadas. Por exemplo, no contexto de populações de produtos, podemos ter diferentes versões de uma linha sendo desenvolvidas simultaneamente em diferentes branches. Também podemos combinar várias linhas que dependem umas das outras para desenvolver multilinhas de produto. Ao evoluir uma linha pertencente a um conjunto, é importante verificar se as alterações afetam as demais linhas do mesmo conjunto. A teoria de refinamento de linhas de produtos formaliza a noção de evolução segura em termos de uma relação de refinamento. Refinamento captura preservação de comportamento, mas abstrai melhoria de qualidade. Neste trabalho, n´os estendemos essa teoria para populações de produtos e multilinhas de produtos. Estabelecemos propriedades de composicionalidade, que estabelecem as condições necessárias para garantir a evolução segura de conjuntos de linhas quando evoluímos individualmente seus membros. As teorias de refinamento são gerais com respeito às diferentes linguagens usadas para descrever modelos de características, modelos de configuração e demais artefatos para implementar linhas de produtos e conjuntos de linhas. Pressupostos e axiomas estabelecem as interfaces entre nossas teorias e linguagens específicas. Instanciar as teorias com diferentes combinações de linguagens concretas nos permite derivar transformações que abstraem evoluções seguras, que vão desde a evolução individual de artefatos até a evolução de linhas de produtos e seus conjuntos como um todo. Investigamos e exploramos semelhanças entre estas linguagens, abstraindo propriedades em comum, o que resulta em transformações expressas em n´níveis mais altos de abstração, que podem ser reutilizados por mais linguagens. Desta forma, n´os propomos uma linha de produtos de teorias, onde diferentes linguagens correspondem a diferentes features, e os produtos correspondem à instanciações das teorias de refinamento. Foi utilizado o Prototype Verification System para codificação e prova das teorias e suas instanciações. Para avaliar a expressividade das transformações propostas, analisamos o histórico de evolução de linhas de produtos, observando se transformações são expressivas o suficiente para justificar os cenários de evolução segura. Além disso, também estudamos a evolução do kernel do Linux e mostramos que a maioria dos padrões de evolução encontrados está de acordo com a noção de refinamento de linhas de produtos. Finalmente, também usamos as transformações para raciocinar sobre a evolução da linha de produtos de teorias.CNPqSoftware Product Lines explore reuse among software systems, providing a systematic way to generate them. Extracting product lines from existing products and evolving them can be costly and error-prone. These tasks can benefit from refactorings with formal basis, to ensure correctness by construction. Product lines are often developed in the context of a set of related product lines. In the context of product populations, we might have a number of product line versions being simultaneously developed in different branches. We can also combine multiple product lines that depend on each other to develop multi product lines. When evolving a product line from such a set, it is important to check whether the changes affect the related product lines in the same set. A theory of product line refinement formalizes the notion of safe evolution in terms of a refinement relation over product lines. Refinement captures behavior preservation but abstracts quality improvement. In this work, we extend this theory, defining refinement theories for product populations and multi product lines. We also establish compositionality properties, which reveal the necessary conditions for guaranteeing safe evolution of sets of product lines when individually evolving one of its members. The refinement theories are generic with respect to the different feature model, configuration knowledge, and asset languages that we can use to describe or implement product lines, and consequently, sets of product lines. Assumptions and axioms explicitly establish the interfaces between our theories and particular languages. Instantiating the theories with different combinations of concrete languages enables us to derive refinement templates that abstract safe evolution transformations, ranging from evolving individual artifacts to evolving product lines and their sets as a whole. We investigate and explore similarities between these languages, abstracting common properties, which ultimately result on refinement templates that work at a higher abstraction level and can be reused to a larger number of languages. Thus, we propose a product line of theories, where different languages correspond to different features, and products correspond to instantiations of the refinement theories. We use the Prototype Verification System to encode and prove soundness of the theories and their instantiations. To evaluate expressiveness of the proposed templates, we analyze the evolution history of product lines. We observe whether templates are expressive enough to address the safe evolution scenarios. Additionally, we also study the Linux kernel evolution and discover that most evolution patterns conform to the product line refinement notion. Finally, we also use refinement templates to reason about evolution of the product line of theories.engUniversidade Federal de PernambucoAttribution-NonCommercial-NoDerivs 3.0 Brazilhttp://creativecommons.org/licenses/by-nc-nd/3.0/br/info:eu-repo/semantics/openAccessEngenharia de softwareSoftware - RefatoraçãoSoftware - ReutilizaçãoLinhas de produtos de softwareEvolução de softwareRefinamentoSafe evolution of software product lines and sets of product linesinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisreponame:Repositório Institucional da UFPEinstname:Universidade Federal de Pernambuco (UFPE)instacron:UFPETHUMBNAILTESE Leopoldo Mota Teixeira.pdf.jpgTESE Leopoldo Mota Teixeira.pdf.jpgGenerated Thumbnailimage/jpeg1248https://repositorio.ufpe.br/bitstream/123456789/12164/5/TESE%20Leopoldo%20Mota%20Teixeira.pdf.jpg42b9011a4b58b4e8afd5b421f7b1552bMD55ORIGINALTESE Leopoldo Mota Teixeira.pdfTESE Leopoldo Mota Teixeira.pdfapplication/pdf3921100https://repositorio.ufpe.br/bitstream/123456789/12164/1/TESE%20Leopoldo%20Mota%20Teixeira.pdf64b57ec6d2d2c444e293077b798a417eMD51CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-81232https://repositorio.ufpe.br/bitstream/123456789/12164/2/license_rdf66e71c371cc565284e70f40736c94386MD52LICENSElicense.txtlicense.txttext/plain; charset=utf-82311https://repositorio.ufpe.br/bitstream/123456789/12164/3/license.txt4b8a02c7f2818eaf00dcf2260dd5eb08MD53TEXTTESE Leopoldo Mota Teixeira.pdf.txtTESE Leopoldo Mota Teixeira.pdf.txtExtracted texttext/plain404310https://repositorio.ufpe.br/bitstream/123456789/12164/4/TESE%20Leopoldo%20Mota%20Teixeira.pdf.txta16ade6132d1253967803b9c6676ba6eMD54123456789/121642019-10-25 04:54:20.49oai:repositorio.ufpe.br:123456789/12164TGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKClRvZG8gZGVwb3NpdGFudGUgZGUgbWF0ZXJpYWwgbm8gUmVwb3NpdMOzcmlvIEluc3RpdHVjaW9uYWwgKFJJKSBkZXZlIGNvbmNlZGVyLCDDoCBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBQZXJuYW1idWNvIChVRlBFKSwgdW1hIExpY2Vuw6dhIGRlIERpc3RyaWJ1acOnw6NvIE7Do28gRXhjbHVzaXZhIHBhcmEgbWFudGVyIGUgdG9ybmFyIGFjZXNzw612ZWlzIG9zIHNldXMgZG9jdW1lbnRvcywgZW0gZm9ybWF0byBkaWdpdGFsLCBuZXN0ZSByZXBvc2l0w7NyaW8uCgpDb20gYSBjb25jZXNzw6NvIGRlc3RhIGxpY2Vuw6dhIG7Do28gZXhjbHVzaXZhLCBvIGRlcG9zaXRhbnRlIG1hbnTDqW0gdG9kb3Mgb3MgZGlyZWl0b3MgZGUgYXV0b3IuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKTGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKCkFvIGNvbmNvcmRhciBjb20gZXN0YSBsaWNlbsOnYSBlIGFjZWl0w6EtbGEsIHZvY8OqIChhdXRvciBvdSBkZXRlbnRvciBkb3MgZGlyZWl0b3MgYXV0b3JhaXMpOgoKYSkgRGVjbGFyYSBxdWUgY29uaGVjZSBhIHBvbMOtdGljYSBkZSBjb3B5cmlnaHQgZGEgZWRpdG9yYSBkbyBzZXUgZG9jdW1lbnRvOwpiKSBEZWNsYXJhIHF1ZSBjb25oZWNlIGUgYWNlaXRhIGFzIERpcmV0cml6ZXMgcGFyYSBvIFJlcG9zaXTDs3JpbyBJbnN0aXR1Y2lvbmFsIGRhIFVGUEU7CmMpIENvbmNlZGUgw6AgVUZQRSBvIGRpcmVpdG8gbsOjbyBleGNsdXNpdm8gZGUgYXJxdWl2YXIsIHJlcHJvZHV6aXIsIGNvbnZlcnRlciAoY29tbyBkZWZpbmlkbyBhIHNlZ3VpciksIGNvbXVuaWNhciBlL291IGRpc3RyaWJ1aXIsIG5vIFJJLCBvIGRvY3VtZW50byBlbnRyZWd1ZSAoaW5jbHVpbmRvIG8gcmVzdW1vL2Fic3RyYWN0KSBlbSBmb3JtYXRvIGRpZ2l0YWwgb3UgcG9yIG91dHJvIG1laW87CmQpIERlY2xhcmEgcXVlIGF1dG9yaXphIGEgVUZQRSBhIGFycXVpdmFyIG1haXMgZGUgdW1hIGPDs3BpYSBkZXN0ZSBkb2N1bWVudG8gZSBjb252ZXJ0w6otbG8sIHNlbSBhbHRlcmFyIG8gc2V1IGNvbnRlw7pkbywgcGFyYSBxdWFscXVlciBmb3JtYXRvIGRlIGZpY2hlaXJvLCBtZWlvIG91IHN1cG9ydGUsIHBhcmEgZWZlaXRvcyBkZSBzZWd1cmFuw6dhLCBwcmVzZXJ2YcOnw6NvIChiYWNrdXApIGUgYWNlc3NvOwplKSBEZWNsYXJhIHF1ZSBvIGRvY3VtZW50byBzdWJtZXRpZG8gw6kgbyBzZXUgdHJhYmFsaG8gb3JpZ2luYWwgZSBxdWUgZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBhIHRlcmNlaXJvcyBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2Ugb3MgZGlyZWl0b3MgZGUgb3V0cmEgcGVzc29hIG91IGVudGlkYWRlOwpmKSBEZWNsYXJhIHF1ZSwgbm8gY2FzbyBkbyBkb2N1bWVudG8gc3VibWV0aWRvIGNvbnRlciBtYXRlcmlhbCBkbyBxdWFsIG7Do28gZGV0w6ltIG9zIGRpcmVpdG9zIGRlCmF1dG9yLCBvYnRldmUgYSBhdXRvcml6YcOnw6NvIGlycmVzdHJpdGEgZG8gcmVzcGVjdGl2byBkZXRlbnRvciBkZXNzZXMgZGlyZWl0b3MgcGFyYSBjZWRlciDDoApVRlBFIG9zIGRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgTGljZW7Dp2EgZSBhdXRvcml6YXIgYSB1bml2ZXJzaWRhZGUgYSB1dGlsaXrDoS1sb3MgbGVnYWxtZW50ZS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBlc3NlIG1hdGVyaWFsIGN1am9zIGRpcmVpdG9zIHPDo28gZGUgdGVyY2Vpcm9zIGVzdMOhIGNsYXJhbWVudGUgaWRlbnRpZmljYWRvIGUgcmVjb25oZWNpZG8gbm8gdGV4dG8gb3UgY29udGXDumRvIGRvIGRvY3VtZW50byBlbnRyZWd1ZTsKZykgU2UgbyBkb2N1bWVudG8gZW50cmVndWUgw6kgYmFzZWFkbyBlbSB0cmFiYWxobyBmaW5hbmNpYWRvIG91IGFwb2lhZG8gcG9yIG91dHJhIGluc3RpdHVpw6fDo28gcXVlIG7Do28gYSBVRlBFLMKgZGVjbGFyYSBxdWUgY3VtcHJpdSBxdWFpc3F1ZXIgb2JyaWdhw6fDtWVzIGV4aWdpZGFzIHBlbG8gcmVzcGVjdGl2byBjb250cmF0byBvdSBhY29yZG8uCgpBIFVGUEUgaWRlbnRpZmljYXLDoSBjbGFyYW1lbnRlIG8ocykgbm9tZShzKSBkbyhzKSBhdXRvciAoZXMpIGRvcyBkaXJlaXRvcyBkbyBkb2N1bWVudG8gZW50cmVndWUgZSBuw6NvIGZhcsOhIHF1YWxxdWVyIGFsdGVyYcOnw6NvLCBwYXJhIGFsw6ltIGRvIHByZXZpc3RvIG5hIGFsw61uZWEgYykuCg==Repositório InstitucionalPUBhttps://repositorio.ufpe.br/oai/requestattena@ufpe.bropendoar:22212019-10-25T07:54:20Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)false |
dc.title.pt_BR.fl_str_mv |
Safe evolution of software product lines and sets of product lines |
title |
Safe evolution of software product lines and sets of product lines |
spellingShingle |
Safe evolution of software product lines and sets of product lines TEIXEIRA, Leopoldo Motta Engenharia de software Software - Refatoração Software - Reutilização Linhas de produtos de software Evolução de software Refinamento |
title_short |
Safe evolution of software product lines and sets of product lines |
title_full |
Safe evolution of software product lines and sets of product lines |
title_fullStr |
Safe evolution of software product lines and sets of product lines |
title_full_unstemmed |
Safe evolution of software product lines and sets of product lines |
title_sort |
Safe evolution of software product lines and sets of product lines |
author |
TEIXEIRA, Leopoldo Motta |
author_facet |
TEIXEIRA, Leopoldo Motta |
author_role |
author |
dc.contributor.author.fl_str_mv |
TEIXEIRA, Leopoldo Motta |
dc.contributor.advisor1.fl_str_mv |
BORBA, Paulo Henrique Monteiro |
dc.contributor.advisor-co1.fl_str_mv |
GHEYI, Rohit |
contributor_str_mv |
BORBA, Paulo Henrique Monteiro GHEYI, Rohit |
dc.subject.por.fl_str_mv |
Engenharia de software Software - Refatoração Software - Reutilização Linhas de produtos de software Evolução de software Refinamento |
topic |
Engenharia de software Software - Refatoração Software - Reutilização Linhas de produtos de software Evolução de software Refinamento |
description |
Linhas de Produtos de Software exploram reuso entre sistemas de software, fornecendo uma maneira sistemática de gerá-los. Extrair e evoluir linhas de produtos a partir de produtos existentes pode ser caro e propenso a erros. Tais tarefas podem se beneficiar de refatoramentos com base formal, garantindo corretude por construção. Linhas de produtos são muitas vezes desenvolvidas no contexto de um conjunto de linhas relacionadas. Por exemplo, no contexto de populações de produtos, podemos ter diferentes versões de uma linha sendo desenvolvidas simultaneamente em diferentes branches. Também podemos combinar várias linhas que dependem umas das outras para desenvolver multilinhas de produto. Ao evoluir uma linha pertencente a um conjunto, é importante verificar se as alterações afetam as demais linhas do mesmo conjunto. A teoria de refinamento de linhas de produtos formaliza a noção de evolução segura em termos de uma relação de refinamento. Refinamento captura preservação de comportamento, mas abstrai melhoria de qualidade. Neste trabalho, n´os estendemos essa teoria para populações de produtos e multilinhas de produtos. Estabelecemos propriedades de composicionalidade, que estabelecem as condições necessárias para garantir a evolução segura de conjuntos de linhas quando evoluímos individualmente seus membros. As teorias de refinamento são gerais com respeito às diferentes linguagens usadas para descrever modelos de características, modelos de configuração e demais artefatos para implementar linhas de produtos e conjuntos de linhas. Pressupostos e axiomas estabelecem as interfaces entre nossas teorias e linguagens específicas. Instanciar as teorias com diferentes combinações de linguagens concretas nos permite derivar transformações que abstraem evoluções seguras, que vão desde a evolução individual de artefatos até a evolução de linhas de produtos e seus conjuntos como um todo. Investigamos e exploramos semelhanças entre estas linguagens, abstraindo propriedades em comum, o que resulta em transformações expressas em n´níveis mais altos de abstração, que podem ser reutilizados por mais linguagens. Desta forma, n´os propomos uma linha de produtos de teorias, onde diferentes linguagens correspondem a diferentes features, e os produtos correspondem à instanciações das teorias de refinamento. Foi utilizado o Prototype Verification System para codificação e prova das teorias e suas instanciações. Para avaliar a expressividade das transformações propostas, analisamos o histórico de evolução de linhas de produtos, observando se transformações são expressivas o suficiente para justificar os cenários de evolução segura. Além disso, também estudamos a evolução do kernel do Linux e mostramos que a maioria dos padrões de evolução encontrados está de acordo com a noção de refinamento de linhas de produtos. Finalmente, também usamos as transformações para raciocinar sobre a evolução da linha de produtos de teorias. |
publishDate |
2014 |
dc.date.issued.fl_str_mv |
2014-01-31 |
dc.date.accessioned.fl_str_mv |
2015-03-12T14:36:57Z |
dc.date.available.fl_str_mv |
2015-03-12T14:36:57Z |
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.citation.fl_str_mv |
TEIXEIRA, Leopoldo Motta. Safe evolution of software product lines and sets of product lines. Recife, 2014. 148 f. Tese (doutorado) - UFPE, Centro de Informática, Programa de Pós-graduação em Ciência da Computação, 2014.. |
dc.identifier.uri.fl_str_mv |
https://repositorio.ufpe.br/handle/123456789/12164 |
dc.identifier.dark.fl_str_mv |
ark:/64986/001300000x9m7 |
identifier_str_mv |
TEIXEIRA, Leopoldo Motta. Safe evolution of software product lines and sets of product lines. Recife, 2014. 148 f. Tese (doutorado) - UFPE, Centro de Informática, Programa de Pós-graduação em Ciência da Computação, 2014.. ark:/64986/001300000x9m7 |
url |
https://repositorio.ufpe.br/handle/123456789/12164 |
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 |
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/12164/5/TESE%20Leopoldo%20Mota%20Teixeira.pdf.jpg https://repositorio.ufpe.br/bitstream/123456789/12164/1/TESE%20Leopoldo%20Mota%20Teixeira.pdf https://repositorio.ufpe.br/bitstream/123456789/12164/2/license_rdf https://repositorio.ufpe.br/bitstream/123456789/12164/3/license.txt https://repositorio.ufpe.br/bitstream/123456789/12164/4/TESE%20Leopoldo%20Mota%20Teixeira.pdf.txt |
bitstream.checksum.fl_str_mv |
42b9011a4b58b4e8afd5b421f7b1552b 64b57ec6d2d2c444e293077b798a417e 66e71c371cc565284e70f40736c94386 4b8a02c7f2818eaf00dcf2260dd5eb08 a16ade6132d1253967803b9c6676ba6e |
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_ |
1815172942224424960 |