quarta-feira, 9 de julho de 2008

Programação Orientada a Aspectos

Se ouve falar bastante sobre a Programação Orientada a Aspectos, e os benefícios que ela agrega à Orientação a Objetos.

Na idéia de se tentar entender estes benefícios, precisamos primeiro entender os efeitos colaterais que encontramos na Orientação a Objetos.

  • Espalhamento de funcionalidades, que ocorre tipicamente através da implementação de interesses "transversais", alheios às características dos objetos. Estes interesses transversais costumam estar relacionados com requisitos não funcionais do sistema. Exemplos: Log de auditoria, acesso a banco de dados e validações de segurança.
  • Entrelaçamento de funcionalidades, que se refere à implementação de diferentes responsabilidades em um mesmo trecho de código ou classe.

Estas características acabam comprometendo vários conceitos importantes da Orientação a Objetos, como a Coesão e o baixo acoplamento.

Alternativas para lidar com estes efeitos colaterais:

  • Padrões de Projeto
  • Programação Orientada a Aspectos (POA)

Motivação da POA:

Separação de interesses (Separation of Concerns), segundo sua importância ou responsabilidade no sistema. Assim, o programador pode separar funcionalidades secundárias em módulos distintos do sistema.

Características da POA:

Prós:
Fica por conta da motivação central da POA, a separação de interesses.

Contras:
A grande queixa da POA fica por conta da depuração de código, que é mais complicada. Isto porque em tempo de codificação os códigos estão separados por interesses, mas em tempo de execução estes elementos estão juntos.

Ferramentas de POA para .NET:

Para os interessados, existem diversos frameworks de POA, inclusive open-source, para uso com o .NET Framework. Algumas referências:

0 Comments: