A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Desenvolvimento de Sistemas Orientados a Aspectos

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento de Sistemas Orientados a Aspectos"— Transcrição da apresentação:

1 Desenvolvimento de Sistemas Orientados a Aspectos
Introdução à AOP Desenvolvimento de Sistemas Orientados a Aspectos Prof. Rodrigo Ribeiro

2 Evolução Linguagens de programação
Evolução dirigida pelas necessidades Assembly Linguagens de alto nível (não estruturadas). Linguagens estruturadas. Linguagens orientadas a objetos. Herança Polimorfismo Evolução: Permitiu gerenciar complexidade do software.

3 Evolução Porém... Abordagem Atual: OOP.
A evolução resolve antigos problemas... A cada novo software, possivelmente novos problemas são levantados... Possivelmente, abordagem atual não os resolve de maneira adequada. Abordagem Atual: OOP. Encapsulamento, Herança e Polimorfismo. Mas a OOP resolve todos os problemas?

4 Evolução Metodologia OOP Bom desenho de software custa $$$
Padrões de projeto e de arquitetura de sistemas Bom desenho de software custa $$$ Dilema do arquiteto Pergunta: Quanto de desenho é necessário? Desenho Elaborado Prevê mudanças de requisitos e se adapta bem a estas. Porém pode ser difícil de implementar e entender Custo e prazo de entrega elevados Desenho normal Custo e prazo de entrega OK. Dilema do arquiteto: equilíbrio entre qualidade e custo

5 Evolução Processos e metodologias de software Mudanças de requisitos
Bom desenho Permite a alteração e inclusão de novos requisitos Usando OOP... Existem requisitos que afetam diversos módulos já implementados. Exemplo: Mudança de regras para autenticação Alteração na regra Possivelmente nos pontos de utilização

6 Evolução OOP não resolve todos os problemas... Problema
Sistemas de software e interesses Software como um conjunto de interesses Regras de negócio Persistência de dados Sincronização e concorrência Logging Segurança Problema Estes interesses se espalham por todo o software

7 Interesses

8 Interesses e Requisitos
Requisitos (requirements) Funcionalidades núcleo de um sistema Ex: Gerenciamento de contas e clientes em um sistema bancário. Interesses (concern) Funcionalidades que são comuns aos requisitos. Ex: persistência, logging, autenticação, etc... Problema: O que é requisito e o que é interesse?

9 Separação de Interesses

10 Separação de Interesses
Separando interesses... Reduzimos a complexidade do sistema. Implementação separada de interesses Interesses são ortogonais Ortogonal: Independentes Ex: Alteração do mecanismo de persistência não deve modificar a implementação de outros interesses

11 Separação de Interesses
Segurança Lógica de negócio Persistência

12 Implementação de Interesses
Tradicionalmente: Segurança Persistência Lógica de negócio Problema: Como modularizar algo espalhado?

13 Implementação de Interesses
Exemplo Sistema Bancário Controle de contas, de clientes e módulo gerencial Crédito e débito em contas Cadastro de clientes e contas Interesse: Logging Registrar todo acesso ao sistema bancário Objetivo: Auditoria de sistema Problema Interesse que se espalha por todos os módulos Difícil reuso e manutenção

14 Implementação de Interesses
Módulo de clientes Módulo de Logging Módulo de contas Chamadas de API Módulo gerencial

15 Implementação de Interesses
Queremos reutilizar interesses espalhados! Mas como? Linguagens estruturadas: funções Linguagens OO: Classes Usar tecnologia OO? Não. Classes não são capazes de modularizar interesses espalhados. Porquê?

16 Implementação de Interesses
Interesses espalhados são... Espalhados! Problema: Com OOP: Interesses são concentrados em classes Mas a utilização continua espalhada...  Então... Temos que obter uma maneira para contornar isso... Solução Interesse concentrado em um único módulo. Especificar regras para “misturar” interesse com o resto do código do programa.

17 Implementando Interesses - AOP
Chamada de API Módulo de clientes Módulo de Logging Aspecto de Logging Módulo de contas Chamadas inseridas por um combinador (weaver) Módulo gerencial

18 Implementação de Interesses
Abordagem Tradicional – Logging public interface Logger { public void log(String message); }

19 Implementação de Interesses
Classe de Conta Bancária public class Account extends AbstractAccount{ //variáveis de instância da classe //instância do logger Logger logger = LoggerFactory.getLoggerInstance(); public void debit(Double value){...} public void credit(Double value){...} public void save(){...} public void load(){...} }

20 Implementação de Interesses
Método de crédito public void credit(double value) { logger.log(“Init crediting:” + value); //manipulação do saldo... logger.log(“Finish crediting:” + value); }

21 Interesses Transversais
Algumas observações... Logging não é relacionada com contas bancárias... Problema: Desenho OO não adequado... Método de crédito não somente manipula saldo: realiza logging. Em sistemas OO reais... Situação comum. Interesses espalhados por diversas classes.

22 Interesses Transversais
Sintomas Código entrelaçado (code tanggling) Um módulo implementa diversos interesses. Código espalhado (code scattered) Um interesse espalhado por diversos módulos.

23 Interesses Transversais
Código Entrelaçado Legenda: Lógica de Negócio Persistência Segurança Logging

24 Interesses Transversais
Código Espalhado Frente de caixa Internet banking Autenticação Caixa Eletrônico Banking phone

25 Interesses Transversais
Problemas Difícil compreensão e evolução do código Código espalhado Menos reuso Problema: Código entrelaçado Menos qualidade Código entrelaçado dificulta revisões de código

26 Introdução à AOP AOP é baseada em... Tecnologia orientada a objetos
Utilizada para representar requisitos de lógica de negócio. Novos conceitos para representar interesses transversais Aspecto: Encapsula um interesse transversal. Ex: Classe de conta bancária Não sabe que existe autenticação ou logging. Autenticação e logging em um Aspecto.

27 Introdução à AOP Realmente precisamos de AOP?
Não é possível resolver usando OOP? Padrões de Projeto Dynamic Proxy (Presente em Java >= 1.3) Outras abordagens (Ainda em pesquisa...) Programação orientada a sujeitos – Subject Oriented Programming Programação Adaptativa – Adaptive Programming

28 Introdução à AOP Padrão Proxy

29 Introdução à AOP Dynamic Proxies
Recurso para modularizar o padrão Proxy Dinamicamente associar o objeto ao seu proxy. Baseado em Reflexão (Reflection) Buschmann, 1996 Problema Reflection em Java compromete a performance... Adequado para modularizar interesses simples...

30 Introdução à AOP Metodologia AOP Similar a OOP Em AOP...
Identificar requisitos (classes) Implementá-las Combiná-las Em AOP... Além de identificar requisitos: identificar Interesses! Implementar Combinar

31 Introdução à AOP

32 Introdução à AOP Metodologia AOP Só uma metodologia não é útil
Java: Implementação de OOP Definição da linguagem e ferramentas Implementação de AOP Precisamos de uma linguagem Sintaxe e semântica definidas Como implementar interesses transversais? Ferramentas Compilador, IDE...

33 Introdução à AOP Características de uma linguagem AOP
Implementação de interesses transversais Recursos para modularização similares a Java, C++... Especificação de regras de combinação (weaving) Regras de combinação Determinam como combinar interesses para formar o sistema Expressas declarativamente (Usando lógica, similar a Prolog) Ex: Logging Logging realizado em pontos especificados por regras de combinação Ex: Autenticação Verificação de permissões e acesso

34 Introdução à AOP AOP Weaver Lógica de negócio Sistema Final
Interesses + Regras de combinação

35 Introdução à AOP Benefícios E isso leva a...
Permite tornar claras responsabilidades de cada módulo. Maior modularização Mais reuso Facilidade de evolução Decisões de desenho podem ser tomadas a posteriori E isso leva a... Redução de tempo de desenvolvimento de um projeto Redução de custos.

36 Introdução à AOP Mitos e realidades sobre AOP
Fluxo de execução difícil de entender Verdade... AOP não resolve novos problemas AOP promove software´s de desenho ruim Falso... AOP substituirá a OOP

37 Introdução à AOP Na aula de hoje vimos...
Que a OOP não resolve todos os problemas Dilema do arquiteto: Muito ou pouco desenho? Conceitos de: Requisitos Interesses transversais Código espalhado Código entrelaçado Características de uma linguagem AOP Próxima aula... Introdução à linguagem AspectJ


Carregar ppt "Desenvolvimento de Sistemas Orientados a Aspectos"

Apresentações semelhantes


Anúncios Google