SlideShare uma empresa Scribd logo
1 de 20
Introduçãoaodesenvolvimentoorientado a aspectos
GraduandoemSistemas de informaçãopela FAESA; Arquiteto de software; Palestras; Treinamentos; Consultor de negócios; MCP, MCTS (Web Applications e Distributed Applications), MCPD (Web Applications); EscreveartigosparaosportaisImasters, Linha de código e osdisponibilizatambémemseu blog. 9 anos de experiência no mercado de TI capixabaatuandocomoInstrutor, Web Master, DesenvolvedorSênior e Gerente de Projetos; Denis Ferrari
E-mail/MSN: denisferrari@live.com Gtalk: denis.sisinf@gmail.com Site: www.denisferrari.com Blog: desenvolvimento.denisferrari.com Twitter: @denisferrari Contato
Preocupações de um sistema de informação; Requisitos de software; Responsabilidade; Separação de responsabilidades; Responsabilidadestransversais; Proposta do AOP; Introdução a AOP
Preocupações de um sistemas de infomação
Quaissão as preocupaçõesnahora de desenvolver um sistema de informação?
Negócio (Requisitosfuncionais); Apresentação; Persistência de dados; …; Segurânça; Auditoria de processos; Verificação de erros; …; Preocupações de um sistemas de infomação
Separação de responsabilidades
Sistemas de software consistem de um conjunto de "áreas de interesse" ou responsabilidades distintas. Responsabilidade
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
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 sepreocupar 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
Responsabilidadestransversais
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 crosscuttingconcerns 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; Responsabilidadestransversais
Proposta do AOP
A programação orientada a aspectos foi criada em Palo Alto, nos laboratórios da Xerox em 1997; A programação AOP nãotrabalhaisoladamente, aocontrário, é um paradigmaqueextendeoutrosparadigmas de programação; AOP
Na concepção de Soares e Borba (2002), “a programaçãoorientada a aspectospropõenãoapenasumadecomposiçãofuncional, mastambémortogonal do problema. AOP permiteque a implementação de um sistemasejaseparadaemrequisitosfuncionais e não-funcionais”. 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
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
ExemploPrático com postsharp
E-mail/MSN: denisferrari@live.com Gtalk: denis.sisinf@gmail.com Site: www.denisferrari.com Blog: desenvolvimento.denisferrari.com Twitter: @denisferrari Contato

Mais conteúdo relacionado

Mais procurados

Usando MVC para agilizar o desenvolvimento
Usando MVC para agilizar o desenvolvimentoUsando MVC para agilizar o desenvolvimento
Usando MVC para agilizar o desenvolvimentoAlexandre Andrade
 
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para InternetPanorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para InternetElvis Fusco
 
Demoiselle no 16 FISL
Demoiselle no 16 FISLDemoiselle no 16 FISL
Demoiselle no 16 FISLEmerson Saito
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebDaniel Brandão
 
Façade victor e rogério
Façade   victor e rogérioFaçade   victor e rogério
Façade victor e rogérioVictor Hugo
 
Implementando microservices
Implementando microservicesImplementando microservices
Implementando microservicesAgni Campos
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialAlexandre Leão
 
Laboratorio de Mídias- Faça Você Mesmo
Laboratorio de Mídias- Faça Você MesmoLaboratorio de Mídias- Faça Você Mesmo
Laboratorio de Mídias- Faça Você Mesmounifacsead
 
Pós-graduação em Desenvolvimento Web e Aplicativos Móveis
Pós-graduação em Desenvolvimento Web e Aplicativos MóveisPós-graduação em Desenvolvimento Web e Aplicativos Móveis
Pós-graduação em Desenvolvimento Web e Aplicativos MóveisElvis Fusco
 
Oficina Demoiselle2 no Consegi 2011
Oficina Demoiselle2 no Consegi 2011Oficina Demoiselle2 no Consegi 2011
Oficina Demoiselle2 no Consegi 2011Cleverson Sacramento
 
Apresentação Acadêmica e Profissional
Apresentação Acadêmica e ProfissionalApresentação Acadêmica e Profissional
Apresentação Acadêmica e ProfissionalAndré Malicia Marques
 
Aula 6. trabalho da disciplina
Aula 6. trabalho da disciplinaAula 6. trabalho da disciplina
Aula 6. trabalho da disciplinaandreluizlc
 
Apresentação - Ferramenta de Desenvolvimento Genexus e Método XP(Extreme Prog...
Apresentação - Ferramenta de Desenvolvimento Genexus e Método XP(Extreme Prog...Apresentação - Ferramenta de Desenvolvimento Genexus e Método XP(Extreme Prog...
Apresentação - Ferramenta de Desenvolvimento Genexus e Método XP(Extreme Prog...Breno Pessoni
 
3º bate papo com a comunidade
3º bate papo com a comunidade3º bate papo com a comunidade
3º bate papo com a comunidadeFabio Hara
 

Mais procurados (20)

Usando MVC para agilizar o desenvolvimento
Usando MVC para agilizar o desenvolvimentoUsando MVC para agilizar o desenvolvimento
Usando MVC para agilizar o desenvolvimento
 
Aula01 introducao
Aula01 introducaoAula01 introducao
Aula01 introducao
 
Todos por 1
Todos por 1Todos por 1
Todos por 1
 
SOLID
SOLID SOLID
SOLID
 
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para InternetPanorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
 
Demoiselle no 16 FISL
Demoiselle no 16 FISLDemoiselle no 16 FISL
Demoiselle no 16 FISL
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para Web
 
Façade victor e rogério
Façade   victor e rogérioFaçade   victor e rogério
Façade victor e rogério
 
Microserviços
MicroserviçosMicroserviços
Microserviços
 
Implementando microservices
Implementando microservicesImplementando microservices
Implementando microservices
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencial
 
RAD - Métodos ágeis
RAD - Métodos ágeisRAD - Métodos ágeis
RAD - Métodos ágeis
 
Laboratorio de Mídias- Faça Você Mesmo
Laboratorio de Mídias- Faça Você MesmoLaboratorio de Mídias- Faça Você Mesmo
Laboratorio de Mídias- Faça Você Mesmo
 
Arquitetura MVC
Arquitetura MVCArquitetura MVC
Arquitetura MVC
 
Pós-graduação em Desenvolvimento Web e Aplicativos Móveis
Pós-graduação em Desenvolvimento Web e Aplicativos MóveisPós-graduação em Desenvolvimento Web e Aplicativos Móveis
Pós-graduação em Desenvolvimento Web e Aplicativos Móveis
 
Oficina Demoiselle2 no Consegi 2011
Oficina Demoiselle2 no Consegi 2011Oficina Demoiselle2 no Consegi 2011
Oficina Demoiselle2 no Consegi 2011
 
Apresentação Acadêmica e Profissional
Apresentação Acadêmica e ProfissionalApresentação Acadêmica e Profissional
Apresentação Acadêmica e Profissional
 
Aula 6. trabalho da disciplina
Aula 6. trabalho da disciplinaAula 6. trabalho da disciplina
Aula 6. trabalho da disciplina
 
Apresentação - Ferramenta de Desenvolvimento Genexus e Método XP(Extreme Prog...
Apresentação - Ferramenta de Desenvolvimento Genexus e Método XP(Extreme Prog...Apresentação - Ferramenta de Desenvolvimento Genexus e Método XP(Extreme Prog...
Apresentação - Ferramenta de Desenvolvimento Genexus e Método XP(Extreme Prog...
 
3º bate papo com a comunidade
3º bate papo com a comunidade3º bate papo com a comunidade
3º bate papo com a comunidade
 

Destaque

Arquitetura evolutiva - DNAD 2013
Arquitetura evolutiva - DNAD 2013Arquitetura evolutiva - DNAD 2013
Arquitetura evolutiva - DNAD 2013Denis Ferrari
 
Informática Agrícola - Projeto final da disciplina
Informática Agrícola - Projeto final da disciplinaInformática Agrícola - Projeto final da disciplina
Informática Agrícola - Projeto final da disciplinaLeinylson Fontinele
 
Empreendedorismo - Ao vivo e sem retoques
Empreendedorismo - Ao vivo e sem retoquesEmpreendedorismo - Ao vivo e sem retoques
Empreendedorismo - Ao vivo e sem retoquesDenis Ferrari
 
Introdução à Computação Aula 03 - Introdução a Ciência da Computação (A compu...
Introdução à Computação Aula 03 - Introdução a Ciência da Computação (A compu...Introdução à Computação Aula 03 - Introdução a Ciência da Computação (A compu...
Introdução à Computação Aula 03 - Introdução a Ciência da Computação (A compu...Leinylson Fontinele
 
Introdução à Computação Aula 02 - Introdução a Ciência da Computação (Históri...
Introdução à Computação Aula 02 - Introdução a Ciência da Computação (Históri...Introdução à Computação Aula 02 - Introdução a Ciência da Computação (Históri...
Introdução à Computação Aula 02 - Introdução a Ciência da Computação (Históri...Leinylson Fontinele
 
Montagem de computadores aula 1
Montagem de computadores   aula 1Montagem de computadores   aula 1
Montagem de computadores aula 1Michel Chagas
 
Introdução à Computação Aula 07 - Algoritmos (Sistemas de Numeração)
Introdução à Computação Aula 07 - Algoritmos (Sistemas de Numeração)Introdução à Computação Aula 07 - Algoritmos (Sistemas de Numeração)
Introdução à Computação Aula 07 - Algoritmos (Sistemas de Numeração)Leinylson Fontinele
 
Aula 1 Modelagem De Processos
Aula 1   Modelagem De ProcessosAula 1   Modelagem De Processos
Aula 1 Modelagem De ProcessosMarcos Barato
 
Mapeamento e Modelagem de Processos de Negócios com BPM
Mapeamento e Modelagem de Processos de Negócios com BPMMapeamento e Modelagem de Processos de Negócios com BPM
Mapeamento e Modelagem de Processos de Negócios com BPMRogério Araújo
 

Destaque (9)

Arquitetura evolutiva - DNAD 2013
Arquitetura evolutiva - DNAD 2013Arquitetura evolutiva - DNAD 2013
Arquitetura evolutiva - DNAD 2013
 
Informática Agrícola - Projeto final da disciplina
Informática Agrícola - Projeto final da disciplinaInformática Agrícola - Projeto final da disciplina
Informática Agrícola - Projeto final da disciplina
 
Empreendedorismo - Ao vivo e sem retoques
Empreendedorismo - Ao vivo e sem retoquesEmpreendedorismo - Ao vivo e sem retoques
Empreendedorismo - Ao vivo e sem retoques
 
Introdução à Computação Aula 03 - Introdução a Ciência da Computação (A compu...
Introdução à Computação Aula 03 - Introdução a Ciência da Computação (A compu...Introdução à Computação Aula 03 - Introdução a Ciência da Computação (A compu...
Introdução à Computação Aula 03 - Introdução a Ciência da Computação (A compu...
 
Introdução à Computação Aula 02 - Introdução a Ciência da Computação (Históri...
Introdução à Computação Aula 02 - Introdução a Ciência da Computação (Históri...Introdução à Computação Aula 02 - Introdução a Ciência da Computação (Históri...
Introdução à Computação Aula 02 - Introdução a Ciência da Computação (Históri...
 
Montagem de computadores aula 1
Montagem de computadores   aula 1Montagem de computadores   aula 1
Montagem de computadores aula 1
 
Introdução à Computação Aula 07 - Algoritmos (Sistemas de Numeração)
Introdução à Computação Aula 07 - Algoritmos (Sistemas de Numeração)Introdução à Computação Aula 07 - Algoritmos (Sistemas de Numeração)
Introdução à Computação Aula 07 - Algoritmos (Sistemas de Numeração)
 
Aula 1 Modelagem De Processos
Aula 1   Modelagem De ProcessosAula 1   Modelagem De Processos
Aula 1 Modelagem De Processos
 
Mapeamento e Modelagem de Processos de Negócios com BPM
Mapeamento e Modelagem de Processos de Negócios com BPMMapeamento e Modelagem de Processos de Negócios com BPM
Mapeamento e Modelagem de Processos de Negócios com BPM
 

Semelhante a Introdução ao Desenvolvimento Orientado a Aspectos

TDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseTDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseDr. Spock
 
Portifolio de evidencias conceitos de programacao
Portifolio de evidencias  conceitos de programacaoPortifolio de evidencias  conceitos de programacao
Portifolio de evidencias conceitos de programacaoadrianodownload
 
Net uma revisão sobre a programação orientada a objetos
Net   uma revisão sobre a programação orientada a objetosNet   uma revisão sobre a programação orientada a objetos
Net uma revisão sobre a programação orientada a objetosLP Maquinas
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREErnesto Bedrikow
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de SoftwareJairo Junior
 
Tópicos Emergentes - DevOps
Tópicos Emergentes - DevOpsTópicos Emergentes - DevOps
Tópicos Emergentes - DevOpsSaulo Lopes
 
modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3spawally
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de SoftwareNécio de Lima Veras
 
Um desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLIDUm desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLIDHélio Medeiros
 
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...Eder Nogueira
 
Caderno de Orientação a Objetos - Secretaria de Educação
Caderno de Orientação a Objetos - Secretaria de EducaçãoCaderno de Orientação a Objetos - Secretaria de Educação
Caderno de Orientação a Objetos - Secretaria de Educaçãogeysasz
 
Programação orientada à objetos & mvc
Programação orientada à objetos & mvcProgramação orientada à objetos & mvc
Programação orientada à objetos & mvcJhordam Siqueira
 
Palestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorPalestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorDaniel Brandão
 
Agile from University to the Business World, by Ademar Aguiar
Agile from University to the Business World, by Ademar AguiarAgile from University to the Business World, by Ademar Aguiar
Agile from University to the Business World, by Ademar AguiarAgile Connect®
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETMário Meyrelles
 

Semelhante a Introdução ao Desenvolvimento Orientado a Aspectos (20)

TDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseTDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software Enterprise
 
Portifolio de evidencias conceitos de programacao
Portifolio de evidencias  conceitos de programacaoPortifolio de evidencias  conceitos de programacao
Portifolio de evidencias conceitos de programacao
 
Net uma revisão sobre a programação orientada a objetos
Net   uma revisão sobre a programação orientada a objetosNet   uma revisão sobre a programação orientada a objetos
Net uma revisão sobre a programação orientada a objetos
 
Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWARE
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Tópicos Emergentes - DevOps
Tópicos Emergentes - DevOpsTópicos Emergentes - DevOps
Tópicos Emergentes - DevOps
 
modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3modelagem sistema da informação Unid 3
modelagem sistema da informação Unid 3
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
Um desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLIDUm desenvolvedor com princípios SOLID
Um desenvolvedor com princípios SOLID
 
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...
 
Caderno de Orientação a Objetos - Secretaria de Educação
Caderno de Orientação a Objetos - Secretaria de EducaçãoCaderno de Orientação a Objetos - Secretaria de Educação
Caderno de Orientação a Objetos - Secretaria de Educação
 
Programação orientada à objetos & mvc
Programação orientada à objetos & mvcProgramação orientada à objetos & mvc
Programação orientada à objetos & mvc
 
Palestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorPalestra - Profissão: Desenvolvedor
Palestra - Profissão: Desenvolvedor
 
DevOps: Entregando software e serviços rapidamente
DevOps: Entregando software e serviços rapidamenteDevOps: Entregando software e serviços rapidamente
DevOps: Entregando software e serviços rapidamente
 
Agile from University to the Business World, by Ademar Aguiar
Agile from University to the Business World, by Ademar AguiarAgile from University to the Business World, by Ademar Aguiar
Agile from University to the Business World, by Ademar Aguiar
 
Scrum origens
Scrum origensScrum origens
Scrum origens
 
Web camps mef
Web camps   mefWeb camps   mef
Web camps mef
 
Introdução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NETIntrodução a arquitetura de sistemas com .NET
Introdução a arquitetura de sistemas com .NET
 
Desenvolvimento Ágil
Desenvolvimento ÁgilDesenvolvimento Ágil
Desenvolvimento Ágil
 

Mais de Denis Ferrari

DevInCachu 2013: Arquitetura evolutiva
DevInCachu 2013: Arquitetura evolutivaDevInCachu 2013: Arquitetura evolutiva
DevInCachu 2013: Arquitetura evolutivaDenis Ferrari
 
10 coisas que aprendi com o tempo
10 coisas que aprendi com o tempo10 coisas que aprendi com o tempo
10 coisas que aprendi com o tempoDenis Ferrari
 
UCL Innovation Party - Framework .NET
UCL Innovation Party - Framework .NETUCL Innovation Party - Framework .NET
UCL Innovation Party - Framework .NETDenis Ferrari
 
Desenvolvimento de software - Mercado e Carreira
Desenvolvimento de software - Mercado e CarreiraDesenvolvimento de software - Mercado e Carreira
Desenvolvimento de software - Mercado e CarreiraDenis Ferrari
 
Previsibilidade em desenvolvimento de software
Previsibilidade em desenvolvimento de softwarePrevisibilidade em desenvolvimento de software
Previsibilidade em desenvolvimento de softwareDenis Ferrari
 
Desenvolvimento orientado a Testes
Desenvolvimento orientado a TestesDesenvolvimento orientado a Testes
Desenvolvimento orientado a TestesDenis Ferrari
 
Apresentação sobre Coding Dojo
Apresentação sobre Coding DojoApresentação sobre Coding Dojo
Apresentação sobre Coding DojoDenis Ferrari
 

Mais de Denis Ferrari (8)

DevInCachu 2013: Arquitetura evolutiva
DevInCachu 2013: Arquitetura evolutivaDevInCachu 2013: Arquitetura evolutiva
DevInCachu 2013: Arquitetura evolutiva
 
10 coisas que aprendi com o tempo
10 coisas que aprendi com o tempo10 coisas que aprendi com o tempo
10 coisas que aprendi com o tempo
 
UCL Innovation Party - Framework .NET
UCL Innovation Party - Framework .NETUCL Innovation Party - Framework .NET
UCL Innovation Party - Framework .NET
 
Desenvolvimento de software - Mercado e Carreira
Desenvolvimento de software - Mercado e CarreiraDesenvolvimento de software - Mercado e Carreira
Desenvolvimento de software - Mercado e Carreira
 
Previsibilidade em desenvolvimento de software
Previsibilidade em desenvolvimento de softwarePrevisibilidade em desenvolvimento de software
Previsibilidade em desenvolvimento de software
 
Desenvolvimento orientado a Testes
Desenvolvimento orientado a TestesDesenvolvimento orientado a Testes
Desenvolvimento orientado a Testes
 
Apresentação sobre Coding Dojo
Apresentação sobre Coding DojoApresentação sobre Coding Dojo
Apresentação sobre Coding Dojo
 
TDD (Resumo)
TDD (Resumo)TDD (Resumo)
TDD (Resumo)
 

Introdução ao Desenvolvimento Orientado a Aspectos

  • 2. GraduandoemSistemas de informaçãopela FAESA; Arquiteto de software; Palestras; Treinamentos; Consultor de negócios; MCP, MCTS (Web Applications e Distributed Applications), MCPD (Web Applications); EscreveartigosparaosportaisImasters, Linha de código e osdisponibilizatambémemseu blog. 9 anos de experiência no mercado de TI capixabaatuandocomoInstrutor, Web Master, DesenvolvedorSênior e Gerente de Projetos; Denis Ferrari
  • 3. E-mail/MSN: denisferrari@live.com Gtalk: denis.sisinf@gmail.com Site: www.denisferrari.com Blog: desenvolvimento.denisferrari.com Twitter: @denisferrari Contato
  • 4. Preocupações de um sistema de informação; Requisitos de software; Responsabilidade; Separação de responsabilidades; Responsabilidadestransversais; Proposta do AOP; Introdução a AOP
  • 5. Preocupações de um sistemas de infomação
  • 6. Quaissão as preocupaçõesnahora de desenvolver um sistema de informação?
  • 7. Negócio (Requisitosfuncionais); Apresentação; Persistência de dados; …; Segurânça; Auditoria de processos; Verificação de erros; …; Preocupações de um sistemas de infomação
  • 9. Sistemas de software consistem de um conjunto de "áreas de interesse" ou responsabilidades distintas. Responsabilidade
  • 10. 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
  • 11. 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 sepreocupar 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
  • 13. 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 crosscuttingconcerns 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; Responsabilidadestransversais
  • 15. A programação orientada a aspectos foi criada em Palo Alto, nos laboratórios da Xerox em 1997; A programação AOP nãotrabalhaisoladamente, aocontrário, é um paradigmaqueextendeoutrosparadigmas de programação; AOP
  • 16. Na concepção de Soares e Borba (2002), “a programaçãoorientada a aspectospropõenãoapenasumadecomposiçãofuncional, mastambémortogonal do problema. AOP permiteque a implementação de um sistemasejaseparadaemrequisitosfuncionais e não-funcionais”. AOP
  • 17. 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
  • 18. 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
  • 20. E-mail/MSN: denisferrari@live.com Gtalk: denis.sisinf@gmail.com Site: www.denisferrari.com Blog: desenvolvimento.denisferrari.com Twitter: @denisferrari Contato