Aspect-Oriented Programming AOP. Comentários Sérgio Crespo



Documentos relacionados
2 Desenvolvimento de Software Orientado a Aspectos

Programação Orientada a Aspectos Aplicada. Charles Wellington de Oliveira Fortes chalkmaster@gmail.com

Programação Orientada a Aspectos

Implementando uma Classe e Criando Objetos a partir dela

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Paradigmas de Linguagens de Programação

Identificação de Interesses Transversais: Uma Visão Geral

Engenharia de Software III

UFG - Instituto de Informática

ENGENHARIA DE SOFTWARE I

AspectJ em 20 minutos

Orientação a Objetos

Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma:

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Separação de Interesses Programação Estruturada e Programação Orientada a Objetos Entrelaçamento de Código Espalhamento de Código

OUTROS PARADIGMAS: PROGRAMAÇÃO

Tecnologias Web. Padrões de Projeto - Camada de Apresentação

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Processos Técnicos - Aulas 4 e 5

Softwares Aplicativos Banco de Dados

Wilson Moraes Góes. Novatec

LINGUAGEM DE BANCO DE DADOS

Laboratório de Redes. Professora Marcela Santos

3 SCS: Sistema de Componentes de Software

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Orientação à Objetos. Aécio Costa

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

IBM Software Demos The Front-End to SOA

BARRAMENTO DO SISTEMA

Sistemas Distribuídos

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Análise e Projeto Orientados por Objetos

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

Modelos de Qualidade de Produto de Software

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Engenharia de Requisitos Estudo de Caso

Disciplina de Banco de Dados Introdução

1.6. Tratamento de Exceções

Modelagemde Software Orientadaa Objetos com UML

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Orientação a Objetos com Java

Orientação a Objetos

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Projeto de Sistemas I

Documento de Análise e Projeto VideoSystem

Planejando o aplicativo

Aspectos técnicos do desenvolvimento baseado em componentes

Arquitetura de Rede de Computadores

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Aprenda as melhores práticas para construir um completo sistema de teste automatizado

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Sistemas Distribuídos

PROGRAMANDO EM C# ORIENTADO A OBJETOS

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

Feature-Driven Development

5 Mecanismo de seleção de componentes

CSAU Guia: Manual do CSAU 10.0 como implementar e utilizar.

UFG - Instituto de Informática

Resolução da lista de exercícios de casos de uso

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Extensão da UML para Modelagem Orientada a Aspectos Baseada em AspectJ

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Unidade 2.1 Modelos de Referência

UML - Unified Modeling Language

ELAINE DA SILVA MONTEIRO. Implementação de um Aplicativo Utilizando AODM, Java e AspectJ

ISO/IEC 12207: Gerência de Configuração

FBV - Linguagem de Programação II. Um pouco sobre Java

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Módulo 4: Gerenciamento de Dados

Tópicos de Ambiente Web. Modulo 2 Processo de desenvolvimento de um site Professora: Sheila Cáceres

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.

Modelagem de Processos. Prof.: Fernando Ascani

Introdução a Java. Hélder Nunes

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

UML Aspectos de projetos em Diagramas de classes

Classe A: Apenas o primeiro octeto identifica a rede e os três últimos identificam os Hosts.

Universidade Paulista

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

Computação II Orientação a Objetos

UML Aula III Diagramas de Estado, Atividades, Componentes e Instalação

Tópicos em Engenharia de Computação

ARQUITETURA DE SOFTWARE

agility made possible

Banco de Dados. Introdução. João Eduardo Ferreira Osvaldo Kotaro Takai. DCC-IME-USP

Programação de Computadores - I. Profª Beatriz Profº Israel

SISTEMA GERENCIADOR DE BANCO DE DADOS

Introdução ao GED Simone de Abreu

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Arquitetura de Banco de Dados

Transcrição:

Aspect-Oriented Programming AOP Comentários Sérgio Crespo

Separation of Concerns O princípio de Separation of Concerns já é utilizado por engenheiros de software para o gerenciar a complexidade de sistemas de software. Concern o que é? Segundo o Webster(dicionário): s. negócio, assunto, interesse, incumbência, solicitude, cuidado, inquietação, preocupação. Vt. Pertencer, dizer respeito a, preocupar, afligir, interessar, relacionar-se.

Separation of Concerns Separation of Concerns??? É um conceito central em engenharia de software. Ele trata da habilidade de identificar, encapsular e manipular assuntos relavantes de um software para um objetivo particular. Este conceito permite que softwares possam ser organizados e decompostos em assuntos gerenciáveis e de fácil manipulação.

OOP - revisão UFBA Departameto de Ciência da Computação junho 2003

OOP - Limitações

OOP - Limitações UFBA Departameto de Ciência da Computação junho 2003

OOP - Limitações UFBA Departameto de Ciência da Computação junho 2003

OOP - Limitações UFBA Departameto de Ciência da Computação junho 2003

OOP - Limitações UFBA Departameto de Ciência da Computação junho 2003

OOP - Limitações UFBA Departameto de Ciência da Computação junho 2003

OOP - Limitações Solução usando Padrões! UFBA Departameto de Ciência da Computação junho 2003

AOP: Definição Aspect Oriented Programming é uma nova técnica de programação que oferece uma linguagem explicita para suporte a modularização de decisões de design que atalha (cross-cut) as funcionalidades de um programa.

Programming Aspect Oriented Programming é uma nova técnica de programação que oferece uma linguagem explicita para suporte a modularização de decisões de design que atalha (cross-cut) as funcionalidades de um programa. Como isso se reflete em PROGRAMAS???

Programming Representação no mundo binário Objetos São uma boa alternativa para facilitar separation of concerns. Eles nos permitem utilizar o conceito de encapsulamento de unidades de funcionalidades em várias níveis, de simples estruturas de dados a GUI até servidores de rede, dentro de classes bem definidas! MAS objetos são limitados em suas habilidades para modularizar concerns que não estejam localizados dentro de classes!

AOP - Motivação

AOP - Motivação

AOP Motivação Por exemplo, considere uma aplicação bancária escrita em Java que possui um método que simplesmente transfere um valor de uma conta para outra:

AOP Motivação Porém, numa aplicação bancária construída para o mundo real, este método de transferência está longe do adequado. É necessário incluir verificações de segurança, que determinam se o usuário possui autorização para realizar a operação. É preciso também "envolver" a operação em uma transação para prevenir perda de dados. Finalmente, é preciso fazer o log dos dados da aplicação. Uma versão simplificada que contém estes novos objetivos (concerns) é mostrada a seguir:

AOP Motivação

AOP Motivação

Programming O que é um Aspect? É uma nova unidade de software, que aparece para oferecer melhor manipulação e atalhos de concerns. Assim como objetos, Aspects podem tanto ser utilizados nas etapas de design bem como de implementação. Design: permite se pensar mais facilmente em definir composição e ou atalhos sobre concerns. Implementação: AOP Languages permite implementar mais facilmente os atalhos definidos no design.

Programming Um Aspect NÃO está presente dentro de uma classe! Logo um Aspect oferece mais semântica a uma classe presente em um design. Um Aspect modulariza o código para um determinado concern e descreve como o código do concern deve ser integrado ou entrelaçado no código do sistema de software.

Programming O que AOP pode realizar? Capturar o histórico, depurar e oferecer instrumentos de suporte para sistemas complexos por meio de pequenos ou poucos Aspects, em vez de multiplos fragmentos de códigos macarronicos dentro de classes. Capturar recursos que podem ser compartilhados em algoritmos envolvendo várias classes por meio de um simples Aspect. Capturar erros de manipulação de protocolos etc..

Programming Sistema de software Design Aspects Aspects Aspects

Crosscutting A AOP permite ao programador separar os interesses comuns do sistema (que fogem a típica divisão de classes). Esses comportamentos não se encaixam naturalmente dentro de um modulo de um programa. Esse tipo de comportamento é conhecido como um comportamento que crosscutting (atravessa) o sistema Na OOP a unidade natural de modularização é a classe, e um comportamento do tipo crosscutting está espalhado em varias classes

Crosscutting UFBA Departameto de Ciência da Computação junho 2003

Aplicações da AOP Logging, tracing e profiling Garantir o cumprimento de regras arquiteturais Otimização: pooling e caching Acesso a recursos compartilhados em sistemas concorrentes Autenticação e autorização Acesso transacional

Benefícios da programação orientada a aspectos Menos responsabilidades em cada parte - Como interesses entrecortantes são separados em seus próprios módulos, as partes do programa que lidam com a lógica de negócios não ficam poluídas com código que lida com interesses periféricos. Melhor modularização - Como os módulos em AOP não se chamam diretamente, há uma redução no nível de acomplamento. Evolução facilitada - Novos aspectos podem ser acrescentados facilmente sem necessidade de alterar o código existente Mais possibilidades de reutilização - Como o código não mistura interesses, aumentam-se as possibilidades de se reutilizar módulos em sistemas diferentes. http://www.aspectos.org/courses/aulasaop/curso_poa.html#aula11

AOP Elementos Básicos Um ponto de junção é qualquer ponto identificável durante a execução de um programa. Aspectos podem ser associados a pontos de junção e executados antes, depois, ou ao invés deles. Existem diversos pontos de junção reconhecidos pelo AspectJ: Chamada de métodos Execução de métodos Construtores Acesso aos campos Tratamento de exceções Inicialização de classes http://www.aspectos.org/courses/aulasaop/curso_poa.html#aula11

