Desenvolvimento de Software Orientado por Aspectos Autores: 4033 – Daniel Grilo 4223 – Nelson Rodgrigues Autores: 4033 – Daniel Grilo 4223 – Nelson Rodgrigues.

Slides:



Advertisements
Apresentações semelhantes
Análise e Projeto Orientado a Objetos
Advertisements

Como planejar a equipe e criar casos de testes OO
Abordagem Sistêmica da Administração
Evolução dos SGBD’s (2ª Parte).
Rational Unified Process
Aspect Oriented Software Development - AOSD 1 Elaborado por: Bruno Nunes nº 3202 Pedro Casqueiro nº 2163.
Técnicas de Teste de Software
Teste de Software.
Paradigmas de Programação
Engenharia de Software
Faculdade de Ciências Sociais de Aplicadas de Petrolina – FACAPE
Projeto Arquitetural de Software Orientado a Aspectos
Sistemas de Gerenciamento de Conteúdo
Professora: Aline Vasconcelos
Programação Orientada a Aspectos
Processo de Reengenharia Prático Pós- Graduação Pós- Graduação Karolyne Almeida Siqueira Michael Caldas da Silva.
Introdução ao paradigma de programação: Orientado a Objetos
Objetos Distribuídos Padrão CORBA
Tecnologia da Informação Orientação a Aspectos
Complexidade de Algoritmos
PROGRAMAÇÃO ORIENTADA A ASPECTOS EM JAVA Introdução a conceitos teóricos e práticos Adriano G. do Prado José Eduardo M. Lemos José Fernando da S. Cruz.
Como o AspectJ tece o código
TSDD Teste de segurança durante o desenvolvimento.
Princípios e Conceitos de Software(v2)
Engenharia de Software
Tecnologias para Internet
Uma visão geral Grupo: Alexandre Henrique Vieira Soares
Web: criação de páginas
Copyright Marcos L. Chaim 2005 Princípios de Projeto de Software Orientado a Objetos Segundo Semestre 2005 Marcos L. Chaim ACH Turma 02 EACH – USP.
Separation of Concerns (SoC)
Monitores.
Aula prática - análise contextual
Comunicação Inclusiva Acessibilidade e Programação Web
Acadêmicos: Durval Slompo Junior / Verediane R. S. Monteiro
P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes.
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Conceitos.
Desenvolvimento de Sistemas Orientados a Aspectos
Desenvolvimento de Sistemas Orientados a Aspectos
Introdução à Programação para a Web Fernando Martins 9 de Julho de 2008.
Análise e Projeto de Sistemas
Rodrigo Cristiano Silva
Programação I Aula 2 (Métodos)
A autoria - II.
Linguagem de Programação JAVA
OS MODELOS O modo de implementação do trabalho de projecto, como metodologia de aprendizagem tem sido objecto de várias aproximações que se centram em.
Padrões de Projeto e Arquitetura em Camadas
Aspect Oriented Programming (AOP)
Professor: Márcio Amador
02/08/2011 Professor Leomir J. Borba- –
Orientação a Objetos Parte I
Programação Orientada à Objetos
Conceitos Programas Programação Linguagens de Programação SQL.
JSP e Servlets ISEP – LP2 Filipe Costa – /2004.
Arquitetura de Desenvolvimento Web MVC vs. Three Tiers
Planear um Website Principais etapas.
Sistemas de Gerenciamento de Educação a Distância Prof. Silvia Helena Cardoso Prof. Renato M. E. Sabbatini.
+ Java Básico Aula 1 por Flávio Juvenal. + Histórico Green Project (1991) Desenvolver plataforma para eletrodomésticos inteligentes Tentaram usar C++
Padrões de Interação com o Usuário
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE AULA 5
Sistemas de Informação – mais que tecnologia Profa. Reane Franco Goulart.
Testes de SW Aula 24.
Discussing Aspects of AOP Alunos: Ezequiel Jonacir Mazza João Andrei Cetenareski Curso: Mestrado em Informática Aplicada Disciplina: Orientação a Objetos.
Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera.
1 Linguagens de Programação Pedro Lopes 2010/2011.
SISTEMAS DE INFORMAÇÃO
Orientação a Objetos e Java Alexandre Mota  Centro de Informática, UFPE.
PADROES DE PROJETO PROF. OSIEL MARLON. PADRÕES DE PROJETO INTRODUÇÃO Padrões de projeto têm emergido como uma das mais promissoras abordagens para a melhoria.
Análise e Projeto de Sistemas Análise e Projeto de Sistemas Aula 2 Professor: Italo Rodrigues Castro.
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
Transcrição da apresentação:

