Maxwell Para Simples Indexação

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

Título
[en] ANALYZING EXCEPTION FLOWS OF ASPECT-ORIENTED PROGRAMS

Autor
[pt] ROBERTA DE SOUZA COELHO

Vocabulário
[pt] ANALISE ESTATICA

Vocabulário
[pt] EXCECOES NAO CAPTURADAS

Vocabulário
[pt] PROGRAMAS ORIENTADOS A ASPECTOS

Vocabulário
[en] STATIC ANALYSIS

Vocabulário
[en] UNCAUGHT EXCEPTIONS

Vocabulário
[en] ASPECT-ORIENTED PROGRAMS

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ê

Resumo
[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.

Orientador(es)
ARNDT VON STAA

Banca
CARLOS JOSE PEREIRA DE LUCENA

Banca
RENATO FONTOURA DE GUSMAO CERQUEIRA

Banca
ARNDT VON STAA

Banca
PAULO HENRIQUE MONTEIRO BORBA

Banca
PAULO CESAR MASIERO

Catalogação
2009-01-15

Apresentação
2008-06-11

Tipo
[pt] TEXTO

Formato
application/pdf

Formato
application/pdf

Formato
application/pdf

Formato
application/pdf

Formato
application/pdf

Formato
application/pdf

Formato
application/pdf

Formato
application/pdf

Formato
application/pdf

Formato
application/pdf

Idioma(s)
INGLÊS

Referência [pt]
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=12968@1

Referência [en]
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=12968@2

Referência DOI
https://doi.org/10.17771/PUCRio.acad.12968


Arquivos do conteúdo
CAPA, AGRADECIMENTOS, RESUMO, ABSTRACT, SUMÁRIO E LISTAS PDF
CAPÍTULO 1 PDF
CAPÍTULO 2 PDF
CAPÍTULO 3 PDF
CAPÍTULO 4 PDF
CAPÍTULO 5 PDF
CAPÍTULO 6 PDF
CAPÍTULO 7 PDF
CAPÍTULO 8 PDF
REFERÊNCIAS BIBLIOGRÁFICAS PDF