Projeto De Software Orientado A Aspectos
Palavras-chave: Programação Orientada a Aspectos (POA),
Programação Orientada a Objetos (POO), Desenvolvimento de Sistemas Orientado a
Analise (DSOA), software, Aspecting.
1 - Introdução
O paradigma de programação orientada à aspectos (POA) é uma técnica nova, que surgiu como uma evolução do paradigma orientado à objetos (POO) e da busca constante por melhorias no desenvolvimento de software.
O software é composto pelos seus requisitos funcionais, a parte do sistema que trata das necessidades do cliente, e não funcionais (aspectos), que tratam o comportamento e as restrições do sistema. Esses interesses não funcionais podem ser 1
A programação orientada a objetos mistura os requisitos funcionais e os requisitos não funcionais do sistema, esse entrelaçamento dificulta a reutilização do código. Uma das soluções para minimizar esse problema é a utilização de padrões de projeto, contudo, o uso dessa técnica também deixa o código que o implementa espalhado e entrelaçado com o código funcional do sistema 2.
A programação orientada a aspecto, busca separar os requisitos funcionais e não funcionais, ou seja, dividir os interesses (concernes), para depois uni-los (weaving), formando um sistema completo. A POA da assistência a POO para tratar da decomposição funcional da classe.
O desenvolvimento de software orientado a aspecto (DSOA) propõe softwares ainda mais modulares, consequentemente mais fáceis de alterar e simples de manter. A modularidade promove a reusabilidade, sempre proposta pelas técnicas de engenharia de software.
As vantagens oferecidas pela POA têm levado a reengenharia de muitos sistemas orientados a objetos (OO) para orientados a aspectos (AO). Esse processo de migração é apresentado na seção 3 desse artigo.
2 – Desenvolvimento
de Software Orientado a Aspecto
O Desenvolvimento de Software Orientado a Aspecto (DSOA) é realizado em três fases: a decomposição, a implementação e a recomposição de requisitos 3.
A decomposição consiste na identificação dos requisitos funcionais e não funcionais e sua devida separação. A implementação codifica esses requisitos separadamente. Recomposição é a junção dos códigos dos requisitos funcionais e não funcionais formando o sistema através de weaving.
A modelagem orientada a aspecto pode ser feita com apoio da UML (Linguagem de Modelagem Unificada). A primeira etapa da modelagem se da com o levantamento de requisitos. Com os requisitos levantados, é feita a definição dos casos de uso aspectual. A representação dos aspectos no diagrama de caso de uso se da por losangos e seu relacionamento com os demais casos de uso são identificados pelo estereótipo <<crosscut>>>.
Figura 1: Ilustração o diagrama de caso de uso aspectual para um sistema de Internet Banking.
Fonte: RAMOS, R. , A; PAZIN, A.; PENTEADO, R. A. D. Reengenharia de Sistemas Orientados a Objetos para Sistemas Orientados a Aspectos.
O próximo passo é a elaboração do diagrama de 4. Os aspectos são demonstrados no diagrama de classe com o estereótipo de <<aspect>>. O relacionamento de um aspecto com uma classe também é identificado pelo estereótipo <<crosscut>>.
Figura 2: Ilustração do diagrama de classe de aspecto
Fonte: TIRELO, F., et al. Desenvolvimento de Software Orientado por Aspectos.
A relação temporal entre classes e aspectos pode ser demonstrada ainda pelo diagrama de seqüência da UML.
Figura 3: Ilustração do diagrama de seqüência com aspectos.
Fonte: TIRELO,
F., et al. Desenvolvimento de Software
Orientado por Aspectos.
3 – Migração de
software
O processo de reengenharia de software OO para OA será apresentado aqui com base na abordagem Aspecting. Essa abordagem se divide em três etapas: entender a funcionalidade do sistema, tratar os interesses e comparar os sistemas.
Figura 4: Ilustração
das etapas da abordagem Aspecting.
Fonte: RAMOS, R.,
A; PAZIN, A.; PENTEADO, R. A. D. Reengenharia
de Sistemas Orientados a Objetos para Sistemas Orientados a Aspectos.
As etapas da abordagem Aspecting fornecem suporte ao engenheiro de software para a migração 5. A tabela 1 apresenta as etapas e os passos dessa abordagem.
Tabela 1: Etapas e
passos da abordagem Aspecting.
Fonte: RAMOS, R.,
A; PAZIN, A.; PENTEADO, R. A. D. Reengenharia
de Sistemas Orientados a Objetos para Sistemas Orientados a Aspectos.
Os requisitos não funcionais do sistema encontram-se espalhado pelo código fonte das 6.
O resultado esperado pelo processo Aspecting é a “limpeza” do código original OO. A separação dos interesses modulariza ainda mais o sistema OO. Essa modularização facilita o trabalho do desenvolvedor, que passa a ter um sistema mais legível.
Figura 5: Ilustração
do processo realizado pela abordagem Aspecting.
Fonte: RAMOS, R., A; PENTEADO, R; MASIERO, P. C. Um Processo de Reestruturação de Código Baseado em Aspectos.
Um dos problemas encontrados pelo processo Aspecting é que nem para todos os aspectos existem indícios 7. Com isso os requisitos não funcionais ainda podem aparecer entrelaçados e espalhados no sistema OA.
Figura 6: Ilustração
do conjunto de aspectos tratados pelo processo Aspecting.
Fonte: HUGO, G., GROTT, C. M. Estudo de Caso Aplicado a Programação Orientada a Aspecto.
4 - Conclusão
A POA é uma proposta relativamente nova, mas que tem se mostrado promissora na área de engenharia de software. A sua intenção não é substituir nenhum dos paradigmas existentes, mas oferecer suporte a para uma melhor modularização 8.
O apoio da UML facilita muito o processo de DSOA. A modelagem de aspectos é bastante parecida com a modelagem OO, apenas foi adaptado alguns conceitos a linguagem UML. A modelagem proporciona uma visualização do sistema, o que simplifica o seu entendimento, melhorando as chances do sistema ser desenvolvido com sucesso.
A abordagem aspecting trata de forma segura o processo de migração de sistemas OO para sistemas OA. Os benefícios da migração são evidentes e com o tempo deve se tornar mais difundido.
Referências:
DA SILVA, L. F.; LEITE, J.C. Uma Linguagem de Modelagem de Requisitos Orientada a Aspectos. Disponível em: http://gnomo.fe.up.pt/~wer2005/docs/papers/LyreneFernandes.pdf. Ultimo acesso: 07 de maio de 2006.
HUGO, G., GROTT, C. M. Estudo de Caso Aplicado a Programação Orientada a Aspecto. Disponível em: http://www.inf.furb.br/seminco/2005/artigos/108-vf.pdf. Ultimo acesso: 04 de maio de 2006
RAMOS, R., A; PAZIN, A.; PENTEADO, R. A. D. Reengenharia de Sistemas Orientados a Objetos para Sistemas Orientados a Aspectos. Disponível em: http://www.dc.ufscar.br/~rar/Ramos_Pazin_Clei2004.pdf. Ultimo acesso: 04 de maio de 2006.
RAMOS, R. , A; CASTRO, J. F.B Avaliação de uma Metodologia de Medição da Qualidade
RAMOS, R., A; PENTEADO, R; MASIERO, P. C. Um Processo de Reestruturação de Código
Baseado
TIRELO, F., et al. Desenvolvimento de Software Orientado por Aspectos. Disponível em: http://www.inf.pucminas.br/prof/mtov/pub/jai2004.pdf. Ultimo acesso: 04 de maio de 2006.
Autor: Leandro Crysostomo
Artigos Relacionados
Sorrir é Ser Feliz
About Me
Bonita MoÇa Triste, Sorria!
Poluição Ambiental
Mais Uma Canção
Sem Perdão
Mãos