Buscar

Programação Orientada a Aspectos

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Introdução 
A programação Orientada a Objetos define-se como o paradigma que possibilita uma melhora na abstração de dados nos sistemas, bem como a sua modularização, aspecto cada vez mais desejável nos sistemas atuais.
Para se construir um sistema, visando resolver um problema, uma abordagem comum é dividi-lo em partes menores e tratar cada parte separadamente. Esta técnica chama-se separação de interesses.
Ao projetar um sistema, trabalhamos com diversos interesses (ou concerns). Na programação orientada a objetos o modelo de abstração trabalha com classes como unidades. No projeto procura-se separar cada interesse em uma classe distinta, porém nem sempre isso é possível.
Quando os interesses aparecem misturados numa mesma classe chama-se entrelaçamento, e quando um único interesse aparece espalhado em diversas classes chama-se espalhamento. Para aqueles interesses que não podem ser modularizados em classes dá-se o nome de interesses transversais (cross cutting). 
Melhorar a solução para esse tipo de recurso é a proposta da Programação Orientada a Aspectos (POA), onde o código que implementa os recursos cross cutting são retirados das classes de negócio e inseridos em módulos próprios – os Aspectos. O código das regras de negócio fica mais limpo e alterações no funcionamento dos recursos cross cutting passam a ser centralizadas no Aspecto.
Composição do sistema orientado a aspectos. 
Um sistema que utiliza a programação orientada a aspectos é composto pelos seguintes componentes:
– Linguagem de componentes. a linguagem de componentes deve permitir ao programador escrever programas que implemente mas funcionalidades básicas do sistema , ao mesmo tempo em que não prevê em nada a respeito do que deve ser implementado na linguagem de aspectos.”
– Linguagem de aspectos. A linguagem de aspectos deve suportar a implementação das propriedades desejadas de forma clara e concisa, fornecendo construções necessárias para que o programador crie estruturas que descrevam o comportamento dos aspectos e definam em que situações ele socorrem.
– Combinador de aspectos. A tarefa do combinador de aspectos (aspect weaver) é combinar os programas escritos em linguagem de componentes com os escritos em linguagem de aspectos. Neste artigo será utilizada a linguagem Java como linguagem de componentes e o aspectJ como linguagem de aspectos.
– Programas escritos em linguagem de componentes.
– Um ou mais programas escritos em linguagem de aspectos
 
Os principais conceitos na programação de aspectos são:
·joinpoints - representam eventos de interesse do fluxo de execução. Quando a execução passa por um joinpoint o aspecto pode agir naquele ponto. Exemplo de joinpoints: invocação de métodos, alteração de atributos e exceções.
· pointcuts - usados para representar um conjunto de joinpoints, pois podem acontecer muitas ocorrências de joinpoints de um mesmo tipo. O AspectJ utiliza expressões regulares na definição de pointcuts.
· advices - são os procedimentos realizados quando os pointcuts são ativados. Os advices podem ser executados antes (before), depois (after) ou em substituição ao joinpoint. Advices são a implementação dos interesses transversais.
Podemos trabalhar estes conceitos se pensarmos que aspectos são estruturas semelhantes a classes, advices são semelhantes a métodos, joinpoints seriam atributos e os pointcuts algo como triggers (gatilhos) sobre os joinpoints.
Por que usar o paradigma de orientação a aspectos?
Uma vantagem na utilização da orientação a aspectos está na diminuição do tamanho do código dos componentes (visto que uma parte do código fica na definição dos aspectos), diminuindo sua complexidade.
Por estar centralizado em uma única unidade, alterações são muito mais simples, não é preciso reescrever inúmeras classes. É claro que um código mais conciso facilita sua manutenibilidade e reusabilidade.
Por que esse paradigma é pouco trabalhado?
Apesar de apresentar uma proposta inovadora no desenvolvimento de software pode-se dizer que a Orientação a Aspectos, apesar de sua constante evolução, ainda deixa a desejar em alguns pontos tais como:
· Não há um meio claro para se definir o que deve e o que não deve ser um aspecto em um projeto de software. 
· A falta de metodologias ainda é um fator limitante deste paradigma.
Vantagens da Orientação a Aspectos
 
A Orientação a Aspectos ocasiona novas dificuldades na programação porque é uma nova metodologia e tudo que é novo requer um tempo de aprendizado. Mas a Orientação a Aspectos oferece vantagens que cobrem esse tipo de problema:
· Responsabilidades mais transparentes de cada módulo: cada módulo é responsável apenas pelas tarefas destinadas ao próprio módulo. Os módulos são mais independentes.
· Modularização mais alta: As responsabilidades são mais bem definidas em cada módulo, os módulos tem baixo acoplamento entre si.
· Evolução do sistema mais facilitada: O baixo acoplamento possibilita que alterações no sistema sejam feitas sem alteração do núcleo
· Decisões de design podem ser tomadas com mais atraso: Devido ao baixo acoplamento não é necessário pensar em todos os problemas no início do desenvolvimento do sistema
· Mais reusabilidade do código: Os módulos podem ser mais reaproveitados devido alta coesão e baixo acoplamento
· Sistemas mais fáceis de desenvolver e manter: Os aspectos tornam a integração das partes do sistema um modulo separado, o que traz mais facilidade no desenvolvimento.
· Custos reduzidos de introdução de novas funcionalidades: Novas funcionalidades podem ser introduzidas criando aspectos, não sendo necessário alterar o núcleo para adicionar tais funcionalidades
Bibliografia
http://www.javaframework.org/portal/2010/04/14/o-que-programao-orientada-a-aspectos/
http://www.ic.unicamp.br/~rocha/college/src/aop.pdf
http://www.devmedia.com.br/introducao-a-programacao-orientada-a-aspectos-conceitos/3062
http://www.profissionaisti.com.br/2011/09/o-que-e-programacao-orientada-a-aspectos-poa/
http://inf.unisul.br/~ines/workcomp/cd/pdfs/2337.pdf

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando