Egenharia de Software Orientado a Aspectos
Upcoming SlideShare
Loading in...5
×
 

Egenharia de Software Orientado a Aspectos

on

  • 1,490 views

Universidade Federal de Alagoas - Campus Arapiraca ...

Universidade Federal de Alagoas - Campus Arapiraca
Curso : Ciência da Computação
Período : 5º
Disciplina: Engenharia de Software 1
Professor: Patrick Brito
Equipe : Dyego Ítallo Silva Ferreira
Weverson Fraques França
Marcos José Ferreira Neto
Descrição: Nesta apresentação, mostramos um pouco sobre Engenharia de Software Orientada a Aspetos e fizemos alguns exemplos práticos utilizando a extensão AspectJ para programar orientado a aspectos com Java.

Statistics

Views

Total Views
1,490
Views on SlideShare
1,490
Embed Views
0

Actions

Likes
0
Downloads
20
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Egenharia de Software Orientado a Aspectos Egenharia de Software Orientado a Aspectos Presentation Transcript

  • Engenharia de Software Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistóriaPOA em outras linguagens Engenharia de SoftwareMotivaçãoProgramação Orientada Orientada a Aspectosa AspectosGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperados Dyego Ítallo Silva Ferreira Marcos José FerreiraAspectJInstalação do AspectJ Weverson Fraques FrançaJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem de 03 de Janeiro de 2013Aspectos em UML 1/36 Engenharia de Software Avançar
  • Engenharia de Software Roteiro Dyego Ítallo, MarcosJosé, Weverson França 1 IntroduçãoIntrodução HistóriaHistóriaPOA em outras linguagens POA em outras linguagensMotivação MotivaçãoProgramação Orientadaa Aspectos 2 Programação Orientada a AspectosGerenciamento de interesses comPOA Gerenciamento de interesses com POADesenvolvimento com POABenefícios esperados Desenvolvimento com POAAspectJ Benefícios esperadosInstalação do AspectJJoinpoints 3 AspectJPointcutsAdivices Instalação do AspectJAspectos versus ClassesModelagem de JoinpointsAspectos em UML Pointcuts Adivices Aspectos versus Classes 4 Modelagem de Aspectos em UML 2/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software História Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistóriaPOA em outras linguagensMotivação A Programação Orientada a Aspectos (POA) foiProgramação Orientadaa Aspectos criada por Gregor Kiczales (1997) quando era oGerenciamento de interesses comPOA cientista da Xerox PARC (1996 – 2002)Desenvolvimento com POABenefícios esperados Os desenvolvedores da Xerox PARC criaram aAspectJInstalação do AspectJ linguagem AspectJJoinpointsPointcuts A linguagem AspectJ é usada até hoje e é a maisAdivicesAspectos versus Classes popular linguaguem de POAModelagem de A linguagem AspectJ é usada com JavaAspectos em UML 3/36 Engenharia de Software Voltar Avançar View slide
  • Engenharia de Software POA em outras linguagens Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistóriaPOA em outras linguagens Linguagem AspectoMotivação Java AspectJProgramação Orientadaa Aspectos C++ AspectC++Gerenciamento de interesses comPOA C AspectCDesenvolvimento com POABenefícios esperados Python Aspyct AOPAspectJ NET AspectNETInstalação do AspectJJoinpoints JavaScript AjaxpectPointcutsAdivices PHP PHPaspectAspectos versus Classes Ruby AspectRModelagem deAspectos em UML Lua AspectLua Perl The Aspect Module 4/36 Engenharia de Software Voltar Avançar View slide
  • Engenharia de Software Motivação Dyego Ítallo, MarcosJosé, Weverson FrançaIntrodução Sistema de banco: Imagine que um banco, pediu paraHistóriaPOA em outras linguagens que fosse feito software que gerencie todasMotivação as transações bancárias.Programação Orientada 1 Quais os principais interesses?a AspectosGerenciamento de interesses comPOA DepositoDesenvolvimento com POABenefícios esperados TransferênciaAspectJ SaqueInstalação do AspectJ TEDJoinpointsPointcuts DOCAdivices ...Aspectos versus ClassesModelagem de 2 Quais os interesses secundários?Aspectos em UML Auditoria; Autorização; Persistência; ... 5/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Motivação Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa AspectosGerenciamento de interesses com Classificamos os interesses do software em:POADesenvolvimento com POABenefícios esperados Concerns – Interesses primários (Núcleo do sistema)AspectJ Crosscutting Concerns – Interesses transversais,Instalação do AspectJJoinpoints que abrangem vários módulos do sistema.PointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 6/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistória Implementações OO acoplam Concerns com osPOA em outras linguagensMotivação Crosscutting ConcernsProgramação Orientada Quando são adicionadas ou removidasa AspectosGerenciamento de interesses com funcionalidades, na maior parte dos casos, éPOADesenvolvimento com POA modificado o núcleo do sistemaBenefícios esperadosAspectJ Muitas propriedades importantes espalham-se porInstalação do AspectJJoinpoints vários módulos e misturam-se com outrasPointcutsAdivices propriedades de maneira intrusivaAspectos versus ClassesModelagem deAspectos em UML 7/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistória Implementações OO acoplam Concerns com osPOA em outras linguagensMotivação Crosscutting ConcernsProgramação Orientada Quando são adicionadas ou removidasa AspectosGerenciamento de interesses com funcionalidades, na maior parte dos casos, éPOADesenvolvimento com POA modificado o núcleo do sistemaBenefícios esperadosAspectJ Muitas propriedades importantes espalham-se porInstalação do AspectJJoinpoints vários módulos e misturam-se com outrasPointcutsAdivices propriedades de maneira intrusivaAspectos versus ClassesModelagem deAspectos em UML Limitação Esses problemas dificultam a reutilização e a manutenção dos componentes do sistema. 7/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França Exemplo práticoIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa Aspectos Sistema bancário: Implementar o métodoGerenciamento de interesses comPOA TranferenciaContas usando POO.Desenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 8/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França Exemplo práticoIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa Aspectos Sistema bancário: Implementar o métodoGerenciamento de interesses comPOA TranferenciaContas usando POO.Desenvolvimento com POABenefícios esperados Implementação do método Trasferência de ContasAspectJInstalação do AspectJJoinpoints public void transferir(Conta origem, Conta destino, int valor) {Pointcuts origem.debitar(valor);Adivices destino.creditar(valor);Aspectos versus Classes }Modelagem deAspectos em UML 8/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França Exemplo práticoIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa Aspectos Verificar se o usuário possui saldo suficiente.Gerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 9/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França Exemplo práticoIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa Aspectos Verificar se o usuário possui saldo suficiente.Gerenciamento de interesses comPOADesenvolvimento com POA Implementação do método Trasferência de ContasBenefícios esperadosAspectJ public void transferir(Conta origem, Conta destino, int valor) {Instalação do AspectJ if (origem.getSaldo() < valor) {Joinpoints throw new SaldoInsuficienteException();Pointcuts }Adivices origem.debitar(valor);Aspectos versus Classes destino.creditar(valor); }Modelagem deAspectos em UML 9/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França Exemplo práticoIntroduçãoHistóriaPOA em outras linguagensMotivação Verificar se o usuário possui permissão para realizarProgramação Orientadaa Aspectos a transaçãoGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 10/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França Exemplo práticoIntroduçãoHistóriaPOA em outras linguagensMotivação Verificar se o usuário possui permissão para realizarProgramação Orientadaa Aspectos a transaçãoGerenciamento de interesses comPOADesenvolvimento com POA Implementação do método Trasferência de ContasBenefícios esperadosAspectJ public void transferir(Conta origem, Conta destino, int valor){Instalação do AspectJ if (!getUsuario().hasPermissao(OP_TRANSF)){Joinpoints throw new PermissaoException();Pointcuts }Adivices if (origem.getSaldo() < valor) {Aspectos versus Classes throw new SaldoInsuficienteException(); }Modelagem de origem.debitar(valor);Aspectos em UML destino.creditar(valor); } 10/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França Exemplo práticoIntroduçãoHistóriaPOA em outras linguagensMotivação Verificar se o valor do dinheiro é negativoProgramação Orientadaa AspectosGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 11/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França Exemplo práticoIntroduçãoHistóriaPOA em outras linguagensMotivação Verificar se o valor do dinheiro é negativoProgramação Orientadaa Aspectos Implementação do método Trasferência de ContasGerenciamento de interesses comPOADesenvolvimento com POA public void transferir(Conta origem, Conta destino, int valor){Benefícios esperados if (valor < 0) {AspectJ throw new TransferenciaNegativaException(); }Instalação do AspectJ if (!getUsuario().hasPermissao(OP_TRANSF)){Joinpoints throw new PermissaoException();Pointcuts }Adivices if (origem.getSaldo() < valor) {Aspectos versus Classes throw new SaldoInsuficienteException();Modelagem de }Aspectos em UML origem.debitar(valor); destino.creditar(valor); } 11/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França Exemplo práticoIntroduçãoHistória Previnir perda de dadosPOA em outras linguagensMotivaçãoProgramação Orientadaa AspectosGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 12/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França Exemplo práticoIntroduçãoHistória Previnir perda de dadosPOA em outras linguagensMotivação Implementação do método Trasferência de ContasProgramação Orientadaa Aspectos public void transferir(Conta origem, Conta destino, int valor){Gerenciamento de interesses com if (valor < 0) {POA throw new TransferenciaNegativaException();Desenvolvimento com POA }Benefícios esperados if (!getUsuario().hasPermissao(OP_TRANSF)){ throw new PermissaoException();AspectJ }Instalação do AspectJ if (origem.getSaldo() < valor) {Joinpoints throw new SaldoInsuficienteException();Pointcuts }AdivicesAspectos versus Classes DatabaseTransacao dt = new DatabaseTransacao();Modelagem de try {Aspectos em UML origem.debitar(valor); destino.creditar(valor); dt.enviar(origem, destino); }catch(Exception e) { dt.reverter(); } } 12/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França Exemplo práticoIntroduçãoHistória Adicionando ao log de dados da aplicaçãoPOA em outras linguagensMotivaçãoProgramação Orientadaa AspectosGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 13/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França Exemplo práticoIntroduçãoHistória Adicionando ao log de dados da aplicaçãoPOA em outras linguagensMotivação Implementação do método Trasferência de ContasProgramação Orientadaa Aspectos public void transferir(Conta origem, Conta destino, int valor){Gerenciamento de interesses com if (valor < 0) {POA throw new TransferenciaNegativaException();Desenvolvimento com POA }Benefícios esperados if (!getUsuario().hasPermissao(OP_TRANSF)){ throw new PermissaoException();AspectJ }Instalação do AspectJ if (origem.getSaldo() < valor) {Joinpoints throw new SaldoInsuficienteException();Pointcuts }AdivicesAspectos versus Classes DatabaseTransacao dt = new DatabaseTransacao();Modelagem de try {Aspectos em UML origem.debitar(valor); destino.creditar(valor); dt.enviar(origem, destino); logger.logOperacao(OP_TRANSF, origem, destino, valor); }catch(Exception e) { dt.reverter(); logger.logErro(OP_TRANSF, e.getMenssage); } } 13/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França O que podemos extrair desse exemplo?IntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa AspectosGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 14/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França O que podemos extrair desse exemplo?IntroduçãoHistóriaPOA em outras linguagens O código perdeu elegânciaMotivaçãoProgramação Orientadaa AspectosGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 14/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França O que podemos extrair desse exemplo?IntroduçãoHistóriaPOA em outras linguagens O código perdeu elegânciaMotivação O código perdeu simplicidadeProgramação Orientadaa AspectosGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 14/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França O que podemos extrair desse exemplo?IntroduçãoHistóriaPOA em outras linguagens O código perdeu elegânciaMotivação O código perdeu simplicidadeProgramação Orientadaa Aspectos O código da regra do negócio foi voltado paraGerenciamento de interesses comPOA outros objetivos (misturado)Desenvolvimento com POABenefícios esperados VerificaçõesAspectJ SegurançaInstalação do AspectJJoinpoints Log de dadosPointcuts Persistência de dadosAdivicesAspectos versus ClassesModelagem deAspectos em UML 14/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França O que podemos extrair desse exemplo?IntroduçãoHistóriaPOA em outras linguagens O código perdeu elegânciaMotivação O código perdeu simplicidadeProgramação Orientadaa Aspectos O código da regra do negócio foi voltado paraGerenciamento de interesses comPOA outros objetivos (misturado)Desenvolvimento com POABenefícios esperados VerificaçõesAspectJ SegurançaInstalação do AspectJJoinpoints Log de dadosPointcuts Persistência de dadosAdivicesAspectos versus Classes Código redundanteModelagem deAspectos em UML 14/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França O que podemos extrair desse exemplo?IntroduçãoHistóriaPOA em outras linguagens O código perdeu elegânciaMotivação O código perdeu simplicidadeProgramação Orientadaa Aspectos O código da regra do negócio foi voltado paraGerenciamento de interesses comPOA outros objetivos (misturado)Desenvolvimento com POABenefícios esperados VerificaçõesAspectJ SegurançaInstalação do AspectJJoinpoints Log de dadosPointcuts Persistência de dadosAdivicesAspectos versus Classes Código redundanteModelagem deAspectos em UML Código de difícil manutenção 14/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França O que podemos extrair desse exemplo?IntroduçãoHistóriaPOA em outras linguagens O código perdeu elegânciaMotivação O código perdeu simplicidadeProgramação Orientadaa Aspectos O código da regra do negócio foi voltado paraGerenciamento de interesses comPOA outros objetivos (misturado)Desenvolvimento com POABenefícios esperados VerificaçõesAspectJ SegurançaInstalação do AspectJJoinpoints Log de dadosPointcuts Persistência de dadosAdivicesAspectos versus Classes Código redundanteModelagem deAspectos em UML Código de difícil manutenção Código de difícil compreensão 14/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Problemas da POO Dyego Ítallo, MarcosJosé, Weverson França O que podemos extrair desse exemplo?IntroduçãoHistóriaPOA em outras linguagens O código perdeu elegânciaMotivação O código perdeu simplicidadeProgramação Orientadaa Aspectos O código da regra do negócio foi voltado paraGerenciamento de interesses comPOA outros objetivos (misturado)Desenvolvimento com POABenefícios esperados VerificaçõesAspectJ SegurançaInstalação do AspectJJoinpoints Log de dadosPointcuts Persistência de dadosAdivicesAspectos versus Classes Código redundanteModelagem deAspectos em UML Código de difícil manutenção Código de difícil compreensão Código de difícil reutilização 14/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Causa dos problemas da POO Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa AspectosGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem de Figura: [Lincoln, 2009] Projeto antes dos requisitosAspectos em UML transversais 15/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Causa dos problemas da POO Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa AspectosGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML Figura: [Lincoln, 2009] Projeto depois dos requisitos transversais 16/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Causa dos problemas da POO Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa AspectosGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML Figura: [Lincoln, 2009] Problema multidimensinal 17/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Programação Orientada a Aspectos Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistória A programação Orientada a Aspectos (POA) é umaPOA em outras linguagensMotivação nova metodologia que:Programação Orientadaa Aspectos Separa os interesses, responsábilidades e requisistosGerenciamento de interesses comPOA (Concerns) de um sistemaDesenvolvimento com POABenefícios esperados A modularização dos Aspectos produz umaAspectJ arquitetura fácil de projetar, implementar e manterInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 18/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Programação Orientada a Aspectos Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistória A programação Orientada a Aspectos (POA) é umaPOA em outras linguagensMotivação nova metodologia que:Programação Orientadaa Aspectos Separa os interesses, responsábilidades e requisistosGerenciamento de interesses comPOA (Concerns) de um sistemaDesenvolvimento com POABenefícios esperados A modularização dos Aspectos produz umaAspectJ arquitetura fácil de projetar, implementar e manterInstalação do AspectJJoinpointsPointcutsAdivices POO X POAAspectos versus Classes A POA não veio para substituir a POO, e sim paraModelagem deAspectos em UML complementá-la, pois a POA usada sozinha não traz benefícios para o projeto de software. 18/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Gerenciamento de interesses (Concerns) Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistória Um Concern é um requisito específico de um sistema.POA em outras linguagens Existem dois tipos de Concern, são eles:MotivaçãoProgramação Orientada 1 Core Concerns – são os requisitos dasa AspectosGerenciamento de interesses com funcionalidades centrais de um módulo (núcleo)POADesenvolvimento com POABenefícios esperados 2 Crosscutting Concerns – são os requistos dasAspectJ funcionalidades periférias do sistemas, onde, sãoInstalação do AspectJJoinpoints usados em diversos módulos do sistemaPointcutsAdivices Em um projeto desenvolvido com POA, o engenheiroAspectos versus Classes deve se preocupar durante todo o projeto com aModelagem deAspectos em UML separação de interesses (separation of concerns). Os interesses transversais são encapsulados pelos aspectos. 19/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Programação Orientada a Aspectos Dyego Ítallo, MarcosJosé, Weverson França Desenvolvimento com POAIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa Aspectos Identificar concernsGerenciamento de interesses comPOA ImplementarDesenvolvimento com POABenefícios esperados Classes para o negócioAspectJ Aspectos para crosscutting concernsInstalação do AspectJ Classes de negócio não ficam cientes da existênciaJoinpointsPointcuts dos AspectosAdivicesAspectos versus Classes Combinar concerns (weaver)Modelagem de Identificar crosscutting e core concernsAspectos em UML 20/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Desenvolvimento com POA Dyego Ítallo, MarcosJosé, Weverson FrançaIntrodução Classes – encapsulam os requisitos do sistemaHistóriaPOA em outras linguagens Aspectos – encapsulam os requisitos transversaisMotivaçãoProgramação Orientada Weaver – acoplam os apectos e classes em uma Aspectos programaGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML Figura: [Lincoln, 2009] Funcionamento da POA 21/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Benefícios esperados Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa Aspectos Boa modularidadeGerenciamento de interesses comPOADesenvolvimento com POA Fácil desenvolvimentoBenefícios esperadosAspectJ Fácil manutençãoInstalação do AspectJJoinpoints Fácil reutilizaçãoPointcuts Software “plug and play”;AdivicesAspectos versus ClassesModelagem deAspectos em UML 22/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software AspectJ Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa AspectosGerenciamento de interesses com É uma extensão java para programar orientado aPOADesenvolvimento com POA aspectosBenefícios esperados É um weaver para javaAspectJInstalação do AspectJ Pré-processadorJoinpointsPointcuts Fácil de aprender e implementarAdivicesAspectos versus ClassesModelagem deAspectos em UML 23/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Instalação do AspectJ Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistóriaPOA em outras linguagensMotivação Para instalar o AspectJ é necessário ter a máquinaProgramação Orientada virtual Java (JDK), o ambiente de desenvolvimentoa AspectosGerenciamento de interesses com (Eclipse) e o plugin para o Eclipse (AJDT);POADesenvolvimento com POA JDK – http://www.oracle.com/technetwork/Benefícios esperadosAspectJ java/javase/downloads/index.htmlInstalação do AspectJJoinpoints AJDT – http://download.eclipse.org/PointcutsAdivices technology/ajdt/30/updateAspectos versus Classes Eclipse – http://download.eclipse.org/Modelagem deAspectos em UML downloald/index.html 24/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software AspectJ Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa Aspectos 1 Crosscutting estático – Modifica classes, interfaceGerenciamento de interesses comPOA e aspectos sem modificar o comportamento doDesenvolvimento com POABenefícios esperados programa.AspectJInstalação do AspectJ 2 Crosscutting dinâmico – Adiciona comportamentoJoinpoints dinamicamente ao programa através de uma regraPointcutsAdivices que determina a execução de uma ação.Aspectos versus ClassesModelagem deAspectos em UML 25/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software AspectJ Dyego Ítallo, MarcosJosé, Weverson França WildcardsIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa AspectosGerenciamento de interesses comPOADesenvolvimento com POA * – sequência de caracteres sem pontosBenefícios esperadosAspectJ .. – sequência de caracteresInstalação do AspectJJoinpoints + – subclasse da classe em questãoPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 26/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software AspectJ Dyego Ítallo, MarcosJosé, Weverson França Exemplo de WildcardsIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa AspectosGerenciamento de interesses comPOA pointcut finds(): call (* find*(..))Desenvolvimento com POABenefícios esperados findCliente();AspectJ findClienteByName();Instalação do AspectJJoinpoints findClienteByCpf();Pointcuts findClienteByTelefone().AdivicesAspectos versus ClassesModelagem deAspectos em UML 27/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software AspectJ Dyego Ítallo, MarcosJosé, Weverson França JoinpointsIntrodução São pontos em que os apectos interceptam as classesHistóriaPOA em outras linguagens callMotivaçãoProgramação Orientada executiona AspectosGerenciamento de interesses com initializationPOADesenvolvimento com POA preinitializationBenefícios esperadosAspectJ staticinitializationInstalação do AspectJJoinpoints handlerPointcutsAdivices getAspectos versus Classes setModelagem deAspectos em UML args adviceexecution this target 28/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Aspectj Dyego Ítallo, MarcosJosé, Weverson França PointcutsIntroduçãoHistóriaPOA em outras linguagensMotivação São um conjunto de joinpointsProgramação Orientada Detectam quais joinpoints devem ser interceptadosa AspectosGerenciamento de interesses comPOA Podem ter ações booleanas (!, e ||) e argumentosDesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 29/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Aspectj Dyego Ítallo, MarcosJosé, Weverson França PointcutsIntroduçãoHistóriaPOA em outras linguagensMotivação São um conjunto de joinpointsProgramação Orientada Detectam quais joinpoints devem ser interceptadosa AspectosGerenciamento de interesses comPOA Podem ter ações booleanas (!, e ||) e argumentosDesenvolvimento com POABenefícios esperados EstruturaAspectJInstalação do AspectJ pointcut nomePointcut(ListaParametros):Joinpoints «expressao»;PointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 29/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Aspectj Dyego Ítallo, MarcosJosé, Weverson França PointcutsIntroduçãoHistóriaPOA em outras linguagensMotivação São um conjunto de joinpointsProgramação Orientada Detectam quais joinpoints devem ser interceptadosa AspectosGerenciamento de interesses comPOA Podem ter ações booleanas (!, e ||) e argumentosDesenvolvimento com POABenefícios esperados EstruturaAspectJInstalação do AspectJ pointcut nomePointcut(ListaParametros):Joinpoints «expressao»;PointcutsAdivicesAspectos versus Classes Exemplo de pointcutModelagem deAspectos em UML pointcut traced(Person p) : target(p) && call(public * set*(..)) || call(public * get*(..)); 29/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software AspectJ Dyego Ítallo, MarcosJosé, Weverson França AdivicesIntroduçãoHistóriaPOA em outras linguagensMotivação São partes de códigos associados a pointcutsProgramação Orientada Tiposa AspectosGerenciamento de interesses com beforePOADesenvolvimento com POA afterBenefícios esperados aroundAspectJInstalação do AspectJ FormaJoinpointsPointcuts tipoAdvice(ListaParametros) :AdivicesAspectos versus Classes ListaPointCut()corpoModelagem de ExemplosAspectos em UML 30/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software AspectJ Dyego Ítallo, MarcosJosé, Weverson França AdivicesIntroduçãoHistóriaPOA em outras linguagensMotivação São partes de códigos associados a pointcutsProgramação Orientada Tiposa AspectosGerenciamento de interesses com beforePOADesenvolvimento com POA afterBenefícios esperados aroundAspectJInstalação do AspectJ FormaJoinpointsPointcuts tipoAdvice(ListaParametros) :AdivicesAspectos versus Classes ListaPointCut()corpoModelagem de ExemplosAspectos em UML before(param) : pointcut(param) ... after(param) : pointcut(param) ... 30/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software AspectJ Dyego Ítallo, MarcosJosé, Weverson França thisJoinPointIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa AspectosGerenciamento de interesses com É similar ao this do Java.POADesenvolvimento com POA Disponibiliza informações do joinpoint que estáBenefícios esperadosAspectJ sendo usado.Instalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 31/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software AspectJ Dyego Ítallo, MarcosJosé, Weverson França thisJoinPointIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientadaa AspectosGerenciamento de interesses com É similar ao this do Java.POADesenvolvimento com POA Disponibiliza informações do joinpoint que estáBenefícios esperadosAspectJ sendo usado.Instalação do AspectJJoinpoints Exemplo:PointcutsAdivices thisJoinPoint.toString()Aspectos versus Classes thisJoinPoint.getArgs()Modelagem deAspectos em UML 31/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software AspectJ Dyego Ítallo, MarcosJosé, Weverson França ReusoIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientada Da mesma forma como nas classesa AspectosGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 32/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software AspectJ Dyego Ítallo, MarcosJosé, Weverson França ReusoIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientada Da mesma forma como nas classesa Aspectos ReúsoGerenciamento de interesses comPOADesenvolvimento com POA public abstract aspect AspectoMae {Benefícios esperados protected abstract pointcut PointCut_um();AspectJ // adviceInstalação do AspectJ }JoinpointsPointcuts public aspect AspectoFilho extends AspectoMae{Adivices protected pointcut PointCut_um(): call(* set*(..));Aspectos versus ClassesModelagem de }Aspectos em UML 32/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software AspectJ Dyego Ítallo, MarcosJosé, Weverson França Aspectos versus ClassesIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientada 1 Apectos e classes são similares:a AspectosGerenciamento de interesses com Tem um tipoPOADesenvolvimento com POA Trabalha com herançaBenefícios esperados São abstrados ou concretosAspectJ Podem conter atributos e métodosInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 33/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software AspectJ Dyego Ítallo, MarcosJosé, Weverson França Aspectos versus ClassesIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientada 1 Apectos e classes são similares:a AspectosGerenciamento de interesses com Tem um tipoPOADesenvolvimento com POA Trabalha com herançaBenefícios esperados São abstrados ou concretosAspectJ Podem conter atributos e métodosInstalação do AspectJJoinpointsPointcuts 2 Aspectos são diferentes das classes:Adivices Não tem construtor nem destrutorAspectos versus Classes Não são criados com newModelagem deAspectos em UML Podem conter pointcuts e advices 33/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Modelagem de Aspectos em UML Dyego Ítallo, MarcosJosé, Weverson França Diagrama de classesIntroduçãoHistória pointcutPOA em outras linguagensMotivação adviceProgramação Orientada introductiona AspectosGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML 34/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Modelagem de Aspectos em UML Dyego Ítallo, MarcosJosé, Weverson França Diagrama de classesIntroduçãoHistória pointcutPOA em outras linguagensMotivação adviceProgramação Orientada introductiona AspectosGerenciamento de interesses comPOADesenvolvimento com POABenefícios esperadosAspectJInstalação do AspectJJoinpointsPointcutsAdivicesAspectos versus ClassesModelagem deAspectos em UML Figura: Representação de um Aspecto em UML 34/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Modelagem de Aspectos em UML Dyego Ítallo, MarcosJosé, Weverson França Diagrama de sequênciaIntroduçãoHistóriaPOA em outras linguagensMotivação pointcuts – devem ser representados como atoresProgramação Orientadaa Aspectos do sistema. No caso de um pointcut se chamarGerenciamento de interesses comPOA teste. O ator é determinado como pointcut(teste)Desenvolvimento com POABenefícios esperados advices – de acordo com sua forma de execuçãoAspectJ antes (before) ou depois (after) de um pointcut,Instalação do AspectJJoinpoints devem estabelecer uma ligação com o mesmo, ePointcutsAdivices deste ponto a diante definir a sequências dasAspectos versus Classes operações a serem executadasModelagem deAspectos em UML introductions – podem ser executados normalmente a partir da inclusão de uma classe estática. 35/36 Engenharia de Software Voltar Avançar
  • Engenharia de Software Referências Dyego Ítallo, MarcosJosé, Weverson FrançaIntroduçãoHistóriaPOA em outras linguagensMotivaçãoProgramação Orientada S.ROCHA, Lincloln. Introdução a poa e aspectj.a AspectosGerenciamento de interesses com Fortaleza: Ufc, 2009.POADesenvolvimento com POA GOMES, Edeyson Andrade. Programação orientadaBenefícios esperadosAspectJ a aspectos. Campinas: Edeyson, 2007.Instalação do AspectJJoinpoints RESENDE, Antônio Maria Pereira de; SILVA,PointcutsAdivices Claudiney Calixto da. Programação orientada aAspectos versus Classes aspectos em java. Rio de Janeiro: Brasport, 2005.Modelagem deAspectos em UML 36/36 Engenharia de Software Voltar