Refactoring as formal refinements

Detalhes bibliográficos
Autor(a) principal: Lopes Cornélio, Márcio
Data de Publicação: 2004
Tipo de documento: Tese
Idioma: por
Título da fonte: Repositório Institucional da UFPE
Texto Completo: https://repositorio.ufpe.br/handle/123456789/1891
Resumo: A reestruturação de programas no contexto da orientação a objeto é também conhecida como refactoring e consiste em mudanças na estrutura interna de um software, sem modificar seu com portamento externo, a ¯m de melhorar sua legibilidade e torn¶a-lo mais f¶acil de passar por futuras mudan»cas. Na pr¶atica, refactoring baseia-se em compila»c~ao e testes para assegurar a preserva»c~ao do comportamento. Trabalhos como os de Opdyke e Roberts foram realizados com vistas µa formaliza»c~ao de refac- torings por meio da identi¯ca»c~ao de condi»c~oes que devem ser satisfeitas para assegurar que uma mudan»ca num programa preserva o comportamento do mesmo. As condi»c~oes, geralmente escritas na linguagem do c¶alculo de predicados, s~ao introduzidas como pr¶e e p¶os-condi»c~oes dos refactor- ings. Outras abordagens para a prova de preserva»c~ao do comportamento de refactorings usam formalismos como an¶alise conceitual e reescritura de grafos. Contudo, n~ao h¶a t¶ecnica alg¶ebrica que apresente refactorings como transforma»c~oes que preservam o comportamento, com prova deste fato. Nossa principal contribui»c~ao constitui-se na apresenta»c~ao de refactorings como transforma»c~oes de programas escritos em rool (Re¯nement object-oriented Language), uma linguagem baseada em Java, com classes, controle de visibilidade, liga»c~ao din^amica, e recurs~ao. A linguagem rool permite que raciocinemos sobre programas orientados a objetos e especi¯ca»c~oes, pois a mesma une estas constru»c~oes como no c¶alculo de re¯namentos de Morgan. A sem^antica de rool ¶e baseada em weakest preconditions. Um conjunto de leis de programa»c~ao est¶a dispon¶³vel tanto para os comandos imperativos de rool quanto para construtores relacionados µa orienta»c~ao a objetos. A prova, na sem^antica de rool, de que tais leis s~ao corretas, ¶e tamb¶em uma contribui»c~ao do presente trabalho. Apresentamos refactorings como regras alg¶ebricas de re¯namento envolvendo programas. A prova da preserva»c~ao do comportamento ¶e realizada pela aplica»c~ao de leis de programa»c~ao a um lado da regra a ¯m de obtermos o lado oposto. N¶os generalizamos a t¶ecnica padr~ao de re¯namento de dados a ¯m de lidar com hierarquia de classes. Neste trabalho tamb¶em apresentamos como obter um sistema estruturado segundo um padr~ao de projeto, por meio da aplica»c~ao de regras de refactoring. Padr~oes de projeto constituem-se num objetivo natural para a realiza»c~ao de transforma»c~oes por meio da aplica»c~ao de refactorings. Trabalhos presentes na literatura sobre padr~oes de projeto que prop~oem a formaliza»c~ao dos mesmos, em geral, concentram-se em suas descri»c~oes formais, n~ao na transforma»c~ao de um sistema com vistas a estrutur¶a-lo de acordo com padr~oes de projeto. Tamb¶em apresentamos a transforma»c~ao de uma aplica»c~ao monol¶³tica para uma aplica»c~ao estruturada segundo um padr~ao arquitetural.
id UFPE_d5be7c114f7b6df2e8ff7d74ed7e7a41
oai_identifier_str oai:repositorio.ufpe.br:123456789/1891
network_acronym_str UFPE
network_name_str Repositório Institucional da UFPE
repository_id_str 2221
spelling Lopes Cornélio, MárcioLúcia Caneca Cavalcanti, Ana 2014-06-12T15:52:59Z2014-06-12T15:52:59Z2004Lopes Cornélio, Márcio; Lúcia Caneca Cavalcanti, Ana. Refactoring as formal refinements. 2004. Tese (Doutorado). Programa de Pós-Graduação em Ciência da Computação, Universidade Federal de Pernambuco, Recife, 2004.https://repositorio.ufpe.br/handle/123456789/1891A reestruturação de programas no contexto da orientação a objeto é também conhecida como refactoring e consiste em mudanças na estrutura interna de um software, sem modificar seu com portamento externo, a ¯m de melhorar sua legibilidade e torn¶a-lo mais f¶acil de passar por futuras mudan»cas. Na pr¶atica, refactoring baseia-se em compila»c~ao e testes para assegurar a preserva»c~ao do comportamento. Trabalhos como os de Opdyke e Roberts foram realizados com vistas µa formaliza»c~ao de refac- torings por meio da identi¯ca»c~ao de condi»c~oes que devem ser satisfeitas para assegurar que uma mudan»ca num programa preserva o comportamento do mesmo. As condi»c~oes, geralmente escritas na linguagem do c¶alculo de predicados, s~ao introduzidas como pr¶e e p¶os-condi»c~oes dos refactor- ings. Outras abordagens para a prova de preserva»c~ao do comportamento de refactorings usam formalismos como an¶alise conceitual e reescritura de grafos. Contudo, n~ao h¶a t¶ecnica alg¶ebrica que apresente refactorings como transforma»c~oes que preservam o comportamento, com prova deste fato. Nossa principal contribui»c~ao constitui-se na apresenta»c~ao de refactorings como transforma»c~oes de programas escritos em rool (Re¯nement object-oriented Language), uma linguagem baseada em Java, com classes, controle de visibilidade, liga»c~ao din^amica, e recurs~ao. A linguagem rool permite que raciocinemos sobre programas orientados a objetos e especi¯ca»c~oes, pois a mesma une estas constru»c~oes como no c¶alculo de re¯namentos de Morgan. A sem^antica de rool ¶e baseada em weakest preconditions. Um conjunto de leis de programa»c~ao est¶a dispon¶³vel tanto para os comandos imperativos de rool quanto para construtores relacionados µa orienta»c~ao a objetos. A prova, na sem^antica de rool, de que tais leis s~ao corretas, ¶e tamb¶em uma contribui»c~ao do presente trabalho. Apresentamos refactorings como regras alg¶ebricas de re¯namento envolvendo programas. A prova da preserva»c~ao do comportamento ¶e realizada pela aplica»c~ao de leis de programa»c~ao a um lado da regra a ¯m de obtermos o lado oposto. N¶os generalizamos a t¶ecnica padr~ao de re¯namento de dados a ¯m de lidar com hierarquia de classes. Neste trabalho tamb¶em apresentamos como obter um sistema estruturado segundo um padr~ao de projeto, por meio da aplica»c~ao de regras de refactoring. Padr~oes de projeto constituem-se num objetivo natural para a realiza»c~ao de transforma»c~oes por meio da aplica»c~ao de refactorings. Trabalhos presentes na literatura sobre padr~oes de projeto que prop~oem a formaliza»c~ao dos mesmos, em geral, concentram-se em suas descri»c~oes formais, n~ao na transforma»c~ao de um sistema com vistas a estrutur¶a-lo de acordo com padr~oes de projeto. Tamb¶em apresentamos a transforma»c~ao de uma aplica»c~ao monol¶³tica para uma aplica»c~ao estruturada segundo um padr~ao arquitetural.porUniversidade Federal de PernambucoAttribution-NonCommercial-NoDerivs 3.0 Brazilhttp://creativecommons.org/licenses/by-nc-nd/3.0/br/info:eu-repo/semantics/openAccessMétodos Formais, Cálculo de refinamentos, Orientação a objetRefactoring as formal refinementsinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisreponame:Repositório Institucional da UFPEinstname:Universidade Federal de Pernambuco (UFPE)instacron:UFPEORIGINALarquivo4837_1.pdfapplication/pdf1490840https://repositorio.ufpe.br/bitstream/123456789/1891/1/arquivo4837_1.pdf1e2239b5952d87633b8a93c565229e3eMD51LICENSElicense.txttext/plain1748https://repositorio.ufpe.br/bitstream/123456789/1891/2/license.txt8a4605be74aa9ea9d79846c1fba20a33MD52TEXTarquivo4837_1.pdf.txtarquivo4837_1.pdf.txtExtracted texttext/plain565990https://repositorio.ufpe.br/bitstream/123456789/1891/3/arquivo4837_1.pdf.txtd7bbbc857dc704ec1faca773499449dbMD53THUMBNAILarquivo4837_1.pdf.jpgarquivo4837_1.pdf.jpgGenerated Thumbnailimage/jpeg1211https://repositorio.ufpe.br/bitstream/123456789/1891/4/arquivo4837_1.pdf.jpg26e82f66721b51a0e2d65f141cafb33dMD54123456789/18912019-10-25 02:47:20.459oai:repositorio.ufpe.br:123456789/1891Tk9URTogUExBQ0UgWU9VUiBPV04gTElDRU5TRSBIRVJFClRoaXMgc2FtcGxlIGxpY2Vuc2UgaXMgcHJvdmlkZWQgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seS4KCk5PTi1FWENMVVNJVkUgRElTVFJJQlVUSU9OIExJQ0VOU0UKCkJ5IHNpZ25pbmcgYW5kIHN1Ym1pdHRpbmcgdGhpcyBsaWNlbnNlLCB5b3UgKHRoZSBhdXRob3Iocykgb3IgY29weXJpZ2h0Cm93bmVyKSBncmFudHMgdG8gRFNwYWNlIFVuaXZlcnNpdHkgKERTVSkgdGhlIG5vbi1leGNsdXNpdmUgcmlnaHQgdG8gcmVwcm9kdWNlLAp0cmFuc2xhdGUgKGFzIGRlZmluZWQgYmVsb3cpLCBhbmQvb3IgZGlzdHJpYnV0ZSB5b3VyIHN1Ym1pc3Npb24gKGluY2x1ZGluZwp0aGUgYWJzdHJhY3QpIHdvcmxkd2lkZSBpbiBwcmludCBhbmQgZWxlY3Ryb25pYyBmb3JtYXQgYW5kIGluIGFueSBtZWRpdW0sCmluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYXVkaW8gb3IgdmlkZW8uCgpZb3UgYWdyZWUgdGhhdCBEU1UgbWF5LCB3aXRob3V0IGNoYW5naW5nIHRoZSBjb250ZW50LCB0cmFuc2xhdGUgdGhlCnN1Ym1pc3Npb24gdG8gYW55IG1lZGl1bSBvciBmb3JtYXQgZm9yIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZhdGlvbi4KCllvdSBhbHNvIGFncmVlIHRoYXQgRFNVIG1heSBrZWVwIG1vcmUgdGhhbiBvbmUgY29weSBvZiB0aGlzIHN1Ym1pc3Npb24gZm9yCnB1cnBvc2VzIG9mIHNlY3VyaXR5LCBiYWNrLXVwIGFuZCBwcmVzZXJ2YXRpb24uCgpZb3UgcmVwcmVzZW50IHRoYXQgdGhlIHN1Ym1pc3Npb24gaXMgeW91ciBvcmlnaW5hbCB3b3JrLCBhbmQgdGhhdCB5b3UgaGF2ZQp0aGUgcmlnaHQgdG8gZ3JhbnQgdGhlIHJpZ2h0cyBjb250YWluZWQgaW4gdGhpcyBsaWNlbnNlLiBZb3UgYWxzbyByZXByZXNlbnQKdGhhdCB5b3VyIHN1Ym1pc3Npb24gZG9lcyBub3QsIHRvIHRoZSBiZXN0IG9mIHlvdXIga25vd2xlZGdlLCBpbmZyaW5nZSB1cG9uCmFueW9uZSdzIGNvcHlyaWdodC4KCklmIHRoZSBzdWJtaXNzaW9uIGNvbnRhaW5zIG1hdGVyaWFsIGZvciB3aGljaCB5b3UgZG8gbm90IGhvbGQgY29weXJpZ2h0LAp5b3UgcmVwcmVzZW50IHRoYXQgeW91IGhhdmUgb2J0YWluZWQgdGhlIHVucmVzdHJpY3RlZCBwZXJtaXNzaW9uIG9mIHRoZQpjb3B5cmlnaHQgb3duZXIgdG8gZ3JhbnQgRFNVIHRoZSByaWdodHMgcmVxdWlyZWQgYnkgdGhpcyBsaWNlbnNlLCBhbmQgdGhhdApzdWNoIHRoaXJkLXBhcnR5IG93bmVkIG1hdGVyaWFsIGlzIGNsZWFybHkgaWRlbnRpZmllZCBhbmQgYWNrbm93bGVkZ2VkCndpdGhpbiB0aGUgdGV4dCBvciBjb250ZW50IG9mIHRoZSBzdWJtaXNzaW9uLgoKSUYgVEhFIFNVQk1JU1NJT04gSVMgQkFTRUQgVVBPTiBXT1JLIFRIQVQgSEFTIEJFRU4gU1BPTlNPUkVEIE9SIFNVUFBPUlRFRApCWSBBTiBBR0VOQ1kgT1IgT1JHQU5JWkFUSU9OIE9USEVSIFRIQU4gRFNVLCBZT1UgUkVQUkVTRU5UIFRIQVQgWU9VIEhBVkUKRlVMRklMTEVEIEFOWSBSSUdIVCBPRiBSRVZJRVcgT1IgT1RIRVIgT0JMSUdBVElPTlMgUkVRVUlSRUQgQlkgU1VDSApDT05UUkFDVCBPUiBBR1JFRU1FTlQuCgpEU1Ugd2lsbCBjbGVhcmx5IGlkZW50aWZ5IHlvdXIgbmFtZShzKSBhcyB0aGUgYXV0aG9yKHMpIG9yIG93bmVyKHMpIG9mIHRoZQpzdWJtaXNzaW9uLCBhbmQgd2lsbCBub3QgbWFrZSBhbnkgYWx0ZXJhdGlvbiwgb3RoZXIgdGhhbiBhcyBhbGxvd2VkIGJ5IHRoaXMKbGljZW5zZSwgdG8geW91ciBzdWJtaXNzaW9uLgo=Repositório InstitucionalPUBhttps://repositorio.ufpe.br/oai/requestattena@ufpe.bropendoar:22212019-10-25T05:47:20Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)false
dc.title.pt_BR.fl_str_mv Refactoring as formal refinements
title Refactoring as formal refinements
spellingShingle Refactoring as formal refinements
Lopes Cornélio, Márcio
Métodos Formais, Cálculo de refinamentos, Orientação a objet
title_short Refactoring as formal refinements
title_full Refactoring as formal refinements
title_fullStr Refactoring as formal refinements
title_full_unstemmed Refactoring as formal refinements
title_sort Refactoring as formal refinements
author Lopes Cornélio, Márcio
author_facet Lopes Cornélio, Márcio
author_role author
dc.contributor.author.fl_str_mv Lopes Cornélio, Márcio
dc.contributor.advisor1.fl_str_mv Lúcia Caneca Cavalcanti, Ana
contributor_str_mv Lúcia Caneca Cavalcanti, Ana
dc.subject.por.fl_str_mv Métodos Formais, Cálculo de refinamentos, Orientação a objet
topic Métodos Formais, Cálculo de refinamentos, Orientação a objet
description A reestruturação de programas no contexto da orientação a objeto é também conhecida como refactoring e consiste em mudanças na estrutura interna de um software, sem modificar seu com portamento externo, a ¯m de melhorar sua legibilidade e torn¶a-lo mais f¶acil de passar por futuras mudan»cas. Na pr¶atica, refactoring baseia-se em compila»c~ao e testes para assegurar a preserva»c~ao do comportamento. Trabalhos como os de Opdyke e Roberts foram realizados com vistas µa formaliza»c~ao de refac- torings por meio da identi¯ca»c~ao de condi»c~oes que devem ser satisfeitas para assegurar que uma mudan»ca num programa preserva o comportamento do mesmo. As condi»c~oes, geralmente escritas na linguagem do c¶alculo de predicados, s~ao introduzidas como pr¶e e p¶os-condi»c~oes dos refactor- ings. Outras abordagens para a prova de preserva»c~ao do comportamento de refactorings usam formalismos como an¶alise conceitual e reescritura de grafos. Contudo, n~ao h¶a t¶ecnica alg¶ebrica que apresente refactorings como transforma»c~oes que preservam o comportamento, com prova deste fato. Nossa principal contribui»c~ao constitui-se na apresenta»c~ao de refactorings como transforma»c~oes de programas escritos em rool (Re¯nement object-oriented Language), uma linguagem baseada em Java, com classes, controle de visibilidade, liga»c~ao din^amica, e recurs~ao. A linguagem rool permite que raciocinemos sobre programas orientados a objetos e especi¯ca»c~oes, pois a mesma une estas constru»c~oes como no c¶alculo de re¯namentos de Morgan. A sem^antica de rool ¶e baseada em weakest preconditions. Um conjunto de leis de programa»c~ao est¶a dispon¶³vel tanto para os comandos imperativos de rool quanto para construtores relacionados µa orienta»c~ao a objetos. A prova, na sem^antica de rool, de que tais leis s~ao corretas, ¶e tamb¶em uma contribui»c~ao do presente trabalho. Apresentamos refactorings como regras alg¶ebricas de re¯namento envolvendo programas. A prova da preserva»c~ao do comportamento ¶e realizada pela aplica»c~ao de leis de programa»c~ao a um lado da regra a ¯m de obtermos o lado oposto. N¶os generalizamos a t¶ecnica padr~ao de re¯namento de dados a ¯m de lidar com hierarquia de classes. Neste trabalho tamb¶em apresentamos como obter um sistema estruturado segundo um padr~ao de projeto, por meio da aplica»c~ao de regras de refactoring. Padr~oes de projeto constituem-se num objetivo natural para a realiza»c~ao de transforma»c~oes por meio da aplica»c~ao de refactorings. Trabalhos presentes na literatura sobre padr~oes de projeto que prop~oem a formaliza»c~ao dos mesmos, em geral, concentram-se em suas descri»c~oes formais, n~ao na transforma»c~ao de um sistema com vistas a estrutur¶a-lo de acordo com padr~oes de projeto. Tamb¶em apresentamos a transforma»c~ao de uma aplica»c~ao monol¶³tica para uma aplica»c~ao estruturada segundo um padr~ao arquitetural.
publishDate 2004
dc.date.issued.fl_str_mv 2004
dc.date.accessioned.fl_str_mv 2014-06-12T15:52:59Z
dc.date.available.fl_str_mv 2014-06-12T15:52:59Z
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 Lopes Cornélio, Márcio; Lúcia Caneca Cavalcanti, Ana. Refactoring as formal refinements. 2004. Tese (Doutorado). Programa de Pós-Graduação em Ciência da Computação, Universidade Federal de Pernambuco, Recife, 2004.
dc.identifier.uri.fl_str_mv https://repositorio.ufpe.br/handle/123456789/1891
identifier_str_mv Lopes Cornélio, Márcio; Lúcia Caneca Cavalcanti, Ana. Refactoring as formal refinements. 2004. Tese (Doutorado). Programa de Pós-Graduação em Ciência da Computação, Universidade Federal de Pernambuco, Recife, 2004.
url https://repositorio.ufpe.br/handle/123456789/1891
dc.language.iso.fl_str_mv por
language por
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/1891/1/arquivo4837_1.pdf
https://repositorio.ufpe.br/bitstream/123456789/1891/2/license.txt
https://repositorio.ufpe.br/bitstream/123456789/1891/3/arquivo4837_1.pdf.txt
https://repositorio.ufpe.br/bitstream/123456789/1891/4/arquivo4837_1.pdf.jpg
bitstream.checksum.fl_str_mv 1e2239b5952d87633b8a93c565229e3e
8a4605be74aa9ea9d79846c1fba20a33
d7bbbc857dc704ec1faca773499449db
26e82f66721b51a0e2d65f141cafb33d
bitstream.checksumAlgorithm.fl_str_mv 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_ 1802310662988234752