ANÁLISE QUANTITATIVA DA IMPLEMENTAÇÃO DE TRATAMENTO DE EXCEÇÕES NA LINGUAGEM PTOLEMY
Aluno: Cleivson Arruda
Orientador: Fernando Castor
TRABALHO DE GRADUAÇÃO
ROTEIRO
Introdução Fundamentação Conjunto de métricas Ferramenta Estudo Conclusão
INTRODUÇÃO
Paradigma de orientação a objetos é limitado A modularização de alguns interesses é
priorizada frente a de outros
Modularização é importante para aumentar o reuso, robustez e consistência do código [2] Alguns interesses acabam sendo penalizados em
modelagens OO
Interesses espalhados ao longo da aplicação são chamados “interesses transversais” [2] Logging, concorrência, tratamento de exceções
INTRODUÇÃO
AOSD como alternativa para modularização de interesses transversais [19] Permite pontos de interação entre interesses Permite encapsular comportamentos
transversais através de aspectos
Tratamento de exceções é um interesse geralmente implícito em aplicações Comum replicação de código para tratamento de
exceções recorrentes
TRATAMENTO DE EXCEÇÕES
Exceções definem comportamentos incorretos ou que violam as regras da própria linguagem
Java permite que exceções sejam identificadas e tratadas [17]
Exceções podem ser implícitas ou explícitas Explícitas através do comando throw
TRATAMENTO DE EXCEÇÕES
Exceções explícitas para validar comportamentos [17] Facilita entendimento Aumenta a confiabilidade
TRATAMENTO DE EXCEÇÕES
Toda exceção herda de Throwable
Exception são falhas recuperáveis
Error são falhas irrecuperáveis
RuntimeException são todos as falhas detectadas durante execução
Checked exception classes são exceções checadas pelo compilador
TRATAMENTO DE EXCEÇÕES
Exceções são tratadas pela construção try-catch-finally
O bloco try define a região protegida Pode ter uma ou mais cláusulas catch associadas Pode ter uma cláusula finally associada
Cláusulas catch são associadas a uma exceção e responsáveis pelo seu tratamento
Cláusulas finally definem comportamentos que devem sempre ser executados
TRATAMENTO DE EXCEÇÕES
TRATAMENTO DE EXCEÇÕES
Variáveis definidas em escopos externos à construção try-catch-finally são acessíveis internamente
Variáveis dentro de cada bloco não são acessíveis aos outros blocos
Todo método deve declarar sua interface de exceções
ASPECTOS
Servem para separar interesses dentro da aplicação [19]
Linguagens podem ser simétricas ou assimétricas
Permitem interação entre interesses Eventos implícitos Eventos explícitos
ASPECTOS
Linguagens de eventos implícitos [22] Maior clareza no código principal Abstração de interesses transversais Oclusão de comportamentos Ex.: AspectJ
Linguagens de eventos explícitos Acrescentam construções ao código principal Exigem conhecimento mínimo dos aspectos Maior facilidade no entendimento do
comportamento Ex.: Ptolemy
PTOLEMY
Extensão de Java para orientação a aspectos [21]
Eventos Explícitos Tipificados Quantificados
Simétrica
PTOLEMY
Eventos são a interface de comunicação entre interesses Anunciante do evento Tratador do evento
Declaração de evento possui: Nome do evento Variáveis de contexto Tipo de retorno Contrato translúcido* [22]
PTOLEMY
PTOLEMY
Anúncios de eventos pela expressão announce Passagem de parâmetros Podem definir closures Permitem alteração do código da closure
PTOLEMY
Closure se comporta como um bloco normal Variáveis definidas externamente são acessíveis
dentro da closure, mas o contrário não é verdadeiro
PTOLEMY
Classes devem implementar interesses transversais definindo tratadores Registradas pelo comando register
Definição de tratadores pela cláusula when Associa todas as instâncias de um evento a um
método tratador
Tratadores Recebem uma instância do evento por
parâmetro Têm o mesmo tipo de retorno do evento tratado Declaram Throwable na interface de exceções
PTOLEMY
PTOLEMY
Tratadores podem ser encadeados
Ordem definida em tempo de execução
Definição de fluxo de controle pela expressão invoke()
Chamadas a invoke() podem lançar qualquer exceção
PTOLEMY
IMPLEMENTAÇÃO