aop

20
Introdução ao desenvolvimento orientado a aspectos

Upload: denis-ferrari

Post on 25-May-2015

770 views

Category:

Technology


3 download

DESCRIPTION

Apresentação que usei na palestra sobre AOP.

TRANSCRIPT

Page 1: AOP

Introdução ao desenvolvimento

orientado a aspectos

Page 2: AOP

Graduando em Sistemas de informação pela FAESA; Arquiteto de software; Palestras; Treinamentos; Consultor de negócios; MCP, MCTS (Web Applications e Distributed

Applications), MCPD (Web Applications); Escreve artigos para os portais Imasters, Linha de

código e os disponibiliza também em seu blog. 9 anos de experiência no mercado de TI capixaba

atuando como Instrutor, Web Master, Desenvolvedor Sênior e Gerente de Projetos;

Denis Ferrari

Page 3: AOP

E-mail/MSN: [email protected] Gtalk: [email protected] Site: www.denisferrari.com Blog: desenvolvimento.denisferrari.com Twitter: @denisferrari

Contato

Page 4: AOP

Preocupações de um sistema de informação;

Requisitos de software; Responsabilidade; Separação de responsabilidades; Responsabilidades transversais; Proposta do AOP;

Introdução a AOP

Page 5: AOP

Preocupações de um sistemas de

infomação

Page 6: AOP

Quais são as preocupações na hora de desenvolver um sistema de informação?

Page 7: AOP

Negócio (Requisitos funcionais); Apresentação; Persistência de dados; …; Segurânça; Auditoria de processos; Verificação de erros; …;

Preocupações de um sistemas de infomação

Page 8: AOP

Separação de responsabilidades

Page 9: AOP

Sistemas de software consistem de um conjunto de "áreas de interesse" ou responsabilidades distintas.

Responsabilidade

Page 10: AOP

A melhor maneira de se projetar um sistema é através da separação de suas responsabilidades distintas de tal modo que podemos alterar/re-projetar cada uma sem que isto afete as demais partes do sistema;

A eficiência do desenvolvimento aumenta na medida em que conseguimos separar as suas diferentes responsabilidades em módulos estanques;

Separação de responsabilidades

Page 11: AOP

Este princípio é razoavelmente antigo, e a OOP nos trouxe uma importante resposta a ele: a classe como uma dimensão para a decomposição de responsabilidades:◦ Um objeto deve fazer apenas uma tarefa e fazê-la

bem;◦ Um objeto não deve se preocupar com o que os

outros objetos fazem;◦ Num sistema macroscópico em que um objeto

coordena objetos menores, ele confia que esses objetos executam bem a sua tarefa e não se preocupa com o como eles a executam;

Separação de responsabilidades

Page 12: AOP

Responsabilidades transversais

Page 13: AOP

Em sistemas complexos, sempre existem responsabilidades de interesse comum que são utilizadas por vários módulos;

Estas responsabilidades são difíceis de isolar porque são necessárias em vários pontos do código;

Com a OOP, os crosscutting concerns ficam espalhados por vários módulos em pequenos trechos de código que são, em geral, repetitivos, resultando em sistemas difíceis de projetar, entender, implementar, manter e evoluir;

Responsabilidades transversais

Page 14: AOP

Proposta do AOP

Page 15: AOP

A programação orientada a aspectos foi criada em Palo Alto, nos laboratórios da Xerox em 1997;

A programação AOP não trabalha isoladamente, ao contrário, é um paradigma que extende outros paradigmas de programação;

AOP

Page 16: AOP

Na concepção de Soares e Borba (2002), “a programação orientada a aspectos propõe não apenas uma decomposição funcional, mas também ortogonal do problema. AOP permite que a implementação de um sistema seja separada em requisitos funcionais e não-funcionais”.

AOP

Page 17: AOP

O paradigma da AOP consiste na separação das responsabilidades transversais de um sistema em aspectos (unidades modulares) e a sua posterior composição junto às classes, formando um sistema único;

Os aspectos podem ser inseridos, alterados ou removidos em tempo de compilação. Por estarem em um único bloco de código, sua manutenção é mais simples, diminuindo a complexidade do sistema e facilitando o seu entendimento;

O código das classes fica livre do código relacionado às responsabilidades transversais, o que facilita sua reutilização em diferentes contextos, combinando diferentes aspectos dependendo das necessidades da aplicação.

AOP

Page 18: AOP

Utilizando a AOP, pode-se criar implementações que são fáceis de desenhar, entender e manter. Deste modo, AOP traz maior produtividade, qualidade e facilidade para a implementação de novas funcionalidades;

A AOP complementa a OOP por introduzir uma nova dimensão para a decomposição das responsabilidades transversais: os aspectos.

AOP

Page 19: AOP

Exemplo Prático com postsharp

Page 20: AOP

E-mail/MSN: [email protected] Gtalk: [email protected] Site: www.denisferrari.com Blog: desenvolvimento.denisferrari.com Twitter: @denisferrari

Contato