Page 1

POA (Orientação a Aspectos)

Leandro Santana, Marcele Souza, Pedro Góes, Alcides Sampaio, Eric Paranaguá. Ciências da Computação – Universidade do Estado da Bahia (UNEB). Salvador – BA – Brasil.


Resumo: Como objetivo principal dessa programação temos a redução da complexidade no desenvolvimento de software e na otimização da sua produtividade. O sistema computacional é heterogêneo, distribuídos em redes, camadas e baseados em interfaces gráficas, favorecendo cada vez mais o aumento da complexidade dos ambientes computacionais... Para "combater" esta característica utilizamos a análise, projeto e programação orientada a objetos. O objetivo da programação orientada a objetos não tem a intenção de substituir a programação estruturada tradicional, podemos considerar que a programação Orientada a objetos (OO) é uma evolução de práticas que são recomendadas na programação estruturada, mas não formalizadas, como o uso de variáveis locais, visibilidade e escopo. O modelo de objetos permite a criação de bibliotecas que tornam efetivos o compartilhamento e a reutilização de código, reduzindo o tempo de desenvolvimento e, principalmente, simplificando o processo de manutenção das aplicações. Introdução A Programação Orientada a Aspectos é uma técnica de programação complementar ao paradigma de Orientação a Objetos (OO), ele visa o tratamento, de maneira independente, de todos os interesses que se revelam espalhados ou entrelaçados por todo o sistema. Seu objetivo é reduzir a complexidade do desenvolvimento de software permitindo a componentização independente da natureza funcional ou não funcional No presente artigo falaremos sobre o histórico, bem como a definição do paradigma, abordando também seus principais fundamentos e aplicabilidades. 1. Histórico A Programação Orientadas a Aspectos - POA, é oriunda da “Programação Adaptativa” PA, que surgiu através do grupo Demeter liderado por Karl Lieberherr na década de 1990. Na PA os programas se decompõem em vários blocos construtores de corte (crosscutting building blocks), separam a representação dos objetos com um bloco e em seguida agregam comportamentos de estrutura e classes como blocos construtores de corte. Os conceitos de POA foram introduzidos em 1997 por Gregor Kiezales e seu grupo (John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Videira Lopes, Jean-Marc Loingtier e John Irwin), a ideia central é permitir que um programa fosse construído delineando cada conceito separadamente. 2. Definição É um paradigma de programação de computadores que permitem aos desenvolvedores de software separar e organizar o código de acordo com a sua importância para aplicação. A palavra aspecto está relacionada com a palavra em inglês aspect e concern. Aspecto (aspect) é usado mais em nível de implementação enquanto Preocupação (concern) é usada mais em nível de análise. A POA busca separar os requisitos funcionais, que descrevem tanto os comportamentos do sistema, como que tem que ser feito e os nãos funcionais, estes se referem aos padrões de qualidade que definem a eficiência do sistema. Dividi os interesses para depois uni-los formando um sistema completo.


Podemos dizer ainda que sua principal função é reduzir a complexidade do desenvolvimento de software permitindo a componentização das diversas preocupações independente da natureza. 3. Fundamentos da POA Os três principais requisitos da POA são: - Uma linguagem para definir a funcionalidade básica, conhecida como linguagem base ou componente; - Uma ou diversas linguagens, para especificar o comportamento dos aspectos; - Um combinador de aspectos, que se encarregará de combinar as linguagens.

ƒ

ƒ ƒ

ƒ

ƒ

3.1 Os elementos básicos que encontramos na POA e presentes no AspectJ são: (O AspectJ é uma das mais consolidadas ferramentas de desenvolvimento de aspectos de propósito geral que encontramos hoje, por isto vamos utilizá-la para demonstrar a Programação Orientada a Aspectos). Aspect - Trata-se de um encapsulamento de métodos que atingem múltiplas classes em módulos reutilizáveis, isto é, um aspect junta os fragmentos de códigos de interesses transversais numa só unidade. Join Points - Locais definidos na codificação de um sistema, onde os aspectos devem executar. Pointcut - Uma construção de uma linguagem orientada a aspectos que seleciona um conjunto de join points baseada em critérios definidos. Conforme veremos abaixo, os join points são especificados no código de um pointcut. Advice - É o código executado antes, depois ou durante um pointcut. Definimos os advices informando quando o código deve ser executado. No caso do advice ser definido como around( ), pode haver tratamento por parte do programador. Se as definições são tipo after( ) ou before( ), os advices são simplesmente executados. Crosscutting Elements - Trechos de código comuns a diversos pontos do sistema.


