Você está na página 1de 26

Uma comparao entre a Programao Orientada a Aspectos e a Programao Orientada a Componentes.

Uma viso geral


Grupo:

Alexandre Henrique Vieira Soares


Anderson de Rezende Rocha Flvio Luis Alves Jlio Csar Alves

Estrutura da apresentao
a) Introduo

b) Contexto
c) Motivao d) Justificativa do tema e) Desenvolvimento do tema f) Ferramentas de desenvolvimento

g) Concluso
h) Referncia

Introduo
-> A engenharia de software e as linguagens de programao coexistem em um relacionamento de suporte mtuo. -> A maioria dos processos de desenvolvimento de software da atualidade considera um sistema com unidades cada vez menores de desenvolvimento.

Introduo
-> Uma propriedade de um sistema que deve ser implementada pode ser vista como um componente ou como um aspecto.
-> A propriedade pode ser vista como um componente se puder ser encapsulada em um procedimento generalizado.

Introduo

-> Aspectos so normalmente propriedades que envolvem diversas unidades de um sistema, afetando a semntica dos componentes funcionais sistematicamente. Tais como: controle de concorrncia em operaes em uma mesma conta bancria, registro das transaes de uma determinada conta.

Introduo

Introduo
-> Existem propriedades que no se enquadram em componentes da decomposio funcional. -> Seus cdigos encontram-se espalhados atravs do cdigo da aplicao. Isto dificulta a separao da funcionalidade bsica do sistema dessas propriedades. -> Como resolver estes problemas? Programao Orientada a Aspectos (POA). Alternativa para resolver problemas que nem as tcnicas de programao Orientada Objetos e nem as tcnicas de programao Estruturada resolvem facilmente.

Introduo
Exemplo de um aspecto:

-> O campo "Movimento" representa um Aspecto.

Contexto
-> Visando a maior integrao dos softwares produzidos desenvolveu-se a POA. -> Diante deste contexto a Orientao a Aspectos objetiva oferecer suporte ao programador na tarefa de separar: i) componentes dos aspectos

ii) componentes entre si


iii) aspectos entre si

Motivao:
-> A POA complementa a POO por facilitar um outro tipo de modularidade que expande a implementao espalhada de uma responsabilidade dentro de uma simples unidade.

Por que usar a POA?


-> Por que diminui a complexidade dos componentes, visto que uma parte do cdigo fica na definio dos aspectos. -> Por estar centralizado em uma nica unidade, alteraes so muito mais simples, no preciso reescrever inmeras classes.

Por que usar a POA?

-> Com a diminuio do tamanho do cdigo dos componentes a complexidade diminuda.

-> Por ser uma forma melhor de gerenciar a complexidade dos componentes.
-> Por ter menos cdigo e ser menos complexo, est sujeito a menos erros.

Por que ningum usa POA?


-> Mesmo tendo evoludo muito a POA ainda deixa a desejar em alguns pontos: a) Como definimos o que ou no um aspecto no nosso projeto? b) Existem metodologias para definir isso?

Justificativa do tema

-> Por que o tema foi escolhido? a) Para conhecer uma nova abordagem de como montar projetos de software b) Algum j conhecia POA? c) Algum pretende usar POA?

Desenvolvimento do tema
-> Como funciona a POA? Uma implementao bsica de POA, consiste em:

Crosscutting
-> A POA permite ao programador separar os interesses comuns do sistema (que fogem a tpica diviso de classes). -> O comportamento que no se encaixa naturalmente dentro de um mdulo de um programa chamado comportamento que atravessa (crosscutting) o sistema, ou seja, est espalhado em vrias classes. -> A POA ajuda a manter a consistncia do projeto, apresentando um novo nvel de modularidade: os aspectos.

Ferramentas de desenvolvimento: O Aspect-J


-> AspectJ uma linguagem de aspecto. Ela uma extenso da linguagem Java. -> Conta com um montador (Weaver) . -> suportado por vrias IDEs . -> A maior vantagem de AspectJ a possibilidade de implementar funcionalidades em separado da parte funcional do sistema, e automaticamente inserir ou remover tais aspectos do mesmo.

Ferramentas de desenvolvimento: O Aspect-J (exemplo)

Ferramentas de desenvolvimento: O Aspect-J (exemplo)

Ferramentas de desenvolvimento: O Aspect-J (exemplo)

Ferramentas de desenvolvimento: O Aspect-J (exemplo)

Ferramentas de desenvolvimento: O Aspect-J (exemplo)

Ferramentas de desenvolvimento: O Aspect-J (exemplo)


Com POA:

Ferramentas de desenvolvimento: O Aspect-J (exemplo)


Sem POA:

Concluses
-> A programao orientada a aspecto passa a fazer parte do dia-a-dia dos desenvolvedores. -> Existem detalhes que precisam ser melhor estudados. -> Falta uma metodologia.

Referncias
-> Pressman, Software Engeneering
-> Deitel & Deitel, Java, How to Program -> www.aspectj.org -> Dissertaao de mestrado de Eduardo Laureano, UFPE - "Persistence implementation with Aspect-J"

-> Artigo de William Grosso em DrDobbs.com (DDJ.com) - "Aspect-Oriented Programming & AspectJ