SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Programação Orientada a Aspectos 
ALUNO: RUBEN BLENICIO 
CURSO: ENGENHARIA DE SOFTWARE 
CADEIRA: PROJETO DETALHADO DE SOFTWARE 
PROFESSOR: CAMILO ALMENDRA
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.
Aspectos versuscomponentes 
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.
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.
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.
Implementação de 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.
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: 
oCódigo entrelaçado: regras de negócio misturadas com códigos de distribuição; 
oCódigo espalhado: várias classes implementando uma funcionalidade; 
oDificuldade 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.
Exemplo de aspecto
Linguagem de Aspectos 
A 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.
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.
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.
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.
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.
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.
O Aspecto 
Alinguagem AspectJéuma extensão orientada a aspectos, de propósito geral da linguagem Java.
O AspectJ -Pointcuts
O AspectJ -Advices
Exemplo de código AspectJ
Exemplo de Código AspectJ
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/

Mais conteúdo relacionado

Mais procurados

Java Net: Interagindo com a Internet
Java Net: Interagindo com a InternetJava Net: Interagindo com a Internet
Java Net: Interagindo com a InternetRicardo Terra
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgeLorran Pegoretti
 
Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoElaine Cecília Gatto
 
Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasVagner Santana
 
Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Javaalexmacedo
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareelliando dias
 
C:\Documents And Settings\Juliana\Desktop\Palestra 19 03 2010
C:\Documents And Settings\Juliana\Desktop\Palestra 19 03 2010C:\Documents And Settings\Juliana\Desktop\Palestra 19 03 2010
C:\Documents And Settings\Juliana\Desktop\Palestra 19 03 2010Facuuldade Norte Sul
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gofYan Justino
 
Fundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de SoftwareFundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de SoftwareÁlvaro Farias Pinheiro
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Adriano Tavares
 
Padrão De Projeto Adapter
Padrão De Projeto AdapterPadrão De Projeto Adapter
Padrão De Projeto AdapterMatheus Andrade
 
Projeto de Sistemas - Aula003
Projeto de Sistemas - Aula003Projeto de Sistemas - Aula003
Projeto de Sistemas - Aula003Cláudio Amaral
 
RUP (Rational Unified Process)
RUP (Rational Unified Process)RUP (Rational Unified Process)
RUP (Rational Unified Process)TUPP3T3
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareeros.viggiano
 

Mais procurados (20)

Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Java Net: Interagindo com a Internet
Java Net: Interagindo com a InternetJava Net: Interagindo com a Internet
Java Net: Interagindo com a Internet
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
 
Artigo Transp Sw
Artigo Transp SwArtigo Transp Sw
Artigo Transp Sw
 
Linguagem de programação C# 4 e 5
Linguagem de programação C# 4 e 5Linguagem de programação C# 4 e 5
Linguagem de programação C# 4 e 5
 
Diagrama de classes
Diagrama de classesDiagrama de classes
Diagrama de classes
 
Educação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NETEducação e certificação na Plataforma .NET
Educação e certificação na Plataforma .NET
 
Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de Programação
 
Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de Sistemas
 
Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Java
 
Visaogeraldorup
VisaogeraldorupVisaogeraldorup
Visaogeraldorup
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
C:\Documents And Settings\Juliana\Desktop\Palestra 19 03 2010
C:\Documents And Settings\Juliana\Desktop\Palestra 19 03 2010C:\Documents And Settings\Juliana\Desktop\Palestra 19 03 2010
C:\Documents And Settings\Juliana\Desktop\Palestra 19 03 2010
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gof
 
Fundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de SoftwareFundamentos de Padrões de Projeto de Software
Fundamentos de Padrões de Projeto de Software
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1
 
Padrão De Projeto Adapter
Padrão De Projeto AdapterPadrão De Projeto Adapter
Padrão De Projeto Adapter
 
Projeto de Sistemas - Aula003
Projeto de Sistemas - Aula003Projeto de Sistemas - Aula003
Projeto de Sistemas - Aula003
 
RUP (Rational Unified Process)
RUP (Rational Unified Process)RUP (Rational Unified Process)
RUP (Rational Unified Process)
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 

Semelhante a POA em

Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a AspectosRegina Macedo
 
Reutilização
ReutilizaçãoReutilização
Reutilizaçãoemjorge
 
Cobertura de Código: Testes de Unidade
Cobertura de Código: Testes de UnidadeCobertura de Código: Testes de Unidade
Cobertura de Código: Testes de UnidadeThiago Bertuzzi
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_ImplementaçãoWagner Zaparoli
 
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANEAPSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANEFco Edilson Nascimento
 
Este trabalho trata
Este trabalho trataEste trabalho trata
Este trabalho trataRoni Reis
 
Implementing Product Line Variabilities
Implementing Product Line VariabilitiesImplementing Product Line Variabilities
Implementing Product Line VariabilitiesMichel Alves
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 
Conceito de analise de desenvolvivento de sistemas
Conceito de analise de desenvolvivento de sistemasConceito de analise de desenvolvivento de sistemas
Conceito de analise de desenvolvivento de sistemasluanrjesus
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento webArlindo Santos
 

Semelhante a POA em (20)

Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
FDD
FDDFDD
FDD
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Ponto de função
Ponto de funçãoPonto de função
Ponto de função
 
Reutilização
ReutilizaçãoReutilização
Reutilização
 
Ponto de função
Ponto de funçãoPonto de função
Ponto de função
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
Cobertura de Código: Testes de Unidade
Cobertura de Código: Testes de UnidadeCobertura de Código: Testes de Unidade
Cobertura de Código: Testes de Unidade
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
 
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANEAPSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
 
DDD
DDDDDD
DDD
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
 
Este trabalho trata
Este trabalho trataEste trabalho trata
Este trabalho trata
 
Modelagem 21102006_1
Modelagem 21102006_1Modelagem 21102006_1
Modelagem 21102006_1
 
Implementing Product Line Variabilities
Implementing Product Line VariabilitiesImplementing Product Line Variabilities
Implementing Product Line Variabilities
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Rational Unified Process (RUP)
Rational Unified Process (RUP)Rational Unified Process (RUP)
Rational Unified Process (RUP)
 
Desenvolvimento baseado em componentes
Desenvolvimento baseado em componentesDesenvolvimento baseado em componentes
Desenvolvimento baseado em componentes
 
Conceito de analise de desenvolvivento de sistemas
Conceito de analise de desenvolvivento de sistemasConceito de analise de desenvolvivento de sistemas
Conceito de analise de desenvolvivento de sistemas
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento web
 

POA em

  • 1. Programação Orientada a Aspectos ALUNO: RUBEN BLENICIO CURSO: ENGENHARIA DE SOFTWARE CADEIRA: PROJETO DETALHADO DE SOFTWARE PROFESSOR: CAMILO ALMENDRA
  • 2. 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.
  • 3. Aspectos versuscomponentes 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.
  • 4. 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.
  • 5. 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.
  • 7. 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.
  • 8. 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: oCódigo entrelaçado: regras de negócio misturadas com códigos de distribuição; oCódigo espalhado: várias classes implementando uma funcionalidade; oDificuldade 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.
  • 10. Linguagem de Aspectos A 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.
  • 11. 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.
  • 12. 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.
  • 13. 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.
  • 14. 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.
  • 15. 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.
  • 16. O Aspecto Alinguagem AspectJéuma extensão orientada a aspectos, de propósito geral da linguagem Java.
  • 21. 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/