Desenvolvimento de Software Orientado por Aspectos Autores: 4033 – Daniel Grilo 4223 – Nelson Rodgrigues Autores: 4033 – Daniel Grilo 4223 – Nelson Rodgrigues

Índice O que é o AOSD ? O que é o AOSD ? Porquê usar AOSD ? Porquê usar AOSD ? Exemplos de utilização Exemplos de utilização Um exemplo em concreto Um exemplo em concreto Bibliografia Bibliografia

O que é o AOSD ? A Programação Orientada a Aspectos - Aspect-Oriented Programming ou simplesmente AOP - foi introduzida em 1996 por Gregor Kickzales, quando estava no Xerox Palo Alto Research Center. AOSD é uma nova tecnologia para separação de interesses (SOC) no desenvolvimento do software. Há ainda quem considere que o AOP é um complemento de OOP (Object-Oriented Programming) uma vez que AOP introduz uma maneira mais elegante de abordar certas questões.

O que é o AOSD ? Para entender o espírito da AOP, temos que entender alguns conceitos fundamentais. Responsabilidades (concerns) Responsabilidades (concerns) Sistemas de software consistem num conjunto de "áreas de interesse" ou responsabilidades distintas como, por exemplo, responsabilidades funcionais (lógica de negócio) e não-funcionais (performance, persistência de dados, logging, autenticação de utilizadores, segurança, verificação de erros,etc.). Existem ainda preocupações relacionadas com o processo de desenvolvimento, como clareza de entendimento, facilidade de manutenção, simplicidade de evolução do software, etc. Sistemas de software consistem num conjunto de "áreas de interesse" ou responsabilidades distintas como, por exemplo, responsabilidades funcionais (lógica de negócio) e não-funcionais (performance, persistência de dados, logging, autenticação de utilizadores, segurança, verificação de erros,etc.). Existem ainda preocupações relacionadas com o processo de desenvolvimento, como clareza de entendimento, facilidade de manutenção, simplicidade de evolução do software, etc.

O que é o AOSD ? Separação de responsabilidades (separation of concerns) Separação de responsabilidades (separation of concerns) A melhor maneira de se projectar um sistema é através da separação de responsabilidades distintas de tal modo que podemos alterar cada uma sem que isto afete as demais partes do sistema. A eficiência do desenvolvimento aumenta na medida em que conseguimos separar as diferentes responsabilidades em módulos estanques. 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. Mas algumas responsabilidades não são tão facilmente decompostas em apenas uma dimensão...

O que é o AOSD ? Responsabilidades transversais (crosscutting concerns) Responsabilidades transversais (crosscutting concerns) Em sistemas complexos existem responsabilidades de interesse comum que são utilizadas por vários módulos. As responsabilidades não-funcionais que citamos geralmente têm esta característica, mas também algumas funcionais. Estas responsabilidades são difíceis de isolar porque são necessárias em vários pontos do código. Em OOP, uma classe oferece uma boa maneira de se separar a maioria das responsabilidades funcionais, mas é bastante limitada quando se trata de responsabilidades transversais. Com OOP os crosscutting concerns ficam espalhados por vários módulos em pequenas linhas de código que são repetitivos, resultando em sistemas difíceis de projetar, entender, implementar, manter e evoluir.

