260 likes | 349 Views
Uma comparação entre a Programação Orientada a Aspectos e a Programação Orientada a Componentes. Uma visão geral. Grupo: Alexandre Henrique Vieira Soares Anderson de Rezende Rocha Flávio Luis Alves Júlio César Alves. Estrutura da apresentação.
E N D
Uma comparação entre a Programação Orientada a Aspectos e a Programação Orientada a Componentes. Uma visão geral Grupo: Alexandre Henrique Vieira Soares Anderson de Rezende Rocha Flávio Luis Alves Júlio César Alves
Estrutura da apresentação a) Introdução b) Contexto c) Motivação d) Justificativa do tema e) Desenvolvimento do tema f) Ferramentas de desenvolvimento g) Conclusão h) Referência
Introdução -> A engenharia de software e as linguagens de programação coexistem em um relacionamento de suporte mútuo. -> A maioria dos processos de desenvolvimento de software da atualidade considera um sistema com unidades cada vez menores de desenvolvimento.
Introdução -> 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.
Introdução -> Aspectos são normalmente propriedades que envolvem diversas unidades de um sistema, afetando a semântica dos componentes funcionais sistematicamente. Tais como: controle de concorrência em operações em uma mesma conta bancária, registro das transações de uma determinada conta.
Introdução -> Existem propriedades que não se enquadram em componentes da decomposição funcional. -> Seus códigos encontram-se espalhados através do código da aplicação. Isto dificulta a separação da funcionalidade básica do sistema dessas propriedades. -> Como resolver estes problemas? Programação Orientada a Aspectos (POA). Alternativa para resolver problemas que nem as técnicas de programação Orientada à Objetos e nem as técnicas de programação Estruturada resolvem facilmente.
Introdução Exemplo de um aspecto: -> O campo "Movimento" representa um Aspecto.
Contexto -> Visando a maior integração dos softwares produzidos desenvolveu-se a POA. -> Diante deste contexto a Orientação a Aspectos objetiva oferecer suporte ao programador na tarefa de separar: i) componentes dos aspectos ii) componentes entre si iii) aspectos entre si
Motivação: -> A POA complementa a POO por facilitar um outro tipo de modularidade que expande a implementação 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 código fica na definição dos aspectos. -> Por estar centralizado em uma única unidade, alterações são muito mais simples, não é preciso reescrever inúmeras classes.
Por que usar a POA? -> Com a diminuição do tamanho do código dos componentes a complexidade é diminuída. -> Por ser uma forma melhor de gerenciar a complexidade dos componentes. -> Por ter menos código e ser menos complexo, está sujeito a menos erros.
Por que ninguém usa POA? -> Mesmo tendo evoluído muito a POA ainda deixa a desejar em alguns pontos: a) Como definimos o que é ou não 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) Alguém já conhecia POA? c) Alguém pretende usar POA?
Desenvolvimento do tema -> Como funciona a POA? Uma implementação básica de POA, consiste em:
Crosscutting -> A POA permite ao programador separar os interesses comuns do sistema (que fogem a típica divisão de classes). -> O comportamento que não se encaixa naturalmente dentro de um módulo de um programa é chamado comportamento que atravessa (crosscutting) o sistema, ou seja, está espalhado em várias classes. -> A POA ajuda a manter a consistência do projeto, apresentando um novo nível de modularidade: os aspectos.
Ferramentas de desenvolvimento: O Aspect-J -> AspectJ é uma linguagem de aspecto. Ela é uma extensão da linguagem Java. -> Conta com um montador (Weaver) . -> É suportado por várias IDEs . -> A maior vantagem de AspectJ é a possibilidade de implementar funcionalidades em separadoda parte funcional do sistema, e automaticamente inserir ou remover tais aspectos do mesmo.
Ferramentas de desenvolvimento: O Aspect-J (exemplo) Com POA:
Ferramentas de desenvolvimento: O Aspect-J (exemplo) Sem POA:
Conclusões -> A programação orientada a aspecto passa a fazer parte do dia-a-dia dos desenvolvedores. -> Existem detalhes que precisam ser melhor estudados. -> Falta uma metodologia.
Referências -> Pressman, Software Engeneering -> Deitel & Deitel, Java, How to Program -> www.aspectj.org -> Dissertaçao de mestrado de Eduardo Laureano, UFPE - "Persistence implementation with Aspect-J" -> Artigo de William Grosso em DrDobbs.com (DDJ.com) - "Aspect-Oriented Programming & AspectJ“