[pt] ANALISANDO O FLUXO DE EXCEÇÕES EM PROGRAMAS ORIENTADOS A ASPECTOS

Detalhes bibliográficos
Autor(a) principal: ROBERTA DE SOUZA COELHO
Data de Publicação: 2009
Tipo de documento: Tese
Idioma: eng
Título da fonte: Repositório Institucional da PUC-RIO (Projeto Maxwell)
Texto Completo: https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=12968&idi=1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=12968&idi=2
http://doi.org/10.17771/PUCRio.acad.12968
Resumo: [pt] Os mecanismos de tratamento de exceções têm o objetivo de aumentar a robustez e a modularidade do software na medida em que promovem a separação entre o código dedicado ao tratamento de erros e código associado ao fluxo normal de execução do programa. Estes permitem a detecção de erros e a associação de respostas adequadas aos mesmos, através da execução de códigos de recuperação que são geralmente encapsulados em tratadores (do inglês: handlers). A importância dos mecanismos de tratamento de exceção é atestada pelo fato destes fazerem parte da maioria das linguagens de programação mais utilizadas na atualidade: Java, C++ e C#. Na última década a programação orientada a aspectos (POA) vem sendo amplamente utilizada como forma de modularizar interesses que se encontram espalhados nas decomposições primarias de um sistema (e.g., funções, classes, métodos) em uma abstração chamada aspecto. Os aspectos utilizam construções especificas para promover modificações externas nos programas, incluindo comportamentos adicionais em pontos específicos do código. POA vem sido utilizado com o objetivo de aumentar a modularidade do código de tratamento de exceção e de interesses transversais igualmente importantes tais como: persistência, distribuição, segurança, controle de transações e monitoramento. De acordo com alguns estudos empíricos, POA tem sido usado com sucesso com o objetivo de promover o tratamento de erro modular em vários cenários de tratamento de exceções. Porém, é sabido que mecanismos de programação flexíveis (e.g., herança e polimorfismo) podem ter um efeito negativo no tratamento de exceções. Se por um lado os mecanismos de composição POA baseados na inversão de controle podem trazer um novo leque de possibilidades de projeto, promovendo em muitas circunstâncias uma maior estabilidade do projeto (do inglês: design stability), eles podem perder seu valor se ele torna o tratamento de exceções propenso a erros (do inglês: error-prone). Refinamento aspectuais do comportamento do código base, podem por um lado promover a robustez do sistema em situações onde exceções são lançadas ou contribuir para os problemas típicos de tratamento de exceções mal projetados tais como: (i) exceções não capturadas (do inglês: uncaught exceptions); (ii) exceções capturadas por tratadores genéricos (do inglês: exception subsumption) (i.e., exceções capturadas por um tratador cujo argumento é um supertipo da exceção a ser tratada); (iii) e exceções capturadas por tratadores errados (do inglês: unintended handler action). Infelizmente, não existe nenhuma avaliação sistemática dos efeitos positivos e negativos da programação orientada a aspectos na robustez do código de tratamento de exceções. Os trabalhos de pesquisa descritos na literatura têm se limitado a analisar os impactos dos aspectos no fluxo normal de execução do programa. Além disso, a maioria dos estudos empíricos não vai além de discussões sobre os ganhos de modularidade e as ciladas associadas à utilização de aspectos - para o tratamento de exceções e de outros interesses transversais. Por exemplo, estes estudos não levam em consideração as conseqüências inerentes as novas exceções e tratadores que são adicionadas ao código base junto com a nova funcionalidade adicionada pelos aspectos. Esta tese descreve o primeiro estudo sistemático que avalia quantitativamente o impacto da composição aspectual no fluxo excepcional de programas. Este estudo se baseou na utilização de uma ferramenta de análise do fluxo de exceções chamada SAFE (do inglês: Static Analysis for the Flow of Exceptions) desenvolvida ao longo deste trabalho e na inspeção manual do código de tratamento de exceções de um conjunto de sistemas para os quais a versão Java e AspectJ estavam disponíveis. A ferramenta SAFE foi construída com base no framework SOOT para a análise e otimização de bytecode. A partir de uma representação do programa construída a partir do bytecode do código base combinado com os aspectos (do inglê
id PUC_RIO-1_ecfd853344f366a7d7640dc861661bea
oai_identifier_str oai:MAXWELL.puc-rio.br:12968
network_acronym_str PUC_RIO-1
network_name_str Repositório Institucional da PUC-RIO (Projeto Maxwell)
repository_id_str 534
spelling [pt] ANALISANDO O FLUXO DE EXCEÇÕES EM PROGRAMAS ORIENTADOS A ASPECTOS [en] ANALYZING EXCEPTION FLOWS OF ASPECT-ORIENTED PROGRAMS [pt] ANALISE ESTATICA[pt] EXCECOES NAO CAPTURADAS[pt] PROGRAMAS ORIENTADOS A ASPECTOS[en] STATIC ANALYSIS[en] UNCAUGHT EXCEPTIONS[en] ASPECT-ORIENTED PROGRAMS[pt] Os mecanismos de tratamento de exceções têm o objetivo de aumentar a robustez e a modularidade do software na medida em que promovem a separação entre o código dedicado ao tratamento de erros e código associado ao fluxo normal de execução do programa. Estes permitem a detecção de erros e a associação de respostas adequadas aos mesmos, através da execução de códigos de recuperação que são geralmente encapsulados em tratadores (do inglês: handlers). A importância dos mecanismos de tratamento de exceção é atestada pelo fato destes fazerem parte da maioria das linguagens de programação mais utilizadas na atualidade: Java, C++ e C#. Na última década a programação orientada a aspectos (POA) vem sendo amplamente utilizada como forma de modularizar interesses que se encontram espalhados nas decomposições primarias de um sistema (e.g., funções, classes, métodos) em uma abstração chamada aspecto. Os aspectos utilizam construções especificas para promover modificações externas nos programas, incluindo comportamentos adicionais em pontos específicos do código. POA vem sido utilizado com o objetivo de aumentar a modularidade do código de tratamento de exceção e de interesses transversais igualmente importantes tais como: persistência, distribuição, segurança, controle de transações e monitoramento. De acordo com alguns estudos empíricos, POA tem sido usado com sucesso com o objetivo de promover o tratamento de erro modular em vários cenários de tratamento de exceções. Porém, é sabido que mecanismos de programação flexíveis (e.g., herança e polimorfismo) podem ter um efeito negativo no tratamento de exceções. Se por um lado os mecanismos de composição POA baseados na inversão de controle podem trazer um novo leque de possibilidades de projeto, promovendo em muitas circunstâncias uma maior estabilidade do projeto (do inglês: design stability), eles podem perder seu valor se ele torna o tratamento de exceções propenso a erros (do inglês: error-prone). Refinamento aspectuais do comportamento do código base, podem por um lado promover a robustez do sistema em situações onde exceções são lançadas ou contribuir para os problemas típicos de tratamento de exceções mal projetados tais como: (i) exceções não capturadas (do inglês: uncaught exceptions); (ii) exceções capturadas por tratadores genéricos (do inglês: exception subsumption) (i.e., exceções capturadas por um tratador cujo argumento é um supertipo da exceção a ser tratada); (iii) e exceções capturadas por tratadores errados (do inglês: unintended handler action). Infelizmente, não existe nenhuma avaliação sistemática dos efeitos positivos e negativos da programação orientada a aspectos na robustez do código de tratamento de exceções. Os trabalhos de pesquisa descritos na literatura têm se limitado a analisar os impactos dos aspectos no fluxo normal de execução do programa. Além disso, a maioria dos estudos empíricos não vai além de discussões sobre os ganhos de modularidade e as ciladas associadas à utilização de aspectos - para o tratamento de exceções e de outros interesses transversais. Por exemplo, estes estudos não levam em consideração as conseqüências inerentes as novas exceções e tratadores que são adicionadas ao código base junto com a nova funcionalidade adicionada pelos aspectos. Esta tese descreve o primeiro estudo sistemático que avalia quantitativamente o impacto da composição aspectual no fluxo excepcional de programas. Este estudo se baseou na utilização de uma ferramenta de análise do fluxo de exceções chamada SAFE (do inglês: Static Analysis for the Flow of Exceptions) desenvolvida ao longo deste trabalho e na inspeção manual do código de tratamento de exceções de um conjunto de sistemas para os quais a versão Java e AspectJ estavam disponíveis. A ferramenta SAFE foi construída com base no framework SOOT para a análise e otimização de bytecode. A partir de uma representação do programa construída a partir do bytecode do código base combinado com os aspectos (do inglê[en] It has been empirically observed that aspect-oriented (AO) decompositions promote the modularity and the design stability of software systems containing crosscutting concerns. However, most of this existing empirical research has focused on the positive and negative impacts of AO programming in the modularization of crosscutting concerns in the context of normal control flow of programs. Consequently, most of these works do not account for the exceptions that may flow from aspects: when an aspect adds a new functionality to specific points in the code, this additional behavior may also bring new exceptions. An aspect also has the ability to handle exceptions that were previously handled inside the base code. Moreover, the exceptions that escape form aspects also flow inside the program, and may lead to unexpected error-prone scenarios, such as: unintended handler actions and uncaught exceptions. This thesis presents an empirical study to evaluate the impact of aspects on the exception flow of programs. To support the reasoning about the flow of exceptions on AO programs, a static analysis tool called SAFE (Static Analysis for the Flow of Exceptions) was implemented. Based on data empirically collected during the study we characterized a catalogue of bug patterns related to the exception handling code of AO programs. To help AO developers to check the reliability of the exception handling code, this work presents verification approach - supported by the SAFE tool - which provides guidelines to counter these bug patterns. Our findings show that the exception handling code in aspect-oriented programs tends to be error-prone, but that a verification approach based on static analysis can lead to significant improvements.MAXWELLARNDT VON STAAROBERTA DE SOUZA COELHO2009-01-15info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesishttps://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=12968&idi=1https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=12968&idi=2http://doi.org/10.17771/PUCRio.acad.12968engreponame:Repositório Institucional da PUC-RIO (Projeto Maxwell)instname:Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)instacron:PUC_RIOinfo:eu-repo/semantics/openAccess2018-10-25T00:00:00Zoai:MAXWELL.puc-rio.br:12968Repositório InstitucionalPRIhttps://www.maxwell.vrac.puc-rio.br/ibict.phpopendoar:5342018-10-25T00:00Repositório Institucional da PUC-RIO (Projeto Maxwell) - Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)false
dc.title.none.fl_str_mv [pt] ANALISANDO O FLUXO DE EXCEÇÕES EM PROGRAMAS ORIENTADOS A ASPECTOS
[en] ANALYZING EXCEPTION FLOWS OF ASPECT-ORIENTED PROGRAMS
title [pt] ANALISANDO O FLUXO DE EXCEÇÕES EM PROGRAMAS ORIENTADOS A ASPECTOS
spellingShingle [pt] ANALISANDO O FLUXO DE EXCEÇÕES EM PROGRAMAS ORIENTADOS A ASPECTOS
ROBERTA DE SOUZA COELHO
[pt] ANALISE ESTATICA
[pt] EXCECOES NAO CAPTURADAS
[pt] PROGRAMAS ORIENTADOS A ASPECTOS
[en] STATIC ANALYSIS
[en] UNCAUGHT EXCEPTIONS
[en] ASPECT-ORIENTED PROGRAMS
title_short [pt] ANALISANDO O FLUXO DE EXCEÇÕES EM PROGRAMAS ORIENTADOS A ASPECTOS
title_full [pt] ANALISANDO O FLUXO DE EXCEÇÕES EM PROGRAMAS ORIENTADOS A ASPECTOS
title_fullStr [pt] ANALISANDO O FLUXO DE EXCEÇÕES EM PROGRAMAS ORIENTADOS A ASPECTOS
title_full_unstemmed [pt] ANALISANDO O FLUXO DE EXCEÇÕES EM PROGRAMAS ORIENTADOS A ASPECTOS
title_sort [pt] ANALISANDO O FLUXO DE EXCEÇÕES EM PROGRAMAS ORIENTADOS A ASPECTOS
author ROBERTA DE SOUZA COELHO
author_facet ROBERTA DE SOUZA COELHO
author_role author
dc.contributor.none.fl_str_mv ARNDT VON STAA
dc.contributor.author.fl_str_mv ROBERTA DE SOUZA COELHO
dc.subject.por.fl_str_mv [pt] ANALISE ESTATICA
[pt] EXCECOES NAO CAPTURADAS
[pt] PROGRAMAS ORIENTADOS A ASPECTOS
[en] STATIC ANALYSIS
[en] UNCAUGHT EXCEPTIONS
[en] ASPECT-ORIENTED PROGRAMS
topic [pt] ANALISE ESTATICA
[pt] EXCECOES NAO CAPTURADAS
[pt] PROGRAMAS ORIENTADOS A ASPECTOS
[en] STATIC ANALYSIS
[en] UNCAUGHT EXCEPTIONS
[en] ASPECT-ORIENTED PROGRAMS
description [pt] Os mecanismos de tratamento de exceções têm o objetivo de aumentar a robustez e a modularidade do software na medida em que promovem a separação entre o código dedicado ao tratamento de erros e código associado ao fluxo normal de execução do programa. Estes permitem a detecção de erros e a associação de respostas adequadas aos mesmos, através da execução de códigos de recuperação que são geralmente encapsulados em tratadores (do inglês: handlers). A importância dos mecanismos de tratamento de exceção é atestada pelo fato destes fazerem parte da maioria das linguagens de programação mais utilizadas na atualidade: Java, C++ e C#. Na última década a programação orientada a aspectos (POA) vem sendo amplamente utilizada como forma de modularizar interesses que se encontram espalhados nas decomposições primarias de um sistema (e.g., funções, classes, métodos) em uma abstração chamada aspecto. Os aspectos utilizam construções especificas para promover modificações externas nos programas, incluindo comportamentos adicionais em pontos específicos do código. POA vem sido utilizado com o objetivo de aumentar a modularidade do código de tratamento de exceção e de interesses transversais igualmente importantes tais como: persistência, distribuição, segurança, controle de transações e monitoramento. De acordo com alguns estudos empíricos, POA tem sido usado com sucesso com o objetivo de promover o tratamento de erro modular em vários cenários de tratamento de exceções. Porém, é sabido que mecanismos de programação flexíveis (e.g., herança e polimorfismo) podem ter um efeito negativo no tratamento de exceções. Se por um lado os mecanismos de composição POA baseados na inversão de controle podem trazer um novo leque de possibilidades de projeto, promovendo em muitas circunstâncias uma maior estabilidade do projeto (do inglês: design stability), eles podem perder seu valor se ele torna o tratamento de exceções propenso a erros (do inglês: error-prone). Refinamento aspectuais do comportamento do código base, podem por um lado promover a robustez do sistema em situações onde exceções são lançadas ou contribuir para os problemas típicos de tratamento de exceções mal projetados tais como: (i) exceções não capturadas (do inglês: uncaught exceptions); (ii) exceções capturadas por tratadores genéricos (do inglês: exception subsumption) (i.e., exceções capturadas por um tratador cujo argumento é um supertipo da exceção a ser tratada); (iii) e exceções capturadas por tratadores errados (do inglês: unintended handler action). Infelizmente, não existe nenhuma avaliação sistemática dos efeitos positivos e negativos da programação orientada a aspectos na robustez do código de tratamento de exceções. Os trabalhos de pesquisa descritos na literatura têm se limitado a analisar os impactos dos aspectos no fluxo normal de execução do programa. Além disso, a maioria dos estudos empíricos não vai além de discussões sobre os ganhos de modularidade e as ciladas associadas à utilização de aspectos - para o tratamento de exceções e de outros interesses transversais. Por exemplo, estes estudos não levam em consideração as conseqüências inerentes as novas exceções e tratadores que são adicionadas ao código base junto com a nova funcionalidade adicionada pelos aspectos. Esta tese descreve o primeiro estudo sistemático que avalia quantitativamente o impacto da composição aspectual no fluxo excepcional de programas. Este estudo se baseou na utilização de uma ferramenta de análise do fluxo de exceções chamada SAFE (do inglês: Static Analysis for the Flow of Exceptions) desenvolvida ao longo deste trabalho e na inspeção manual do código de tratamento de exceções de um conjunto de sistemas para os quais a versão Java e AspectJ estavam disponíveis. A ferramenta SAFE foi construída com base no framework SOOT para a análise e otimização de bytecode. A partir de uma representação do programa construída a partir do bytecode do código base combinado com os aspectos (do inglê
publishDate 2009
dc.date.none.fl_str_mv 2009-01-15
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://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=12968&idi=1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=12968&idi=2
http://doi.org/10.17771/PUCRio.acad.12968
url https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=12968&idi=1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=12968&idi=2
http://doi.org/10.17771/PUCRio.acad.12968
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 MAXWELL
publisher.none.fl_str_mv MAXWELL
dc.source.none.fl_str_mv reponame:Repositório Institucional da PUC-RIO (Projeto Maxwell)
instname:Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)
instacron:PUC_RIO
instname_str Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)
instacron_str PUC_RIO
institution PUC_RIO
reponame_str Repositório Institucional da PUC-RIO (Projeto Maxwell)
collection Repositório Institucional da PUC-RIO (Projeto Maxwell)
repository.name.fl_str_mv Repositório Institucional da PUC-RIO (Projeto Maxwell) - Pontifícia Universidade Católica do Rio de Janeiro (PUC-RIO)
repository.mail.fl_str_mv
_version_ 1849967236116119552