POA - AspectJ

Présentation

A quoi ça sert ?

La Programmation Orientée Aspect (POA, Aspect Oriented-Programming soit AOP en anglais), est une nouvelle technologie qui a pour objectif de facilité le découplage entre les différentes fonctionnalités techniques d'une application. Il faut savoir ce que cette technologie peut s'appliquer à n'importe quel langage. La seule contrainte est de disposer d'un outil (tisseur d'aspect) compatible avec le langage utilisé. La programmation orientée aspect peut donc être vu comme une bonne pratique de programmation, un peu comme l'utilisation des designs patterns.

La POA n'a donc pas pour but de venir remplacer une technologie existante mais plutôt comme un ajout. Cet apport devant permettre de résoudre certaines problématiques qui ne disposait pas de solutions jusqu'à lors.
Jusqu'à lors

Pourquoi est-elle nécessaire ?

Actuellement la solution qui apparaît comme la plus efficace pour construire une application de manière à ce qu'elle soit évolutive est de la structuré les éléments de code en objets. Chaque objet va ce voir affecté une responsabilité et interagir avec les autres pour ainsi constituer l'application.
Pour arrivé à ce que l'application soit debbugable, maintenable,... c'est à dire pour résumer lisible, il est nécessaire que chaque objet ce limite à une responsabilité restreinte. Pour ne pas créer une application possédant un objet unique ayant toute les responsabilité, il est utile de s'appuyer sur les designs patterns. Ces références de bonnes pratiques offre des solutions à la plus part des problèmes classiques de découpage des responsabilités.

On voit donc que grâce à la programmation orienté objet et aux designs patterns on peux obtenir une application relativement bien structurée. Néanmoins la structure ne fait pas tout. En effet, se concentrer seulement sur la structure cache une partie du problème : les liens entre les éléments de la structure. La multiplication des liens entre les composants d'une application peux rendre celle-çi illisible. De plus la dispersion des liens dans le code à tendance à rendre le code difficilement maintenable. Un cas classique utilisé pour démontrer l'intérêt de la POA est la fonctionnalité de loggeur. Le loggeur est un élément qui par ça fonction va être pointé par de multiple éléments du programme. En cas de modification du loggeur, c'est une multitude de références qu'il va falloir faire évoluer.

On peut donc constater que la programmation orientée aspect apporte une solution pour le déploiement des fonctionnalités dites transverses. Ces fonctions transverses regroupe les fonctions interagissant avec une partie voir l'ensemble d'un programme (loggeur, identification,...). On peux noter que la POA introduit le terme de fonctionnalité ou fonction. On voit ainsi qu'on s'intéresse à un niveau supérieure à celui de l'objet qui se limiter à une responsabilité.