4. Aplicabilidade da Tecnologia 4.1 Logging Logging consiste em guardar registros das ações executadas por um programa para fins de análise posterior. Em geral não se sabe se o log será necessário, mas ele pode vir a ser importante para encontrar defeitos no sistema. Logging é o exemplo canônico de POA: a forma mais simples de se mostrar as vantagens do paradigma é com um aspecto que intercepta todos os pontos de junção de chamadas de métodos e usa reflexão para mostrar informações sobre os métodos chamados. Assim pode-se demonstrar como aspectos simples podem acrescentar comportamentos em diversos pontos do sistema simultaneamente, sem modificá-los. 4.2 Tracing Tracing é basicamente o mesmo que logging, mas com objetivos diferentes: o resultado é utilizado exclusivamente para depuração de programas. Em geral o resultado é descartado após o uso e as rotinas de tracing nunca fazem parte do produto final que vai para o cliente. 3.3 Profiling Profiling é parecido com o tracing, mas o objetivo é unir informações sobre o tempo de execução dos métodos para fins de otimização do sistema. Tratando-se de aspectos podemse interceptar as chamadas dos métodos que se deseja medir, zerar um contador de tempo antes da sua execução, e imprimir o contador após seu retorno. 4.4 Otimização: pooling e caching O aspecto pode criar o pool, interceptar as chamadas que solicitam os recursos (por exemplo, os pedidos de abertura de conexão) e retornar recursos do pool para quem os solicitou. Outra forma de otimização é o uso de caches. Um cache rápido em memória pode ser utilizado para guardar resultados de operações caras. Esses resultados podem ser usados se a operação tiver de ser repetida pelo sistema. Da mesma forma que com pooling, um aspecto de caching implementa o cache e intercepta todas as operações caras. Se o resultado desejado estiver no cache, ele é retornado imediatamente. Caso contrário, o aspecto executa a operação original e guarda o resultado no cache.


5. Benefícios da programação orientada a aspectos Menos responsabilidades em cada parte - Como interesses entre cortantes são separado sem 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 acoplamento. 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.

6. Tendências Tudo o que foi apresentado aqui não poderia ser resolvido apenas com uso de classes? Sim, poderia. Poderíamos até mesmo implementar tudo em uma solução exclusivamente procedural (raiz), se desejássemos. O ponto aqui é que as ferramentas até então existentes podem ser melhoradas para resolverem de forma mais eficiente determinados problemas. Uma nova filosofia está sendo amadurecidas no campo da análise de sistemas e da programação e, mais cedo ou mais tarde, as linguagens também terão que evoluir para acompanhá-la consistentemente. A linguagem orientada a objetos é um exemplo de revolução e desde já a base para outros métodos revolucionários. 7. Conclusão   A POA é um paradigma novo e por isto tem ainda muito a amadurecer, mas desde já acomoda um ambiente de desenvolvimento capaz de brotar softwares sucintos, de fácil manutenção e com uma separação clara entre as camadas/regras/rotinas de sistema, tornando a aplicação mais segura, com menos probabilidades de falhas, além de melhor a reutilização destas rotinas em outras aplicações sem a obrigação de modificações na fonte.

8. Referências Somerville, Ian. (2005) Software engineering, Editora Pearson Addison Wesley, 6°Edição. Pressman, Roger S. (2005) Engenharia de Software. São Paulo: McGraw-Hill. Monteiro, Elaine da Silva; Filipakis, Cristina D'ornellas. (2004) Um estudo sobremodelagem Orientada a Aspectos baseada em AspectJ e UML. In: IV Jornada de Iniciação Científica do Centro Universitário Luterano de Palmas, Palmas. Anais do IV Jornada de Iniciação Científica do Centro Universitário Luterano de Palmas. p.146-148.


Xavier, Rogério Azambuja; Becker, Alexandre. (2006) Orientação a aspectos: Uma nova metodologia no desenvolvimento de software. CRICT'2006 - Congresso de iniciação Cientifica e Tecnológica realizado na UNIJUI - Ijuí/RS. Resende, Antonio Maria Pereira de; Silva, Claudiney Calixto da. (2005) Programação Orientada a Aspectos em Java. Rio de Janeiro: Brasport. Puga, Sandra; Rissetti, Gersib. (2003) Lógica de Programação e Estrutura de Dados. Cap4. São Paulo: Prentice Hall. Wink, Diogo Vinicius; Junior, Vicente Goetten. (2005) AspectJ: Programação Orientada a Aspectos com Java. SOARES, Sérgio; BORBA, Paulo. AspectJ - Programação Orientada a Aspectos em Java. Disponível em maio de 2007.http://twiki.cin.ufpe.br/twiki/pub/SPG/GenteAreaPublications/SBES04_soares.pdf

Programação Orientada a Aspectos em Java Por Antônio Maria Pereira de Resende, Claudiney Calixto da Silva. Programación Orientada a Aspectos Ing. José Joskowicz PROGRAMACIÓN ORIENTADA A ASPECTOS. Análisis del paradigma Fernando Asteasuain Bernardo Ezequiel Contreras

POA, Programação Orientada a Aspectos  

POA, Programação Orientada a Aspectos

Read more
Read more
Similar to
Popular now
Just for you