Universidade Federal de Viçosa            Centro de Ciências Exatas e Tecnológicas                  Departamento de Inform...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliograf...
Próximos SlideShares
Carregando em…5
×

Uma DSL para declarar a Ordem de Execução de Aspectos

422 visualizações

Publicada em

Apresentação sobre o artigo "A DSL to declare aspect execution order" de Antoine Marot da Université Libre de Bruxelles e Roel Wuyts do IMEC Leuven and KU Leuven, para a disciplina de programação orientada a aspectos da Universidade Federal de Viçosa

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
422
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Uma DSL para declarar a Ordem de Execução de Aspectos

  1. 1. Universidade Federal de Viçosa Centro de Ciências Exatas e Tecnológicas Departamento de Informática INF 442 – Programação Orientada a Aspectos e Padrões de ProjetosUma DSL para declarar a ordem de execução de aspectos “A DSL to declare aspect execution order” Antoine Marot Université Libre de Bruxelles (ULB) Roel Wuyts IMEC Leuven and KU Leuven Apresentação: Giorgio Prímola F. G. Torres Professor: Vladimir Oliveira Di Iorio
  2. 2. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Introdução – DSL • Quando se trabalha com um conjunto de operações que aparecem freqüentemente ao lidar com um determinado problema (domínio), surge a necessidade de abstrair essas operações para torná-las mais práticas. • Uma DSL trata da abstração de um conjunto de operações complexas, ou apenas trabalhosas, por um outro conjunto mais prático.
  3. 3. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Introdução – Ordem de execução entre aspectos • Quando dois ou mais aspectos executam em um mesmo join point, pode ser necessário especificar a ordem de execução entre eles. • Tipo de problema semântico. • Exemplo: aspectos VerificaPermissaoUsuario e MonitoraAcoes.
  4. 4. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Estudo de caso • Uma empresa desenvolveu uma aplicação do tipo cliente-servidor para hospedagem de arquivos, que é amplamente usada. O sevidor é quem hospeda os arquivos. Os usuários utilizam um aplicativo cliente para enviar arquivos através do método send(). Quando o arquivo está sendo enviado, primeiro ele é encriptado e depois compactado, para acelerar o envio.
  5. 5. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Estudo de caso • Porém, a companhia prevê que, em um futuro próximo, terá que dar suporte a novas técnicas de segurança e compactação, e também continuar a atender aqueles que utilizam o modelo antigo. • A empresa adotou uma nova técnica de primeiro comprimir o arquivo e depois encriptá-lo, por causa da adoção de um novo método de compactação.
  6. 6. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Estudo de caso • Como a compressão e a encriptação são funcionaliades transversais, foram identificados dois aspectos: • SecureUpload; • CompressUpload. • Ambos estão encarregados em fazer a operação que cabe a eles, e desfazê-la, ao chegar ao servidor.
  7. 7. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Estudo de caso public aspect SecureUpload { before(File f) : call(* Client.send(..)) && args(f) { encrypt(f); } before(File f) : call(* Server.receive(..)) && args(f) { decrypt(f); } }
  8. 8. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Estudo de caso public aspect CompressUpload { before(File f) : call(* Client.send(..)) && args(f) { zip(f); } before(File f) : call(* Server.receive(..)) && args(f) { unzip(f); } }
  9. 9. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Estudo de caso • Os dois aspectos apresentados como solução para o problema relatado, interceptam um mesmo join point. • Problema: Qual aspecto executará primeiro?
  10. 10. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Estudo de caso • A ordem precisa ser de tal forma que: • no envio do arquivo sejam feitas primeiro a operação de compactação e depois a de criptografia; • no recebimento do arquivo, primeiro decriptografa e depois descompacta. • A ordem estabelecida acima não diz respeito à ordem dos aspectos, mas sim à ordem dos advices dos aspectos.
  11. 11. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Estudo de caso
  12. 12. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Soluções • O problema da ordem de execução de aspectos não é um problema novo, ele já vem sendo estudado, e já existem algumas técnicas para esse problema: • Ordenação dos Aspectos (ordering aspects); • JAsCo; • Composição declarativa de aspecto (declarative aspect composition).
  13. 13. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Soluções • Ordenação dos aspectos (ordering aspects): solução implementada na própria AspectJ pelo comando “declare precedence”. • “Se um aspecto A deve preceder um aspecto B, então todos os adendos de A devem preceder os de B.” • Problema: não é aplicável ao estudo de caso apresentado, pois este requer ordem na execução dos adendos.
  14. 14. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Soluções • JAsCo: é uma linguagem orientada a aspectos estendida de Java, onde o escopo do aspecto é separado do seu comportamento. O comportamento é descrito através de hooks, presente na própria linguagem. • É possível determinar ordem de execução entre os adendos; • É uma solução inviável para o problema apresentado, pois o trata a um nível muito abaixo.
  15. 15. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Soluções • Composição declarativa de aspecto: baseado em declarações de restrições em um aspecto separado. • Restrição de ordenação: determina que um adendo deve ser executado antes de um outro; • Restrição de controle: determina que um advice será executado somente se um outro foi executado com sucesso.
  16. 16. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Solução proposta pelo artigo • Abordagem declarativa de aspectos baseado em regras de composição que declaram restrições. É a solução apresentada em uma nova DSL por este trabalho. • O problema da ordem de execução de aspectos é também um problema transversal. É interessante então, criar um aspecto que lida com a ordenação ao invés de definir a ordem de execução dentro dos próprios aspectos que interceptam um mesmo join point.
  17. 17. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Solução proposta pelo artigo • Regras de composição são restrições que o weaver leva em consideração enquanto tece os adendos nos pontos de junção. • São declaradas em aspectos separados e descrevem o comportamento dos adendos dos aspectos envolvidos. • Especificam o contexto nos quais estarão ativas. Se um join point atende ao contexto, a regra é executada.
  18. 18. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Solução proposta pelo artigo • Existem quatro tipos de restrições possíveis para as regras: 1. Prec(a,b): especifica que o adendo ‘a’ tem que ser executado antes do adendo ‘b’; 2. First(a): o adendo ‘a’ tem que ser o primeiro a ser executado; 3. Last(a): o adendo ‘a’ tem que ser o último a ser executado; 4. Ignore(a): o adendo ‘a’ não será executado.
  19. 19. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Solução proposta pelo artigo • As quatro restrições podem ser aplicadas no estudo de caso. • Para isso, os adendos são nomeados da seguinte forma: zipFile, unzipFile, encryptFile e decryptFile.
  20. 20. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Solução proposta pelo artigo • As restrições são montadas de acordo com os nomes dos adendos: • Prec(zipFile, encryptFile); • Prec(decryptFile, unzipFile). • Com estas restrições, a ordenação da execução dos aspectos é definida. • No entanto, os usuários antigos que utilizam o sistema de encriptar primeiro e depois compactar, não são mais atendidos pelo sistema.
  21. 21. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Solução proposta pelo artigo • Para solucionar o problema de suporte a usuários do sistema antigo, a DSL criada oferece a opção de criar uma outra regra que será ativada num contexto específico. • A parametrização de regras por pointcuts, permite que uma regra seja bem específica para aquele ponto de junção. • Uso do parâmetro advices(a1, a2, ..., an) identifica o ponto de junção onde todos aqueles adendos interagem.
  22. 22. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Solução proposta pelo artigo public aspect AspectComposition { public boolean isZipped(File f) { return f.isZipped(); } declare rule sendFile: advices(zipFile, encryptFile) { Prec(zipFile, encryptFile); } declare rule receiveFile: advices(unzipFile, decryptFile) { Prec(decryptFile, unzipFile); } declare rule oldVersion extends receiveFile: advices(unzipFile, decryptFile) && if(isZipped(thisJoinPoint.getArgs()[0])) { Prec(unzipFile, decryptFile); } }
  23. 23. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Solução proposta pelo artigo • O mecanismo de extensão (extends), usado na regra de recebimento do servidor para clientes antigos, é necessário pois ele define uma prioridade entre a regra nova de recebimento com a do cliente antigo. • Uma regra que extends uma outra regra, tem prioridade sobre esta última, e pode ser vista como um caso de excessão.
  24. 24. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Outros exemplos public aspect ChooseVisualization { public boolean otherVis = false; before(String [] a) : execution(* Main.main(String[])) && args(a) { if(a[0].equals(“otherVis”)) otherVis = true; } declare rule defaultVis : advices(VisAspect1.*, VisAspect2.*) && if(!otherVis) { Ignore(VisAspect2.*); } declare rule otherVis : advices(VisAspect1.*, VisAspect2.*) && if(otherVis) { Ignore(VisAspect1.*); } }
  25. 25. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Outros exemplos public aspect LogAspectCode { public boolean log = false; before() beforeFirst: call(* *.foo(..)) { log = true; } before() beforeLast: call(* *.foo(..)) { log = false; } before() logAdvice: set(* *.*) && if(log) { /* Log informations */ } declare rule logBefore: advices(beforeFirst, beforeLast) { First(beforeFirst); Last(beforeLast); }; }
  26. 26. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Conclusões • A ordem de execução de aspectos em um pointcut é um problema transversal. • A composição de aspectos é problemática a partir de quando as interações entre aspectos aparecem, pois estas podem levar a programas “tecidos” erroneamente pelo weaver dos aspectos.
  27. 27. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Dúvidas?
  28. 28. Introdução – Estudo de caso – Soluções – Solução proposta pelo artigo – Outros Exemplos – Conclusão – Dúvidas – Bibliografia Bibliografia Antoine Marot and Roel Wuyts. 2008. A DSL to declare aspect execution order. In Proceedings of the 2008 AOSD workshop on Domain-specific aspect languages (DSAL 08). ACM, New York, NY, USA, 2008. ACM press.

×