paradigme

A la découverte des concepts de base de la programmation orientée aspect (POA)

J'ai aujourd'hui mis en ligne un article qui traite des principes de base de la POA, en anglais AOP. Ca faisait un petit bout de temps déjà que je voulais vous le mettre à disposition, mais la distraction, la flemme, le boulot et WoW m'ont souvent détourné de cet objectif :p Enfin bon, toujours est-il qu'aujourd'hui j'ai enfin réussi à trouver la motivation !

Juste pour info, cet article est une partie de mon mémoire de fin d'études, et m'a rapporté la note de 20/20 !!! :D

Pour y accéder, ça se passe ici, bonne lecture !

Annexe 2 : l'AOP Alliance

Annexe 2 : l'AOP Alliance

La POA est de plus en plus répandue. Ce succès fait que de nombreux outils (gratuits ou commerciaux, libres ou propriétaires) de POA sont mis à la disposition de la communauté des développeurs. Or, ces outils ne sont pas tous basé sur les mêmes spécifications. Pour cela, a été fondée l'AOP Alliance dont le but est la création d'une API commune pour tous les projets utilisant la POA, cela pour:

  • éviter de refaire les composants de POA existants dans de nouveaux outils

  • simplifier l'adaptation des composants existants de POA pour un environnement cible donné de cible

  • simplifier la réutilisation des aspects en disposant d'une API commune

  • simplifier l'implémentation d'outils de développement qui souhaitent intégrer des mécanismes de POA

L'AOP Alliance fourni quelques implémentations de référence mais les fournisseurs d'outils de POA ont le choix de fournir leur propre implémentation.

L'AOP Alliance ne concerne par contre pas tout ce qui touche au tissage et aux tisseurs d'aspects et ses travaux sont exclusivement concentrés sur les technologies Java / J2EE.



Vous pouvez vous rendre sur ce site pour en apprendre plus sur l'AOP Alliance: http://aopalliance.sourceforge.net/

Les réalisations de l'AOP Alliance sont disponibles ici: http://sourceforge.net/project/showfiles.php?group_id=75329

Annexe 1: différents outils de POA

Annexe 1: différents outils de POA

Vous trouverez ci-dessous une liste des outils de POA les plus connus, classés par langage de programmation:

Langage
Outil
Type
Java AspectJ: Extension du langage Java. Tisseur d'aspect au niveau du code source ou du bytecode. C'est un des pionniers parmis les outils de POA statique
JbossAOP: Extension du langage Java. Existe en version standalone ou en web application JBoss statique / dynamique
JAC (Java Aspect Components): Framework 100% Java. Le tisseur d'aspect intervient niveau bytecode dynamique
AspectWerkz: Framework 100% Java. Le tisseur d'aspect intervient niveau bytecode statique / dynamique
Spring AOP: Framework 100% Java. Le tisseur d'aspect intervient niveau bytecode dynamique
.Net (C#, VB.Net, ...) AspectDNG statique
C Aspect-C
C++ AspectC++
PHP phpAspect statique
Caml Aspectual Caml

Bibliographie

Bibliographie

Pour réaliser cet article, je me suis servi des ouvrages suivants:

  1. Spring par la pratique, par Julien DUBOIS, Jean-Philippe RETAILLÉ et Thierry TEMPLIER, aux éditions Eyrolles

  2. Programmation orientée aspect pour Java / J2EE, par Renaud PAWLAK, Jean-Philippe RETAILLÉ, Lionel SEINTURIER, aux éditions Eyrolles

  3. White Paper Draft - The AOP Alliance: Why Did We Get In?, présention HTML de l'AOP Alliance

  4. Programmation orientée aspect, article sur Wikipedia

  5. La programmation par aspect (AOP) avec .NET et J2EE, article sur DotNetGuru par Thomas GIL

Conclusion

Conclusion

Comme nous l'avons vu, les paradigmes de programmation "classiques" (programmation procédurale, POO) atteignent leurs limites quand il s'agit d'intégrer des fonctionnalités transverses dans une application. Ils proposent des mécanismes permettant d'isoler ces problématiques mais aucun ne permet de réunir tous les appels à ces fonctionnalités. Le code est ainsi dispersé dans toute l'application. Les notions d'aspect, de point de jonction, de coupe et de greffon issues de la POA permettent d'adresser ces problématiques et ainsi réduire encore plus le couplage.

Cependant, la POA est un concept relativement récent, ne disposant pas de réels retours d'expérience de la part des développeurs et n'est par conséquent que peu employée dans les gros projets logiciels. Mais son utilisation tend à se généraliser peu à peu.