AOP Elementos Básicos Pontos de corte (pointcuts) Um ponto de corte (pointcut) é uma construção sintática para se agrupar um conjunto de pontos de junção. Sua sintaxe básica é a seguinte (ilustrada com um exemplo): public pointcut nome() : call (void Receita.print()) A primeira parte é a declaração de restrição de acesso nesse caso, public, mas pointcuts podem ser private ou protected. A palavra chave pointcut denota que estamos declarando um ponto de corte. Todo pointcut tem um nome qualquer, e pode receber parâmetros nesse caso, o pointcut não recebe parâmetros. Depois dos dois pontos (:) obrigatórios vem o tipo dos pontos de junção agrupados pelo pointcut nesse caso temos um pointcut do tipo call, que indica uma chamada de método. Finalmente vem a assinatura do pointcut, uma especificação dos pontos de junção aos quais o pointcut se refere. http://www.aspectos.org/courses/aulasaop/curso_poa.html#aula11

AOP Elementos Básicos Pontos de corte (pointcuts) http://www.aspectos.org/courses/aulasaop/curso_poa.html#aula11

AOP Elementos Básicos Advice Advice é uma estrutura que denota o que um aspecto deve fazer, ou seja, qual o comportamento do aspecto. Em termos mais formais, o advice designa a semântica comportamental do aspecto. Todo advice está associado a um pointcut, que define pontos de junção. Há três tipos de advice: before: executa antes do ponto de junção after: executa depois do ponto de junção around: executa "em volta" do ponto de junção; esse tipo de advice serve para substituir a execução do ponto de junção pela execução do advice, ou executar parte do advice antes do ponto de junção e outra parte depois. UFBA Departameto de Ciência da Computação junho 2003

Relembrando Ponto de junção: um ponto de junção (join point) é qualquer ponto identificável durante a execução de um programa (Chamada de métodos, Execução de métodos, Construtores, Acesso aos campos,tratamento de exceções, Inicialização de classes) Pontos de corte: Um ponto de corte (pointcut) é uma construção sintática para se agrupar um conjunto de pontos de junção. Advice: é uma estrutura que denota o que um aspecto deve fazer, ou seja, qual o comportamento do aspecto. Em termos mais formais, o advice designa a semântica comportamental do aspecto. Todo advice está associado a um pointcut, que define pontos de junção. advice é definido de maneira similar ao método. Porém, o advice nunca é invocado explicitamente. Ele é invocado somente quando um pointcut ligado a ele tem resultado igual a true (verdadeiro)

Exemplo UFBA Departameto de Ciência da Computação junho 2003

Exemplo UFBA Departameto de Ciência da Computação junho 2003

Arquiteturas Orientadas a AOP

Arquiteturas Orientadas a AOP Uma Arquitetura de Software é composta por um conjunto de aspectos Neste caso,um aspecto é um componente composto e o join point é um conector! Ponto de junção: um ponto de junção (join point) é qualquer ponto identificável durante a execução de um programa (Chamada de métodos, Execução de métodos, Construtores, Acesso aos campos,tratamento de exceções, Inicialização de classes)

Arquiteturas Orientadas a AOP

Ferramentas - Ambientes

AspectJ AspectJ é uma linguagem de aspecto, ela é uma extensão da linguagem Java. Conta com um montador (Weaver) para unir o programa de componente com o programa de aspecto.

AspectJ

AspectJ - Site

AOSD - Site

AOP: temas correlatos Subject Oriented Programming Meta-Programação Programação Adaptativa http://www.research.ibm.com/sop http://www.ccs.neu.edu/research/demeter Filter Composition http://wwwtrese.cs.utwente.nl

AOP: Referências http://www.parc.xerox.com/csl/projects/aop http://aspectj.org/servlets/ajsite http://www.ccs.neu.edu/home/lieber/connection-to-aop.html Site do software AspectJ que extende Java para suportar o conceito de Aspects. Connections between Demeter/Adaptive Programming and Aspect-Oriented Programming (AOP) http://www.cs.ubc.ca/labs/se/papers/1999/tse-eval.html Evaluating Emerging Software Development Technologies Lessons Learned from Assessing Aspect-oriented Programming

AOP: Artigos interessantes Atlas: A Case Study in Building a Web-Based Learning Environment using Aspect-oriented Programmaning Mik Kerrsten and Gail C. Murphy Aspect-Oriented Programming Gregor Kiczales, john Lamping, Anurag Mendhekar, Chris Maeda, Cristina Videira Lopes, Jean-Marc Loingtier, John Irwin An Initial Assessment of Aspect-oriented Programming Robert J. Walker, Elisa L.A. baniassad and Gail Murphy FAQ e Overview do site da xerox http://www.parc.xerox.com/csl/projects/aop