21
Programação Orientada a Aspectos ALUNO: RUBEN BLENICIO CURSO: ENGENHARIA DE SOFTWARE CADEIRA: PROJETO DETALHADO DE SOFTWARE PROFESSOR: CAMILO ALMENDRA

Programação orientada a aspectos

Embed Size (px)

Citation preview

Page 1: Programação orientada a aspectos

Programação Orientada a AspectosA L UNO : R UB E N B L E NICIOCUR SO : E NG E NHA R IA DE SO FT WA R ECA DE IR A : PR OJ E TO DE TA L HA DO DE SO FT WA R EPR OFESSOR : CAMILO ALMENDR A

Page 2: Programação orientada a aspectos

Motivação

• Sistemas atuais com unidades de desenvolvimento cada vez menores e mais bem definidas;

• Linguagens de programação provêm a abstração de unidades e sua composição de diversas maneiras;

• Algumas propriedades não se enquadram em um só componente funcional: sincronização, restrições de tempo, concorrência, distribuição de objetos, persistência, etc.

Page 3: Programação orientada a aspectos

Aspectos versus componentes

Propriedades do sistema que devem ser implementadas podem ser vistas como um aspecto ou como um componente:

• A propriedade pode ser vista como um componente se puder ser encapsulada em uma unidade funcional(objeto, método, procedimento). Ex: Conta, usuário, mensagem.

• Aspectos normalmente não são unidades funcionais do sistema, mas sim propriedades que estão diluídas em vários módulos do sistema. Ex: Controle de concorrência em uma conta bancária, restrições de entrega de mensagem em um sistema de tempo real.

Page 4: Programação orientada a aspectos

Objetivo da programação orientada a aspectos

Auxiliar o desenvolvedor na tarefa de identificar e separar os componentes dos aspectos do sistema, através de técnicas que possibilitem sua abstração e composição.

Page 5: Programação orientada a aspectos

Implementação de Aspectos

A implementação de um sistema baseado na Orientação a Aspectos é composta de:

• Uma linguagem de componentes;

• Uma ou mais linguagens de aspectos;

• Um combinador de aspectos;

• Um programa na linguagem de componentes;

• Um ou mais programas na linguagem de aspectos.

Page 6: Programação orientada a aspectos

Implementação de Aspectos

Page 7: Programação orientada a aspectos

Componentes

• Conceitos da própria linguagem que permitem ao programador implementar as funcionalidades do sistema. Ex: Procedimentos, funções, métodos, classes.

• A Orientação a Aspectos não é restrita à orientação a objetos, ela se adapta ao modelo.

Page 8: Programação orientada a aspectos

Aspectos

• Propriedades do sistema que não são representadas apenas por uma unidade funcional. Normalmente estão espalhadas por várias partes do código. Daí surgem alguns problemas:

o Código entrelaçado: regras de negócio misturadas com códigos de distribuição;

o Código espalhado: várias classes implementando uma funcionalidade;

o Dificuldade de manutenção e reuso.

• Exemplos mais recorrentes: sincronização de objetos concorrentes, distribuição, tratamento de exceções, coordenação de múltiplos objetos, persistência, serialização, atomicidade, replicação, segurança, visualização, logging, tracing, tolerância à falhas, obtenção de métricas, dentre outras.

Page 9: Programação orientada a aspectos

Exemplo de aspecto

Page 10: Programação orientada a aspectos

Linguagem de AspectosA linguagem de aspectos deve ser clara e precisa o suficiente para suportar a implementação das particularidades do sistema.

Requisitos de uma linguagem de aspectos:

• Sua sintaxe deve ser fortemente relacionada com a da linguagem de componentes;

• A linguagem deve ser projetada para especificar o aspecto com precisão.

• Sua gramática deve possuir elementos que permitam ao combinador compor os programas escritos usando as linguagens de aspectos e componentes.

Page 11: Programação orientada a aspectos

Combinador de Aspectos

A função do combinador de aspectos é processar a linguagem de aspectos e a de componentes, estruturando essas linguagens a fim de produzir a operação desejada.

Page 12: Programação orientada a aspectos

Técnicas de Composição: Filtros

• Filtros é uma técnica de programação orientada a aspectos onde os aspectos são expressos em filtros, de maneira declarativa, juntamente com especificações para a transformação de mensagens.

• Nesta abordagem as mensagens que chegam a um objeto são avaliadas e, se necessário, manipuladas pelos filtros que atuam sobre aquele objeto.

Page 13: Programação orientada a aspectos

Linguagens Para Programação de Aspectos

HyperJ, QIDL, AOP/ST, linguagem de sincronização de processos, linguagem detracing, AspectJ, D, COOL, RIDL, IL, D2AL, JST, AspectIX.

Page 14: Programação orientada a aspectos

Pointcuts, Joinpoints e Advices

• Joinpoints são pontos bem definidos na execução de um programa. Ex: Chamadas a métodos, acessos à variáveis.

• Pointcut é uma construção de linguagem que junta um conjunto de joinpoints com base em um critério bem definido.

• Completando a implementação, Advices são trechos de código que são executados antes, depois e durante a ocorrência de um Joinpoint.

Page 15: Programação orientada a aspectos

Vantagens e Desvantagens

• Diminuição do tamanho do código dos componentes;

• Reusabilidade e manutenibilidade do código, visto que está em um só local;

• Não há um meio claro de se definir um aspecto;

• Falta de metodologias.

Page 16: Programação orientada a aspectos

O Aspecto

A linguagem AspectJ é uma extensão orientada a aspectos, de propósito geral da linguagem Java.

Page 17: Programação orientada a aspectos

O AspectJ - Pointcuts

Page 18: Programação orientada a aspectos

O AspectJ - Advices

Page 19: Programação orientada a aspectos

Exemplo de código AspectJ

Page 20: Programação orientada a aspectos

Exemplo de Código AspectJ

Page 21: Programação orientada a aspectos

Referências

• Artigo: PROGRAMAÇÃO ORIENTADA A ASPECTOS - Uma Visão Geral. Alexandre Henrique Vieira Soares, Anderson de Rezende Rocha, Flávio Luís Alves, Júlio César Alves.

• Material da UFPE: http://www.cin.ufpe.br/~scbs/talp1/