Programmation orientée aspect
Par philippe le dimanche 10 janvier 2010, 12:44 - technique - Lien permanent
Le PARC Center de
Xerox à Palo Alto vous connaissez ? Ils ont à leur actif la programmation
orienté objet , le modèle-vue-controleur et plein d'autres bonnes chose que
l'on utilise au jour le jour dans le développement informatique moderne, bref
c'est du lourd. En 1990 ils s'intéressent à un nouveau paradigme qui jette les
fondations de la programmation orienté aspect. Cette idée a fait son chemin
depuis et arrive doucettement en entreprise. Donc je me documente en utilsant
un livre qui est par en 2004 et dont le titre est le même que celui de mon
billet suivi de "pour Java/J2EE".
Résumer ce qu'est la programmation orienté aspect n'est pas aisé de rique
d'être trop réducteur. Ce livre approche le concept tranquillement et va
jusqu'au bout sans ni se répéter ni vous lacher dans des cimes de difficultés.
De plus il est clair que les auteurs maitrise leur sujet. Bref c'est un très
bon bouquin. Mais bon je me dois de résumer, ne serait-ce que pour faire gagner
du temps. Biensûr il suffirait d'aller voir sur wikipedia : , mais je vais tout de même le faire à ma
sauce.
Un des problèmes majeurs de la programmation est de conserver une vue
d'ensemble et de bien séparer différents aspects d'un programme. La partie
"métier" est ce que logiciel fourni de spécifique à l'activité pour laquelle il
a été écrit, par exemple toutes les formules utilisées pour un logiciel de
crédit bancaire font partie du métier. Tout le reste autours est un aspect
technique propre à l'outil informatique : l'interface hommme machine, le
stockage des données, l'audit des actités, etc... La programmatio orienté
aspect se propose de séparer les différents aspects les un des autres et de les
greffer ( on parler de tissage de code ) sur la partie métier. Vu en code java
cela donne du code java qui ne décrit que des objets métier ( Compte bancaire,
Client, Produit financier ... ) et de tisser dessus tout ce qui en fait un
logiciel : la partie IHM, la partie persistance etc... Pour un programmeur
une autre vision existe : pour moi un aspect est la factorisation d'une
fonction qui s'applique à des parties du code que l'on peut décrire de matière
abstraite. Par exemple "Toutes les fonctions doivent être auditées" est
l'application de l'aspect Audit sur toutes les fonctions. Ou bien "Toutes les
fonctions donnant accès à un objet Compte doivent être autorisées uniquement au
banquier" qui est l'aspect autorisation bancaire sur les comptes. ou encore
"Toutes les données doivent ete stoquées à l fois sur le disque local et sur
une application distante" qui est ici l'aspect persistance appliqué aux
données.
Bon tout cela c'est bien beau mais n'est-ce pas que la fumée ? Eh bien non. La programmation oirenté aspect nécessite donc de nouveaux outils pour regéner du code, des pseudo binaires ou des bianires compatibles eux avec l'existant. Il existe plusieusr environnements de développement en orienté aspect que les auteurs du bouquin en question connaissent bien puisqu'il en ont fait un (JAC). D'ailleurs ils ne dénigrent pas les autres (AspectJ, JBoss AOP, AspectWerkz) et leur accordent plus de place même que JAC. Elle apporte très clairement un plus. Un plus au niveau compréhension du code car elle permet de voir plus vite le sens d'une partie de code puisque le code est réduit à un aspect. Un plus au niveau de la fiabilité car il est évident que le tissage automatique n'est pas sensibles aux erreurs de frappe ou aux étourderies Pour ce qui est des performancaes cela dépend mais il est possible de faire en sorte que cela ne dégrade pas les performance du tout (compilation statique). Et un plus au niveau modélisation.
Commentaires
Cette description donne vraiment envie. Je pense acheter le livre. Je passerai pour vous faire un retour.