IMPLANTER UN SYSTÈME INTÉGRÉ DE MANAGEMENT DE LA QUALITÉ ...
Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*!...
Transcript of Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*!...
![Page 1: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/1.jpg)
Implanter l'AOP... Comment par2r du bon pied?
Confoo 2012
Montréal, Québec, Canada
29 février 2012
![Page 2: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/2.jpg)
Félix-‐Antoine Bourbonnais Ing. jr, PSM-‐I
! Formateur et Coach Agile
! Enseignement et forma2ons o TDD, Réusinage, OO avancé, AOP, tests, Scrum
! Recherches o AOP, agilité, tests et mocks
! Développeur o Java et Python (principalement)
2
@fbourbonnais
![Page 3: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/3.jpg)
Objec2f de la présenta2on
3 Image: jscreationzs / FreeDigitalPhotos.net
![Page 4: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/4.jpg)
Réchauffement…
Quelles sont vos aWentes?
Qui fait ou a fait de l’AOP dans un projet?
En un mot: AOP?
Qui a eu une mauvaise expérience avec l’AOP?
4 Image: Nutdanai Apikhomboonwaroot / FreeDigitalPhotos.net
![Page 5: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/5.jpg)
PRÉOCCUPATIONS TRANSVERSES Les
5
![Page 6: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/6.jpg)
Préoccupa2ons transverses
6
Certaines préoccupa2ons secondaires sont impossibles à regrouper et contaminent
plusieurs classes.
Angl.: Crosscutting concerns.
![Page 7: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/7.jpg)
Préoccupa2ons transverses
Éparpillement
Enchevêtrement
7
![Page 8: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/8.jpg)
Préoccupa2ons transverses
8
Enchevêtrement (cohésion)
Persistance
Fonc2onnalité principale
Sécurité
Observa2on
![Page 9: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/9.jpg)
Enchevêtrement (1)
9
![Page 10: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/10.jpg)
Enchevêtrement (2)
10
![Page 11: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/11.jpg)
Enchevêtrement (3)
11
![Page 12: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/12.jpg)
Enchevêtrement (4)
12
![Page 13: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/13.jpg)
Enchevêtrement
(principale)
13
![Page 14: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/14.jpg)
Enchevêtrement
(récapitula2f)
14
![Page 15: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/15.jpg)
Préoccupa2ons transverses
15
Éparpillement (dispersion)
Persistance
![Page 16: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/16.jpg)
L’AOP Introduc2on à
16
![Page 17: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/17.jpg)
Orienta2on objet et préoccupa2ons
Encapsula2on
Modularité
Couplage SRP
Cohésion
17
![Page 18: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/18.jpg)
Orienta2on objet et préoccupa2ons
18
Théoriquement, chaque classe devrait représenter une seule préoccupa2on.
![Page 19: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/19.jpg)
Orienta2on aspect
19
Aspect 1 Classe 1
Aspect 2
Aspect 3
Classe 2
C
C
A
A
A
![Page 20: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/20.jpg)
LA TERMINOLOGIE ET DU FONCTIONNEMENT
Rappel rapide de
20
![Page 21: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/21.jpg)
Un aspect
! Un module encapsulant une préoccupa2on
! Peu gérer les préoccupa2ons transverses ! Généralement une classe « évoluée »
o Capacités supplémentaires afin de permeWre l’encapsula2on de préoccupa2ons transverses
21
![Page 22: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/22.jpg)
Contenu typique d’un aspect
Code à exécuter
Indica2on des cibles Aspect
22
![Page 23: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/23.jpg)
Aspect en AspectJ
23
public aspect VisitorAspect { !
!
/∗ −−−−−−−− Pointcuts −−−−−−−− ∗/ !
protected pointcut startMethod() : !
execution( ∗ start∗(..) ); !
!
/∗ −−−−−−−− Advices −−−−−−−− ∗/ !
after() : startMethod() { !
printHello(); !
}!
!
} !
!
![Page 24: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/24.jpg)
L’AOP N’A PAS AUTANT RAYONNÉ QUE PRÉVU?
Pourquoi est-‐ce que
24
![Page 25: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/25.jpg)
Pourquoi est-‐ce que plusieurs entreprises délaissent l’AOP?
Mauvaises raisons et u2lisa2ons
Complexité ajoutée
Manque de support et d’intégra2on
Manque de connaissances et de compétences
Trop de promesses
25
![Page 26: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/26.jpg)
Aspect != AOP
26 Image: Danilo Rizzuti / FreeDigitalPhotos.net
![Page 27: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/27.jpg)
Enquête auprès de débutants (2009)
! Pas plus difficile à apprendre que l’OO (74%)
! Il est difficile de tester un aspect (100%) o N’avaient pas une grande expérience avec les tests.
! Les tests sont simplifiés grâce à l’AOP (67%)
! Plusieurs autres difficultés sont causées par un manque d’expérience
! 100% réu2liseraient l’AOP mais 62% avec prudence
27
[1] Félix-Antoine Bourbonnais and Luc Lamontagne, Using AOP for an Academic Agile Project: A Pilot Study, 1st International Workshop on Empirical Evaluation of Software Composition Techniques (ESCOT 2010), Rennes, France, 2010.
![Page 28: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/28.jpg)
Enquête auprès de débutants (2009)
! Le contexte o Étudiants de bacc. (3e/4e année) o Projet de session (3 mois) o Portail financier web avec GWT ou Spring
! Pour les autres données et le contexte détaillé: o Félix-‐Antoine Bourbonnais and Luc Lamontagne,
Using AOP for an Academic Agile Project: A Pilot Study ESCOT 2012, Renne, France, 20120.
o hWp://www.comp.lancs.ac.uk/~greenwop/escot10/escot10_submission_2.pdf
28
Cri2que de la validité
![Page 29: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/29.jpg)
INTRODUIRE DE L’AOP DANS VOTRE PROJET
Comment
29
![Page 30: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/30.jpg)
1. Avoir un but…
30 Image: renjith krishnan / FreeDigitalPhotos.net
![Page 31: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/31.jpg)
2. Choisir sa technologie
31 Image: Sura Nualpradid / FreeDigitalPhotos.net
![Page 32: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/32.jpg)
Choix technologiques
! Tisseur / cadre applica2f (framework) o Compilateur spécial o Pur java
! Mode de 2ssage o LTW (au chargement des classes) o CTW (à la compila2on)
32
![Page 33: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/33.jpg)
Choix technologiques
! Syntaxe o Java o AspectJ Language (.aj) o @AspectJ o XML
! Intégra2on o Maven o AJDT
33
![Page 34: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/34.jpg)
3. Considérer la complexité ajoutée
Gains
Complexité
34
![Page 35: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/35.jpg)
4. Considérer l’intégra2on
! Avec d’autres cadres applica2fs (framework)
! Le système de déploiement
! L’intégrateur con2nu ! Les technologie de tests ! Etc.
35 Image: manostphoto / FreeDigitalPhotos.net
![Page 36: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/36.jpg)
5. S’assurer de maîtriser les concepts
36
Rappelez-‐vous que vous introduisez un nouveau paradigme et non pas simplement une
technologie « cool »!
! Prototyper ! Essayer sur un pe2t projet
! Bien se documenter
! Bien former son équipe
Image: renjith krishnan / FreeDigitalPhotos.net
![Page 37: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/37.jpg)
6. Se discipliner
! Résistez au « canon pour tuer une mouche »
! L’AO tourne généralement mal entre les mains de cowboys
! Balancez toujours la complexité versus le gain
! Tester!
37 Image: photostock / FreeDigitalPhotos.net
![Page 38: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/38.jpg)
MAUVAISES PRATIQUES Quelques
Image: Ambro/ FreeDigitalPhotos.net 38
![Page 39: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/39.jpg)
Trop, c’est comme pas assez…
! Quand 50% du code est composé d’aspects…
! Est-‐ce 50% du code est composé de préoccupa2ons transverses?
Image: farconville / FreeDigitalPhotos.net 39
![Page 40: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/40.jpg)
L’AOP n’est pas un pansement
! Suis-‐je en train d’u2liser l’AOP pour corriger un problème de design?
! Ne vous servez pas de l’AOP comme parfum afin de masquer les mauvaises odeurs…
Image: digitalart / FreeDigitalPhotos.net 40
![Page 41: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/41.jpg)
Le « trip techno »
41
L’AOP c’est trop COOL !!
La chute pourrait être douloureuse!
• « AspectJ... WOW trop cool ! » • « On peut bidouiller plein de trucs avec ça ! » • « Tsé le truc qu’on arrivait pas à faire... on va faire un aspect qui va
changer ça puis qui va décider si… »
![Page 42: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/42.jpg)
BONNES PRATIQUES Quelques
42 Image: photostock / FreeDigitalPhotos.net
![Page 43: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/43.jpg)
OO encore d’actualité
43
Ce qui était vrai en OO l’est encore en AO
![Page 44: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/44.jpg)
Conseils de base habituels
! Code propre ! Cohésion dans l’aspect ! Couplage de l’aspect
44
![Page 45: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/45.jpg)
Un aspect? Vraiment?
45
Est-‐ce une préoccupa2on transverse?
Est-‐ce que je pourrais réusiner mon design OO pour aWeindre le même objec2f?
![Page 46: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/46.jpg)
U2liser l’aspect comme « lien »
! Déléguer à une classe qui con2ent la logique liée à ceWe préoccupa2on
! U2liser l’aspect pour 2sser la logique ! Note: Peut varier en fonc2on du 2sseur (ex.: AspectJ)
46
pointcut inXorY() :
execution(* *(..))
&& within(X || Y);
after() : inXorY {
persistance.clearCache();
}
X (classe cible)
Y (classe cible)
Aspect
Persistance (classe à 2sser)
![Page 47: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/47.jpg)
Dépendances et couplage
! N’oubliez pas que l’aspect est couplé à toutes les classes où il s’injecte*. * Où un point de coupure apparie
Image: Salvatore Vuono / FreeDigitalPhotos.net 47
![Page 48: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/48.jpg)
Limiter le couplage
48
Un aspect trop fortement couplé et ayant des dépendances éloignées augmente la complexité́
et le rend vulnérable aux changements.
« AOSD-‐Evolu2on Paradox » [1]
[1] Dean Wampler, Aspect-Oriented programming and design for java and AspectJ, 2007. http://polyglotprogramming.com/papers/AOPIntroAndPrinciplesTalk.pdf.
![Page 49: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/49.jpg)
Précision du point de coupure
! Un PC précis est plus à risque d’être impacté par un changement
! Un PC très générique risque d’apparier trop de PJ ! On appelle cela le « Fragile Pointcut Problem » [1]
49
pointcut pcPrecis() : execution(void C.doX());
pointcut pcGenerique() : execution(* C.doX*(..));
pointcut pcPourEtreCertainAvoirProbleme : execution(* *(..));
- Si C.doX() est renommé pour C.doXInContext() … - Si on ajoute C.doXPasRapportAvecAspect() …
[1] C. Koppen et M. Störzer. PCDiff : attacking the fragile pointcut problem. In European Interactive Workshop on Aspects in Software (EIWAS), 2004.
![Page 50: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/50.jpg)
Conscience ou inconscience?
50
Est-‐ce que les classes 2ssées devraient avoir conscience ou non des aspects?
Débat ouvert « obliviousness » vs « awareness »
![Page 51: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/51.jpg)
TESTS D’ASPECTS Bonnes pra2ques de
51
![Page 52: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/52.jpg)
Tests de haut niveau
52
Les aspects contribuent aux fonc2onnalités globales du système
Rien ne change pour les tests de haut niveau (fonc2onnels, accepta2on, etc.)
![Page 53: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/53.jpg)
Tests unitaires
53
![Page 54: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/54.jpg)
Tester unitairement un aspect
La bonne chose (advice)
Au bon moment (pointcut)
Test unitaire d’aspect
54
![Page 55: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/55.jpg)
Technique du pot de miel
55
Aspect
Pot 1
Pot 2
Pot N
X UTest
1
2
3
![Page 56: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/56.jpg)
56
![Page 57: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/57.jpg)
Encore faim?
Image: rajcreationzs / FreeDigitalPhotos.ne 57
Téléchargez les diaposi2ves complètes sur developpementagile.com
hWps://joind.in/6005
![Page 58: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/58.jpg)
QUESTIONS Période de
58
![Page 59: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/59.jpg)
CADRE APPLICATIF (FRAMEWORK) Choisir son
59
![Page 60: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/60.jpg)
Quelques cadres pour Java
! AspectJ
! Spring-‐AOP
! Guice-‐AOP
! …
60
![Page 61: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/61.jpg)
AspectJ
! Le plus complet o Plusieurs primi2ves o Plusieurs PJ possibles
! Extension à Java o Requiert un compilateur d’Aspects o Ou de remplacer le chargement des classes (CL ou Java Agent)
61
![Page 62: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/62.jpg)
Spring supporte deux 2sseurs
Spring
Spring AJ
Spring AOP
62
![Page 63: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/63.jpg)
Sprint-‐AOP
! Java 100% pur o Ne requiert pas de compilateur spécial o Ne requiert pas de Java Agent o U2lise des « Proxies » dynamiques
! Limita2ons o Tissage possible uniquement dans des Beans Spring o Peu de primi2ves et limitées (ex.: exécu2on de méthodes) o Ne peut intercepter des appels à « this »
63
![Page 64: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/64.jpg)
Spring-‐Aj
! Spring peut se servir d’aspects de Spring pour élargir ses fonc2onnalités
! Spring se sert d’AspectJ pour lui-‐même
! @Configurable permet d’injecter des dépendances dans des objets qui ne sont pas des Beans
64
Souvent une mauvaise odeur concernant le design… Spring
FW++ AspectJ Spring
AJ
![Page 65: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/65.jpg)
Syntaxe ou 2sseur?
Tissage
Spring-‐AOP (proxy)
AspectJ
Spring-‐AJ
Syntaxe (langage)
XML
@AspectJ
Langage AJ (.aj)
65
![Page 66: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/66.jpg)
Google Guice
! Limita2ons similaires à Spring-‐AOP (par « proxies »)
! Syntaxe propre o Java o Pas de syntaxe cachée dans les chaînes de caractères des annota2ons (comme @AspectJ)
66
![Page 67: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/67.jpg)
MODE DE TISSAGE Choisir son
67
![Page 68: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/68.jpg)
Deux grandes approches de 2ssage
À la compila2on (CTW)
À l’exécu2on (LTW)
68
![Page 69: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/69.jpg)
CTW (Compile-‐Time Weaving)
69
! Tissage à la compila2on
! Remplace généralement le compilateur de Java
! Peut 2sser uniquement dans le code compilé (pas dans une lib. externe)
! Produit du Bytecode standard 2ssé
![Page 70: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/70.jpg)
LTW (Load-‐Time Weaving)
70
! Tissage lors du chargement de la classe
! Remplace (assiste) le chargeur de classes de Java (ClassLoader)
! Requiert généralement le démarrage de la JVM avec un JavaAgent
! Peut être probléma2que avec des JEE Container ou entrer en conflit avec d’autres instrumenta2ons
![Page 71: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/71.jpg)
L’INTÉGRATION Considérer
71
![Page 72: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/72.jpg)
AJDT
! Plugin Eclipse pour AspectJ ! Désagrément sub2le:
o Force le CTW sur le projet dans Eclipse quand la nature « AspectJ » est ac2vée
! Offre de l’assistance o Complé2on (limitée) o Réusinage (limité) o Colora2on syntaxique et validateur
72
![Page 73: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/73.jpg)
Maven
! Plugin pour AspectJ ! Si combiné avec AJDT
o Compile avec AJC versus JDT-‐AJ pour Eclipse o Toujours faire « mvn clean » pour éviter les problèmes
! Pour du LTW u2lisez le Exec Mabven Plugin (ou autre) et passez le JavaAgent
73
![Page 74: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/74.jpg)
Spring + AJ
! U2liser le Java Agent de Spring plutôt que celui par défaut d’AspectJ
! AWen2on à la combinaison Spring-‐AOP (proxy) et AJDT
74
![Page 75: Implanter*l'AOP** Commentpar2r*du*bon*pied?* · Enquête*auprès*de*débutants*(2009)*! Pas*plus*difficile*àapprendre*que*l’OO*(74%)*! Il*estdifficile*de*tester*un*aspect(100%)*](https://reader036.fdocuments.fr/reader036/viewer/2022070721/5ee18fefad6a402d666c6643/html5/thumbnails/75.jpg)
Autres considéra2ons
! Maven o Il est possible que les métriques soient comptées en double en CTW.
o Ex.: couverture des tests
! JEE Container et Spring o Des chargeurs de classes spécifiques sont disponibles pour plusieurs JEE Container.
o Sinon, il faut se rabaWre sur u Java Agent de la JVM
75