Implanter lAOP...Comment partir du bon pied?          Confoo 2012    Montréal, Québec, Canada           29 février 2012
Félix-Antoine BourbonnaisIng. jr, PSM-I    Formateur et Coach Agile    Enseignement et formations     o TDD, Réusinage, OO...
Objectif de la présentationImage: jscreationzs / FreeDigitalPhotos.net   3
Réchauffement…                                         Quelles sont vos attentes?                                   Qui fa...
LesPRÉOCCUPATIONS TRANSVERSES                     5
Préoccupations transversesAngl.: Crosscutting concerns.     Certaines préoccupations secondaires sont      impossibles à r...
Préoccupations transverses                          Enchevêtrement          Éparpillement                                 ...
Préoccupations transversesEnchevêtrement (cohésion)                            Fonctionnalité                             ...
Enchevêtrement (1)                     9
Enchevêtrement (2)                     10
Enchevêtrement (3)                     11
Enchevêtrement (4)                     12
Enchevêtrement(principale)                 13
Enchevêtrement(récapitulatif)                  14
Préoccupations transversesÉparpillement (dispersion)                Persistance                              15
Introduction àL’AOP                 16
Orientation objet et préoccupations                         Encapsulation        Cohésion                               Mo...
Orientation objet et préoccupations    Théoriquement, chaque classe devrait    représenter une seule préoccupation.       ...
Orientation aspect                     C                              A                         Classe 1        Aspect 1  ...
Rappel rapide deLA TERMINOLOGIE ET DUFONCTIONNEMENT                        20
Un aspect Un module encapsulant une préoccupation Peu gérer les préoccupations transverses Généralement une classe « évolu...
Contenu typique d’un aspect  Code à      Indication                                Aspect exécuter     des cibles         ...
Aspect en AspectJpublic aspect VisitorAspect {    /∗ −−−−−−−− Pointcuts −−−−−−−− ∗/    protected pointcut startMethod() : ...
Pourquoi est-ce queL’AOP N’A PAS AUTANT RAYONNÉQUE PRÉVU?                       24
Pourquoi est-ce que plusieursentreprises délaissent l’AOP?   Mauvaises raisons et utilisations     Complexité ajoutée     ...
Aspect != AOPImage: Danilo Rizzuti / FreeDigitalPhotos.net   26
Enquête auprès de débutants (2009)     Pas plus difficile à apprendre que l’OO (74%)     Il est difficile de tester un asp...
Enquête auprès de débutants (2009)Critique de la validité   Le contexte    o Étudiants de bacc. (3e/4e année)    o Projet ...
CommentINTRODUIRE DE L’AOP DANS VOTREPROJET                      29
1. Avoir un but…Image: renjith krishnan / FreeDigitalPhotos.net   30
2. Choisir sa technologieImage: Sura Nualpradid / FreeDigitalPhotos.net   31
Choix technologiques Tisseur / cadre applicatif (framework) o Compilateur spécial o Pur java Mode de tissage o LTW (au cha...
Choix technologiques Syntaxe o Java o AspectJ Language (.aj) o @AspectJ o XML Intégration o Maven o AJDT                  ...
3. Considérer la complexité ajoutée                      Gains      Complexité                          34
4. Considérer l’intégration     Avec d’autres cadres     applicatifs (framework)     Le système de     déploiement     L’i...
5. S’assurer de maîtriser les conceptsRappelez-vous que vous introduisez un nouveau    paradigme et non pas simplement une...
6. Se discipliner     Résistez au « canon pour tuer une mouche »     L’AO tourne généralement mal entre     les mains de c...
Quelques    MAUVAISES PRATIQUESImage: Ambro/ FreeDigitalPhotos.net   38
Trop, c’est comme pas assez…     Quand 50% du code est     composé d’aspects…     Est-ce 50% du code est     composé de   ...
L’AOP n’est pas un pansement     Suis-je en train d’utiliser     l’AOP pour corriger un     problème de design?     Ne vou...
Le « trip techno »                L’AOP c’est trop COOL !!     La chute pourrait être douloureuse!    • « AspectJ... WOW t...
Quelques    BONNES PRATIQUESImage: photostock / FreeDigitalPhotos.net   42
OO encore d’actualité  Ce qui était vrai en OO l’est encore en AO                                   43
Conseils de base habituels Code propre Cohésion dans l’aspect Couplage de l’aspect                             44
Un aspect? Vraiment?    Est-ce une préoccupation transverse?Est-ce que je pourrais réusiner mon design OO       pour attei...
Utiliser l’aspect comme « lien »     Déléguer à une classe qui contient la logique liée à cette     préoccupation     Util...
Dépendances et couplage                                                 N’oubliez pas que                                 ...
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ér...
Conscience ou inconscience? Est-ce que les classes tissées devraient avoir       conscience ou non des aspects?           ...
Bonnes pratiques deTESTS D’ASPECTS                      51
Tests de haut niveau  Les aspects contribuent aux fonctionnalités             globales du système Rien ne change pour les ...
Tests unitaires                  53
Tester unitairement un aspect     La bonne       chose       (advice)                     Test                   unitaire ...
Technique du pot de miel        1           Pot 1UTest                    Pot 2   X   Aspect                2            3...
56
Encore faim?                                  https://joind.in/6005         Téléchargez les diapositives complètes sur    ...
Période deQUESTIONS             58
Prochain SlideShare
Chargement dans…5
×

Implanter l'AOP... Comment partir du bon pied?

2 393 vues

Publié le

Bien que l'AOP apporte plusieurs bénéfices architecturaux et techniques aux équipes qui en font usage, l'AOP vient également avec son lot de pièges. Pour ces raisons, plusieurs délaissent l'AOP à cause de la complexité indue qui pourrait toutefois être réduite en suivant de simples bonnes pratiques et en préparant adéquatement son intégration.

Cette présentation a pour but d'aider une équipe à embrasser l'AOP tout en évitant les pièges. On y traitera de diverses bonnes et mauvaises pratiques avec l'AOP (architecture, IDE, refactorisation, tests...). L'accent sera placé sur des conseils pratiques comme le choix de frameworks (ex.: AspectJ ou Spring-AOP), du mode de tissage approprié à votre contexte, des conflits avec d'autres technologies Java, etc.

Publié dans : Technologie
1 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
2 393
Sur SlideShare
0
Issues des intégrations
0
Intégrations
600
Actions
Partages
0
Téléchargements
18
Commentaires
1
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Implanter l'AOP... Comment partir du bon pied?

  1. 1. Implanter lAOP...Comment partir du bon pied? Confoo 2012 Montréal, Québec, Canada 29 février 2012
  2. 2. Félix-Antoine BourbonnaisIng. jr, PSM-I Formateur et Coach Agile Enseignement et formations o TDD, Réusinage, OO avancé, AOP, tests, Scrum Recherches o AOP, agilité, tests et mocks Développeur o Java et Python (principalement) @fbourbonnais 2
  3. 3. Objectif de la présentationImage: jscreationzs / FreeDigitalPhotos.net 3
  4. 4. Réchauffement… Quelles sont vos attentes? 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?Image: Nutdanai Apikhomboonwaroot / FreeDigitalPhotos.net 4
  5. 5. LesPRÉOCCUPATIONS TRANSVERSES 5
  6. 6. Préoccupations transversesAngl.: Crosscutting concerns. Certaines préoccupations secondaires sont impossibles à regrouper et contaminent plusieurs classes. 6
  7. 7. Préoccupations transverses Enchevêtrement Éparpillement 7
  8. 8. Préoccupations transversesEnchevêtrement (cohésion) Fonctionnalité principale Persistance Sécurité Observation 8
  9. 9. Enchevêtrement (1) 9
  10. 10. Enchevêtrement (2) 10
  11. 11. Enchevêtrement (3) 11
  12. 12. Enchevêtrement (4) 12
  13. 13. Enchevêtrement(principale) 13
  14. 14. Enchevêtrement(récapitulatif) 14
  15. 15. Préoccupations transversesÉparpillement (dispersion) Persistance 15
  16. 16. Introduction àL’AOP 16
  17. 17. Orientation objet et préoccupations Encapsulation Cohésion Modularité SRP Couplage 17
  18. 18. Orientation objet et préoccupations Théoriquement, chaque classe devrait représenter une seule préoccupation. 18
  19. 19. Orientation aspect C A Classe 1 Aspect 1 A C Aspect 2 Classe 2 A Aspect 3 19
  20. 20. Rappel rapide deLA TERMINOLOGIE ET DUFONCTIONNEMENT 20
  21. 21. Un aspect Un module encapsulant une préoccupation Peu gérer les préoccupations transverses Généralement une classe « évoluée » o Capacités supplémentaires afin de permettre l’encapsulation de préoccupations transverses 21
  22. 22. Contenu typique d’un aspect Code à Indication Aspect exécuter des cibles 22
  23. 23. Aspect en AspectJpublic aspect VisitorAspect { /∗ −−−−−−−− Pointcuts −−−−−−−− ∗/ protected pointcut startMethod() : execution( ∗ start∗(..) ); /∗ −−−−−−−− Advices −−−−−−−− ∗/ after() : startMethod() { printHello(); }} 23
  24. 24. Pourquoi est-ce queL’AOP N’A PAS AUTANT RAYONNÉQUE PRÉVU? 24
  25. 25. Pourquoi est-ce que plusieursentreprises délaissent l’AOP? Mauvaises raisons et utilisations Complexité ajoutée Manque de support et d’intégration Manque de connaissances et de compétences Trop de promesses 25
  26. 26. Aspect != AOPImage: Danilo Rizzuti / FreeDigitalPhotos.net 26
  27. 27. 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éutiliseraient l’AOP mais 62% avec prudence[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 27(ESCOT 2010), Rennes, France, 2010.
  28. 28. Enquête auprès de débutants (2009)Critique de la validité 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 http://www.comp.lancs.ac.uk/~greenwop/escot10/escot10_submissio n_2.pdf 28
  29. 29. CommentINTRODUIRE DE L’AOP DANS VOTREPROJET 29
  30. 30. 1. Avoir un but…Image: renjith krishnan / FreeDigitalPhotos.net 30
  31. 31. 2. Choisir sa technologieImage: Sura Nualpradid / FreeDigitalPhotos.net 31
  32. 32. Choix technologiques Tisseur / cadre applicatif (framework) o Compilateur spécial o Pur java Mode de tissage o LTW (au chargement des classes) o CTW (à la compilation) 32
  33. 33. Choix technologiques Syntaxe o Java o AspectJ Language (.aj) o @AspectJ o XML Intégration o Maven o AJDT 33
  34. 34. 3. Considérer la complexité ajoutée Gains Complexité 34
  35. 35. 4. Considérer l’intégration Avec d’autres cadres applicatifs (framework) Le système de déploiement L’intégrateur continu Les technologie de tests Etc.Image: manostphoto / FreeDigitalPhotos.net 35
  36. 36. 5. S’assurer de maîtriser les conceptsRappelez-vous que vous introduisez un nouveau paradigme et non pas simplement une technologie « cool »! Prototyper Essayer sur un petit projet Bien se documenter Bien former son équipeImage: renjith krishnan / FreeDigitalPhotos.net 36
  37. 37. 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!Image: photostock / FreeDigitalPhotos.net 37
  38. 38. Quelques MAUVAISES PRATIQUESImage: Ambro/ FreeDigitalPhotos.net 38
  39. 39. Trop, c’est comme pas assez… Quand 50% du code est composé d’aspects… Est-ce 50% du code est composé de préoccupations transverses?Image: farconville / FreeDigitalPhotos.net 39
  40. 40. L’AOP n’est pas un pansement Suis-je en train d’utiliser 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
  41. 41. Le « trip techno » L’AOP c’est trop COOL !! La chute pourrait être douloureuse! • « AspectJ... WOW trop cool ! » • « On peut bidouiller plein de trucs avec ça ! » • faire... on va faire un aspect qui va changer ça puis qui va décider si… » 41
  42. 42. Quelques BONNES PRATIQUESImage: photostock / FreeDigitalPhotos.net 42
  43. 43. OO encore d’actualité Ce qui était vrai en OO l’est encore en AO 43
  44. 44. Conseils de base habituels Code propre Cohésion dans l’aspect Couplage de l’aspect 44
  45. 45. Un aspect? Vraiment? Est-ce une préoccupation transverse?Est-ce que je pourrais réusiner mon design OO pour atteindre le même objectif? 45
  46. 46. Utiliser l’aspect comme « lien » Déléguer à une classe qui contient la logique liée à cette préoccupation Utiliser l’aspect pour tisser la logique Note: Peut varier en fonction du tisseur (ex.: AspectJ)pointcut inXorY() : execution(* *(..)) X (classe cible) Aspect && within(X || Y); Persistance (classe à tisser)after() : inXorY { Y (classe cible) persistance.clearCache();} 46
  47. 47. Dépendances et couplage N’oubliez pas que l’aspect est couplé à toutes les classes où il s’injecte*. * Où un point de coupure apparieImage: Salvatore Vuono / FreeDigitalPhotos.net 47
  48. 48. 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]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. 49In European Interactive Workshop on Aspects in Software (EIWAS), 2004.
  49. 49. Conscience ou inconscience? Est-ce que les classes tissées devraient avoir conscience ou non des aspects? Débat ouvert « obliviousness » vs « awareness » 50
  50. 50. Bonnes pratiques deTESTS D’ASPECTS 51
  51. 51. Tests de haut niveau Les aspects contribuent aux fonctionnalités globales du système Rien ne change pour les tests de haut niveau (fonctionnels, acceptation, etc.) 52
  52. 52. Tests unitaires 53
  53. 53. Tester unitairement un aspect La bonne chose (advice) Test unitaire Au bon d’aspect moment (pointcut) 54
  54. 54. Technique du pot de miel 1 Pot 1UTest Pot 2 X Aspect 2 3 Pot N 55
  55. 55. 56
  56. 56. Encore faim? https://joind.in/6005 Téléchargez les diapositives complètes sur developpementagile.comImage: rajcreationzs / FreeDigitalPhotos.ne 57
  57. 57. Période deQUESTIONS 58

×