Aspecth: uma extensão de Haskell orientada a aspectos
| Ano de defesa: | 2005 |
|---|---|
| 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 Pernambuco
|
| Programa de Pós-Graduação: |
Não Informado pela instituição
|
| Departamento: |
Não Informado pela instituição
|
| País: |
Não Informado pela instituição
|
| Palavras-chave em Português: | |
| Link de acesso: | https://repositorio.ufpe.br/handle/123456789/2776 |
Resumo: | Uma das principais técnicas de abstração oferecida pelas linguagens de programação atuais é a possibilidade de dividir um sistema em unidades de código que capturam suas funcionalidades. Esta abstração permite que mudanças em uma unidade em particular não se propaguem por todo sistema. No entanto, isto é apenas aplicável quando tais funcionalidades ou preocupações podem de fato ser classificadas como unidades separadas. Algumas funcionalidades ou preocupações - conhecidas como preocupações entrelaçadas (crosscutting concerns) - repercutem por todo o sistema e não podem ser definidas em módulos tradicionais. Assim, todo o código que as implementa fica espalhado e misturado por diversos módulos. O paradigma de programação orientado a aspectos (AOP) tem sido apresentado na literatura como uma maneira alternativa de implementar os crosscutting concerns de um sistema, disponibilizando construções que permitem separá-los em unidades adequadamente. Um conceito central neste paradigma é o de aspecto, que é sua unidade modular. Uma linguagem de programação orientada a aspectos é usualmente estabelecida como uma extensão de uma linguagem de programação existente, provendo ao programador tanto as unidades modulares desta linguagem (conhecida como linguagem base) quanto os aspectos. Este trabalho apresenta a linguagem AspectH, uma extensão orientada a aspectos de Haskell. AspectH implementa o mecanismo AOP de pointcuts e advice como em AspectJ e foi projetada para atuar em programas Haskell que utilizam mônadas. Por meio de AspectH, investigamos os benefícios que uma abordagem AOP pode oferecer no contexto de uma linguagem puramente funcional. Em outras palavras, pretendemos demonstrar que AOP pode fazer por Haskell e linguagens funcionais o que já faz, como exemplo, por linguagens orientadas a objetos. AspectH oferece ao programador a possibilidade de implementar os crosscutting concerns de programas monádicos em aspectos, ajudando-o a criar programas mais modulares e conseqüentemente mais legíveis, mais fáceis de manter e reusar |
| id |
UFPE_4704f5e2e71218bc62d75c1779dfa0ae |
|---|---|
| oai_identifier_str |
oai:repositorio.ufpe.br:123456789/2776 |
| network_acronym_str |
UFPE |
| network_name_str |
Repositório Institucional da UFPE |
| repository_id_str |
|
| spelling |
ANDRADE, Carlos Andreazza RegoSANTOS, Andre Luís de Medeiros2014-06-12T16:01:06Z2014-06-12T16:01:06Z2005Andreazza Rego Andrade, Carlos; Luís de Medeiros Santos, Andre. Aspecth: uma extensão de Haskell orientada a aspectos. 2005. Dissertação (Mestrado). Programa de Pós-Graduação em Ciência da Computação, Universidade Federal de Pernambuco, Recife, 2005.https://repositorio.ufpe.br/handle/123456789/2776Uma das principais técnicas de abstração oferecida pelas linguagens de programação atuais é a possibilidade de dividir um sistema em unidades de código que capturam suas funcionalidades. Esta abstração permite que mudanças em uma unidade em particular não se propaguem por todo sistema. No entanto, isto é apenas aplicável quando tais funcionalidades ou preocupações podem de fato ser classificadas como unidades separadas. Algumas funcionalidades ou preocupações - conhecidas como preocupações entrelaçadas (crosscutting concerns) - repercutem por todo o sistema e não podem ser definidas em módulos tradicionais. Assim, todo o código que as implementa fica espalhado e misturado por diversos módulos. O paradigma de programação orientado a aspectos (AOP) tem sido apresentado na literatura como uma maneira alternativa de implementar os crosscutting concerns de um sistema, disponibilizando construções que permitem separá-los em unidades adequadamente. Um conceito central neste paradigma é o de aspecto, que é sua unidade modular. Uma linguagem de programação orientada a aspectos é usualmente estabelecida como uma extensão de uma linguagem de programação existente, provendo ao programador tanto as unidades modulares desta linguagem (conhecida como linguagem base) quanto os aspectos. Este trabalho apresenta a linguagem AspectH, uma extensão orientada a aspectos de Haskell. AspectH implementa o mecanismo AOP de pointcuts e advice como em AspectJ e foi projetada para atuar em programas Haskell que utilizam mônadas. Por meio de AspectH, investigamos os benefícios que uma abordagem AOP pode oferecer no contexto de uma linguagem puramente funcional. Em outras palavras, pretendemos demonstrar que AOP pode fazer por Haskell e linguagens funcionais o que já faz, como exemplo, por linguagens orientadas a objetos. AspectH oferece ao programador a possibilidade de implementar os crosscutting concerns de programas monádicos em aspectos, ajudando-o a criar programas mais modulares e conseqüentemente mais legíveis, mais fáceis de manter e reusarporUniversidade Federal de PernambucoAttribution-NonCommercial-NoDerivs 3.0 Brazilhttp://creativecommons.org/licenses/by-nc-nd/3.0/br/info:eu-repo/semantics/openAccessProgramação orientada a aspectosAspecth: uma extensão de Haskell orientada a aspectosinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisreponame:Repositório Institucional da UFPEinstname:Universidade Federal de Pernambuco (UFPE)instacron:UFPETHUMBNAILarquivo7160_1.pdf.jpgarquivo7160_1.pdf.jpgGenerated Thumbnailimage/jpeg1284https://repositorio.ufpe.br/bitstream/123456789/2776/4/arquivo7160_1.pdf.jpg550787d6e660fb0b0974f3df6086f8edMD54ORIGINALarquivo7160_1.pdfapplication/pdf1101431https://repositorio.ufpe.br/bitstream/123456789/2776/1/arquivo7160_1.pdf69c90a543a0c30de3b872aae2a3bb5a2MD51LICENSElicense.txttext/plain1748https://repositorio.ufpe.br/bitstream/123456789/2776/2/license.txt8a4605be74aa9ea9d79846c1fba20a33MD52TEXTarquivo7160_1.pdf.txtarquivo7160_1.pdf.txtExtracted texttext/plain630837https://repositorio.ufpe.br/bitstream/123456789/2776/3/arquivo7160_1.pdf.txtf579f97d350eebf199635089f0910dd1MD53123456789/27762019-10-25 06:34:08.558oai:repositorio.ufpe.br:123456789/2776Tk9URTogUExBQ0UgWU9VUiBPV04gTElDRU5TRSBIRVJFClRoaXMgc2FtcGxlIGxpY2Vuc2UgaXMgcHJvdmlkZWQgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seS4KCk5PTi1FWENMVVNJVkUgRElTVFJJQlVUSU9OIExJQ0VOU0UKCkJ5IHNpZ25pbmcgYW5kIHN1Ym1pdHRpbmcgdGhpcyBsaWNlbnNlLCB5b3UgKHRoZSBhdXRob3Iocykgb3IgY29weXJpZ2h0Cm93bmVyKSBncmFudHMgdG8gRFNwYWNlIFVuaXZlcnNpdHkgKERTVSkgdGhlIG5vbi1leGNsdXNpdmUgcmlnaHQgdG8gcmVwcm9kdWNlLAp0cmFuc2xhdGUgKGFzIGRlZmluZWQgYmVsb3cpLCBhbmQvb3IgZGlzdHJpYnV0ZSB5b3VyIHN1Ym1pc3Npb24gKGluY2x1ZGluZwp0aGUgYWJzdHJhY3QpIHdvcmxkd2lkZSBpbiBwcmludCBhbmQgZWxlY3Ryb25pYyBmb3JtYXQgYW5kIGluIGFueSBtZWRpdW0sCmluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYXVkaW8gb3IgdmlkZW8uCgpZb3UgYWdyZWUgdGhhdCBEU1UgbWF5LCB3aXRob3V0IGNoYW5naW5nIHRoZSBjb250ZW50LCB0cmFuc2xhdGUgdGhlCnN1Ym1pc3Npb24gdG8gYW55IG1lZGl1bSBvciBmb3JtYXQgZm9yIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZhdGlvbi4KCllvdSBhbHNvIGFncmVlIHRoYXQgRFNVIG1heSBrZWVwIG1vcmUgdGhhbiBvbmUgY29weSBvZiB0aGlzIHN1Ym1pc3Npb24gZm9yCnB1cnBvc2VzIG9mIHNlY3VyaXR5LCBiYWNrLXVwIGFuZCBwcmVzZXJ2YXRpb24uCgpZb3UgcmVwcmVzZW50IHRoYXQgdGhlIHN1Ym1pc3Npb24gaXMgeW91ciBvcmlnaW5hbCB3b3JrLCBhbmQgdGhhdCB5b3UgaGF2ZQp0aGUgcmlnaHQgdG8gZ3JhbnQgdGhlIHJpZ2h0cyBjb250YWluZWQgaW4gdGhpcyBsaWNlbnNlLiBZb3UgYWxzbyByZXByZXNlbnQKdGhhdCB5b3VyIHN1Ym1pc3Npb24gZG9lcyBub3QsIHRvIHRoZSBiZXN0IG9mIHlvdXIga25vd2xlZGdlLCBpbmZyaW5nZSB1cG9uCmFueW9uZSdzIGNvcHlyaWdodC4KCklmIHRoZSBzdWJtaXNzaW9uIGNvbnRhaW5zIG1hdGVyaWFsIGZvciB3aGljaCB5b3UgZG8gbm90IGhvbGQgY29weXJpZ2h0LAp5b3UgcmVwcmVzZW50IHRoYXQgeW91IGhhdmUgb2J0YWluZWQgdGhlIHVucmVzdHJpY3RlZCBwZXJtaXNzaW9uIG9mIHRoZQpjb3B5cmlnaHQgb3duZXIgdG8gZ3JhbnQgRFNVIHRoZSByaWdodHMgcmVxdWlyZWQgYnkgdGhpcyBsaWNlbnNlLCBhbmQgdGhhdApzdWNoIHRoaXJkLXBhcnR5IG93bmVkIG1hdGVyaWFsIGlzIGNsZWFybHkgaWRlbnRpZmllZCBhbmQgYWNrbm93bGVkZ2VkCndpdGhpbiB0aGUgdGV4dCBvciBjb250ZW50IG9mIHRoZSBzdWJtaXNzaW9uLgoKSUYgVEhFIFNVQk1JU1NJT04gSVMgQkFTRUQgVVBPTiBXT1JLIFRIQVQgSEFTIEJFRU4gU1BPTlNPUkVEIE9SIFNVUFBPUlRFRApCWSBBTiBBR0VOQ1kgT1IgT1JHQU5JWkFUSU9OIE9USEVSIFRIQU4gRFNVLCBZT1UgUkVQUkVTRU5UIFRIQVQgWU9VIEhBVkUKRlVMRklMTEVEIEFOWSBSSUdIVCBPRiBSRVZJRVcgT1IgT1RIRVIgT0JMSUdBVElPTlMgUkVRVUlSRUQgQlkgU1VDSApDT05UUkFDVCBPUiBBR1JFRU1FTlQuCgpEU1Ugd2lsbCBjbGVhcmx5IGlkZW50aWZ5IHlvdXIgbmFtZShzKSBhcyB0aGUgYXV0aG9yKHMpIG9yIG93bmVyKHMpIG9mIHRoZQpzdWJtaXNzaW9uLCBhbmQgd2lsbCBub3QgbWFrZSBhbnkgYWx0ZXJhdGlvbiwgb3RoZXIgdGhhbiBhcyBhbGxvd2VkIGJ5IHRoaXMKbGljZW5zZSwgdG8geW91ciBzdWJtaXNzaW9uLgo=Repositório InstitucionalPUBhttps://repositorio.ufpe.br/oai/requestattena@ufpe.bropendoar:22212019-10-25T09:34:08Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)false |
| dc.title.pt_BR.fl_str_mv |
Aspecth: uma extensão de Haskell orientada a aspectos |
| title |
Aspecth: uma extensão de Haskell orientada a aspectos |
| spellingShingle |
Aspecth: uma extensão de Haskell orientada a aspectos ANDRADE, Carlos Andreazza Rego Programação orientada a aspectos |
| title_short |
Aspecth: uma extensão de Haskell orientada a aspectos |
| title_full |
Aspecth: uma extensão de Haskell orientada a aspectos |
| title_fullStr |
Aspecth: uma extensão de Haskell orientada a aspectos |
| title_full_unstemmed |
Aspecth: uma extensão de Haskell orientada a aspectos |
| title_sort |
Aspecth: uma extensão de Haskell orientada a aspectos |
| author |
ANDRADE, Carlos Andreazza Rego |
| author_facet |
ANDRADE, Carlos Andreazza Rego |
| author_role |
author |
| dc.contributor.author.fl_str_mv |
ANDRADE, Carlos Andreazza Rego |
| dc.contributor.advisor1.fl_str_mv |
SANTOS, Andre Luís de Medeiros |
| contributor_str_mv |
SANTOS, Andre Luís de Medeiros |
| dc.subject.por.fl_str_mv |
Programação orientada a aspectos |
| topic |
Programação orientada a aspectos |
| description |
Uma das principais técnicas de abstração oferecida pelas linguagens de programação atuais é a possibilidade de dividir um sistema em unidades de código que capturam suas funcionalidades. Esta abstração permite que mudanças em uma unidade em particular não se propaguem por todo sistema. No entanto, isto é apenas aplicável quando tais funcionalidades ou preocupações podem de fato ser classificadas como unidades separadas. Algumas funcionalidades ou preocupações - conhecidas como preocupações entrelaçadas (crosscutting concerns) - repercutem por todo o sistema e não podem ser definidas em módulos tradicionais. Assim, todo o código que as implementa fica espalhado e misturado por diversos módulos. O paradigma de programação orientado a aspectos (AOP) tem sido apresentado na literatura como uma maneira alternativa de implementar os crosscutting concerns de um sistema, disponibilizando construções que permitem separá-los em unidades adequadamente. Um conceito central neste paradigma é o de aspecto, que é sua unidade modular. Uma linguagem de programação orientada a aspectos é usualmente estabelecida como uma extensão de uma linguagem de programação existente, provendo ao programador tanto as unidades modulares desta linguagem (conhecida como linguagem base) quanto os aspectos. Este trabalho apresenta a linguagem AspectH, uma extensão orientada a aspectos de Haskell. AspectH implementa o mecanismo AOP de pointcuts e advice como em AspectJ e foi projetada para atuar em programas Haskell que utilizam mônadas. Por meio de AspectH, investigamos os benefícios que uma abordagem AOP pode oferecer no contexto de uma linguagem puramente funcional. Em outras palavras, pretendemos demonstrar que AOP pode fazer por Haskell e linguagens funcionais o que já faz, como exemplo, por linguagens orientadas a objetos. AspectH oferece ao programador a possibilidade de implementar os crosscutting concerns de programas monádicos em aspectos, ajudando-o a criar programas mais modulares e conseqüentemente mais legíveis, mais fáceis de manter e reusar |
| publishDate |
2005 |
| dc.date.issued.fl_str_mv |
2005 |
| dc.date.accessioned.fl_str_mv |
2014-06-12T16:01:06Z |
| dc.date.available.fl_str_mv |
2014-06-12T16:01:06Z |
| 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.citation.fl_str_mv |
Andreazza Rego Andrade, Carlos; Luís de Medeiros Santos, Andre. Aspecth: uma extensão de Haskell orientada a aspectos. 2005. Dissertação (Mestrado). Programa de Pós-Graduação em Ciência da Computação, Universidade Federal de Pernambuco, Recife, 2005. |
| dc.identifier.uri.fl_str_mv |
https://repositorio.ufpe.br/handle/123456789/2776 |
| identifier_str_mv |
Andreazza Rego Andrade, Carlos; Luís de Medeiros Santos, Andre. Aspecth: uma extensão de Haskell orientada a aspectos. 2005. Dissertação (Mestrado). Programa de Pós-Graduação em Ciência da Computação, Universidade Federal de Pernambuco, Recife, 2005. |
| url |
https://repositorio.ufpe.br/handle/123456789/2776 |
| 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/2776/4/arquivo7160_1.pdf.jpg https://repositorio.ufpe.br/bitstream/123456789/2776/1/arquivo7160_1.pdf https://repositorio.ufpe.br/bitstream/123456789/2776/2/license.txt https://repositorio.ufpe.br/bitstream/123456789/2776/3/arquivo7160_1.pdf.txt |
| bitstream.checksum.fl_str_mv |
550787d6e660fb0b0974f3df6086f8ed 69c90a543a0c30de3b872aae2a3bb5a2 8a4605be74aa9ea9d79846c1fba20a33 f579f97d350eebf199635089f0910dd1 |
| 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_ |
1862741735310884864 |