O que é o AOSD ? AOP envolve três fases distintas: * Decomposição: os vários aspectos do sistema são identificados e classificados como comuns ou crosscutting. * Decomposição: os vários aspectos do sistema são identificados e classificados como comuns ou crosscutting. * Implementação: os aspectos são implementados separadamente em classes (para os aspectos comuns). * Implementação: os aspectos são implementados separadamente em classes (para os aspectos comuns). * Recomposição: o sistema é recomposto à partir dos aspectos implementados segundo regras de recomposição. Esta fase é chamada de weaving. * Recomposição: o sistema é recomposto à partir dos aspectos implementados segundo regras de recomposição. Esta fase é chamada de weaving.

O que é o AOSD ? Uma implementação básica de AOP consiste em: uma linguagem para programar componentes (ex: Java) uma linguagem para programar componentes (ex: Java) uma linguagem para programar aspectos (ex: AspectJ) uma linguagem para programar aspectos (ex: AspectJ) um weaver para combinar as duas linguagens (ferramenta que também faz parte do AspectJ). um weaver para combinar as duas linguagens (ferramenta que também faz parte do AspectJ). O weaver é uma espécie de montador que tem como entrada um programa de componente e o(s) programa(s) de aspectos e como saída um programa numa linguagem específica (ex: Java).

Porquê usar Aspectos ? Cada vez é mais frequente o uso de aspectos para complementar determinada aplicação cujo código é orientado a objectos. Isto deve-se essencialmente ao facto das aplicações serem cada vez mais complexas e haver cada vez menos tempo para a implementação de código. Uma vez que os aspectos são implementados fora das classes (objectos), não é necessário andar a perder tempo a alterar código em várias partes de uma classe, ou alterar atributos, etc. Por outro lado os aspectos permitem alterar características de uma classe no meio da sua execução. Esta funcionalidade oferece-nos então um leque de soluções para vários problemas que antes não conseguiriamos resolver, ou demorariamos muito mais tempo.

Exemplos de utilização de Aspectos Exemplos de utilização de aspectos: Uma aplicação que gere um banco terá que fazer LOG de determinadas operações (ex: levantamentos, depósitos). Aplicação exemplo: Trabalho de P2 de à 2 anos. Uma aplicação que gere um banco terá que fazer LOG de determinadas operações (ex: levantamentos, depósitos). Aplicação exemplo: Trabalho de P2 de à 2 anos. Uma aplicação que lê um simples ficheiro de texto terá que ter em conta novos excepções na leitura de um ficheiro. Uma aplicação que lê um simples ficheiro de texto terá que ter em conta novos excepções na leitura de um ficheiro. Uma aplicação em que é possível criar regiões e que permite a selecção de várias regiões deve alterar as cores de fundo das mesmas para azul. Aplicação exemplo: Trabalho de P3 do ano passado. Uma aplicação em que é possível criar regiões e que permite a selecção de várias regiões deve alterar as cores de fundo das mesmas para azul. Aplicação exemplo: Trabalho de P3 do ano passado.

Exemplos de utilização de Aspectos Mais exemplos de utilização de aspectos: Uma aplicação de predição de palavras deve guardar estatísticas de quantas vezes as teclas foram pressionadas, percentagem de predições correctas, teclas poupadas,etc. Aplicação exemplo: 3º laboratório de IPC Uma aplicação de predição de palavras deve guardar estatísticas de quantas vezes as teclas foram pressionadas, percentagem de predições correctas, teclas poupadas,etc. Aplicação exemplo: 3º laboratório de IPC Uma página web a partir de determinado momento só pode ser visitada após autentificação correcta, ou o módulo de encriptação da password foi descoberto e é necessário alterá-lo sem alterar o resto da classe. Uma página web a partir de determinado momento só pode ser visitada após autentificação correcta, ou o módulo de encriptação da password foi descoberto e é necessário alterá-lo sem alterar o resto da classe. Entre muitos outros...

Um exemplo concreto Considerando o exemplo de um banco em que se pretende fazer logging de todos os levantamentos public class Logging Levantamento * (..))") public void LOG() { public void LOG() { System.out.println(Levantamento efectuado no valor de + …); System.out.println(Levantamento efectuado no valor de + …); }} Muito mais simples, lógico e funcional que alterar métodos de classes com conteúdos que não lhes dizem respeito.

Bibliografia e/0109e.htm 109e/0109e.htm =aod =aod