SlideShare ist ein Scribd-Unternehmen logo
1 von 65
Downloaden Sie, um offline zu lesen
Initiation à l’AOP

Architecture logicielle




                          © 2012 Elapse Technologies
   Université Laval

      Automne 2012
Félix-Antoine Bourbonnais
Ing. jr, PSM-I


    Formateur & Coach Agile
     o Tests automatisés: TDD/ATDD, BDD, …
     o Orientation objet avancée




                                                                            © 2012 Elapse Technologies
     o Architecture agile
     o Réusinage et qualité (Clean Code)      elapsetech.com/fab

     o Agile Scrum
                                             @fbourbonnais


    Concepteur de logiciels                  linkedin.com/in/fbourbonnais
     o Pratiques de développement
     o Java, Python, etc.


                                                 2
Réchauffement…

                                                Qui fait ou a fait de
                                                  l’AOP dans un
                                                      projet?




                                                                        © 2012 Elapse Technologies
                                                 Qui a eu une
                                              mauvaise expérience
                                                 avec l’AOP?

Image: Nutdanai Apikhomboonwaroot / FreeDigitalPhotos.net       3
© 2012 Elapse Technologies
Quelques…

NOTIONS PRÉALABLES


                     4
SRP




                                                                                                           © 2012 Elapse Technologies
SOLID Motivational Posters, by Derick Bailey
http://lostechies.com/derickbailey/2009/02/11/solid-development-principles-in-motivational-pictures/
                                                                                                       5
Gestion des dépendances
Objectif: minimiser l’impacts des modifications

                    Et si on change
                     « Display »?




                                                      © 2012 Elapse Technologies
                                                  6
Problèmes OO
               Est-ce que beaucoup de classes
               risquent d’utiliser Display?

               Toutes les fonctionnalités sont




                                                 © 2012 Elapse Technologies
               utilisées par les figures?

               Est-ce que Display risque de
               changer?

               Dans quel sens devrait être la
               dépendance?

               Abstraction?



                                 7
Solution OO




                                            © 2012 Elapse Technologies
              SRP?




                         Il faut toujours
                         appeler notify()


                     8
© 2012 Elapse Technologies
                                           9
Solution AO
© 2012 Elapse Technologies
Les

PRÉOCCUPATIONS TRANSVERSES


                     10
Préoccupations transverses
Angl.: Crosscutting concerns.




                                                 © 2012 Elapse Technologies
     Certaines préoccupations secondaires sont
      impossibles à regrouper et contaminent
                  plusieurs classes.




                                    11
Préoccupations transverses




                                                © 2012 Elapse Technologies
                          Enchevêtrement



          Éparpillement




                                           12
Préoccupations transverses
Éparpillement (dispersion)

                  Sécurité




                                  © 2012 Elapse Technologies
                             13
Préoccupations transverses
Enchevêtrement (cohésion)


                            Fonctionnalité
                              principale




                                             © 2012 Elapse Technologies
                             Persistance


                               Sécurité


                             Observation




                                    14
© 2012 Elapse Technologies
Enchevêtrement (1)
                                       15
© 2012 Elapse Technologies
Enchevêtrement (2)
                                       16
© 2012 Elapse Technologies
Enchevêtrement (3)
                                       17
© 2012 Elapse Technologies
Enchevêtrement (4)
                                       18
© 2012 Elapse Technologies
Enchevêtrement
(principale)
                                      19
© 2012 Elapse Technologies
Enchevêtrement
(récapitulatif)
                                       20
© 2012 Elapse Technologies
                                         21
                Introduction à

                                 L’AOP
Orientation objet et préoccupations




                                           © 2012 Elapse Technologies
    Théoriquement, chaque classe devrait
    représenter une seule préoccupation.




                                 22
Orientation aspect
                     C                              A


                         Classe 1        Aspect 1




                                                        © 2012 Elapse Technologies
                                                    A
                     C
                                         Aspect 2

                         Classe 2                   A
                                         Aspect 3




                                    23
AOP




                                    © 2012 Elapse Technologies
      L’AOP est un paradigme




                               24
© 2012 Elapse Technologies
Aperçu rapide de…

LA TERMINOLOGIE ET DU
FONCTIONNEMENT

                        25
Un aspect
 Un module encapsulant une préoccupation
 Peu gérer les préoccupations transverses




                                                   © 2012 Elapse Technologies
 Généralement une classe « évoluée »
 o Capacités supplémentaires afin de permettre
   l’encapsulation de préoccupations transverses




                                            26
Contenu typique d’un aspect




                                         © 2012 Elapse Technologies
  Code à      Indication
                                Aspect
 exécuter     des cibles




                           27
Aspect en AspectJ
public aspect VisitorAspect {


    /∗ −−−−−−−− Pointcuts −−−−−−−− ∗/
    protected pointcut startMethod() :




                                              © 2012 Elapse Technologies
        execution( ∗ start∗(..) );


    /∗ −−−−−−−− Advices −−−−−−−− ∗/
    after() : startMethod() {
        printHello();
    }


}




                                         28
© 2012 Elapse Technologies
    Quelques

    MAUVAISES PRATIQUES

Image: Ambro/ FreeDigitalPhotos.net     29
Trop, c’est comme pas assez…
     Quand 50% du code est
     composé d’aspects…




                                                  © 2012 Elapse Technologies
     Est-ce 50% du code est
     composé de
     préoccupations
     transverses?




Image: farconville / FreeDigitalPhotos.net   30
L’AOP n’est pas un pansement
     Suis-je en train d’utiliser
     l’AOP pour corriger un
     problème de design?




                                                 © 2012 Elapse Technologies
     Ne vous servez pas de
     l’AOP comme parfum
     afin de masquer les
     mauvaises odeurs…



Image: digitalart / FreeDigitalPhotos.net   31
Le « trip techno »

                L’AOP c’est trop COOL !!
     La chute pourrait être douloureuse!




                                                                                 © 2012 Elapse Technologies
    • « 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… »




                                                             32
© 2012 Elapse Technologies
    Quelques

    BONNES PRATIQUES

Image: photostock / FreeDigitalPhotos.net     33
OO encore d’actualité




                                               © 2012 Elapse Technologies
  Ce qui était vrai en OO l’est encore en AO




                                   34
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




                                                                                   © 2012 Elapse Technologies
     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();
}

                                                          35
Dépendances et couplage
                                                 N’oubliez pas que
                                                 l’aspect est couplé à
                                                 toutes les classes où il




                                                                                    © 2012 Elapse Technologies
                                                 s’injecte*.

                                                 * Où un point de coupure apparie




Image: Salvatore Vuono / FreeDigitalPhotos.net                 36
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




                                                                                     © 2012 Elapse Technologies
     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.
                                                                                37
In European Interactive Workshop on Aspects in Software (EIWAS), 2004.
© 2012 Elapse Technologies
Comment

INTRODUIRE DE L’AOP DANS VOTRE
PROJET

                      38
Choisir sa technologie




                                                      © 2012 Elapse Technologies
Image: Sura Nualpradid / FreeDigitalPhotos.net   39
Considérer la complexité ajoutée

                     Gains




                                   © 2012 Elapse Technologies
      Complexité


                         40
Considérer l’intégration
     Avec d’autres cadres
     applicatifs (framework)
     Le système de




                                                  © 2012 Elapse Technologies
     déploiement
     L’intégrateur continu
     Les technologie de tests
     Etc.


Image: manostphoto / FreeDigitalPhotos.net   41
S’assurer de maîtriser les concepts

Rappelez-vous que vous introduisez un nouveau
    paradigme et non pas simplement une
            technologie « cool »!




                                                       © 2012 Elapse Technologies
     Prototyper
     Essayer sur un petit projet
     Bien se documenter
     Bien former son équipe




Image: renjith krishnan / FreeDigitalPhotos.net   42
Se discipliner
     Résistez au « canon pour tuer une mouche »
     L’AO tourne généralement mal entre
     les mains de cowboys




                                                  © 2012 Elapse Technologies
     Balancez toujours la complexité
     versus le gain
     Tester!




Image: photostock / FreeDigitalPhotos.net   43
© 2012 Elapse Technologies
                                           44
                             TECHNOLOGIE
                Choisir sa
Quelques cadres pour Java
 AspectJ
 Spring-AOP




                             © 2012 Elapse Technologies
 Guice-AOP
 …




                        45
AspectJ
 Le plus complet
 o Plusieurs primitives
 o Plusieurs PJ possibles




                                                © 2012 Elapse Technologies
 Extension à Java
 o Requiert un compilateur d’Aspects
 o Ou de remplacer le chargement des classes
   (CL ou Java Agent)




                                           46
Spring supporte deux tisseurs

            Spring
             AOP




                                   © 2012 Elapse Technologies
                     Spring
                       AJ




                 Spring

                              47
Sprint-AOP
 Java 100% pur
 o Ne requiert pas de compilateur spécial
 o Ne requiert pas de Java Agent




                                                                © 2012 Elapse Technologies
 o Utilise des « Proxies » dynamiques
 Limitations
 o Tissage possible uniquement dans des Beans Spring
 o Peu de primitives et limitées (ex.: exécution de méthodes)
 o Ne peut intercepter des appels à « this »


                                               48
Spring-Aj
 Spring peut se servir d’aspects de Spring pour élargir
 ses fonctionnalités
 Spring se sert d’AspectJ pour lui-même




                                                             © 2012 Elapse Technologies
 @Configurable permet d’injecter des dépendances
 dans des objets qui ne sont pas des Beans

                                      Souvent une mauvaise
Spring                      Spring    odeur concernant le
             AspectJ
  AJ                        FW++      design…




                                          49
Syntaxe ou tisseur?
             Tissage    Syntaxe (langage)

   Spring-AOP (proxy)   XML




                                            © 2012 Elapse Technologies
             AspectJ    @AspectJ

            Spring-AJ   Langage AJ (.aj)




                                   50
Google Guice
 Limitations similaires à Spring-AOP (par « proxies »)
 Syntaxe propre
 o Java




                                                              © 2012 Elapse Technologies
 o Pas de syntaxe cachée dans les chaînes de caractères des
   annotations (comme @AspectJ)




                                            51
© 2012 Elapse Technologies
Choisir son

MODE DE TISSAGE


                  52
Deux grandes approches de tissage


       À la compilation (CTW)




                                    © 2012 Elapse Technologies
       À l’exécution (LTW)

                        53
CTW (Compile-Time Weaving)
 Tissage à la compilation
 Remplace généralement le compilateur de Java




                                                    © 2012 Elapse Technologies
 Peut tisser uniquement dans le code compilé (pas
 dans une lib. externe)
 Produit du Bytecode standard tissé




                                      54
LTW (Load-Time Weaving)
 Tissage lors du chargement de la classe
 Remplace (assiste) le chargeur de classes de Java
 (ClassLoader)




                                                     © 2012 Elapse Technologies
 Requiert généralement le démarrage de la JVM avec
 un JavaAgent
 Peut être problématique avec des JEE Container ou
 entrer en conflit avec d’autres instrumentations



                                           55
© 2012 Elapse Technologies
                                             56
                             L’INTÉGRATION
                Considérer
AJDT
 Plugin Eclipse pour AspectJ
 Désagrément subtile:
 o Force le CTW sur le projet dans Eclipse quand la nature




                                                             © 2012 Elapse Technologies
   « AspectJ » est activée
 Offre de l’assistance
 o Complétion (limitée)
 o Réusinage (limité)
 o Coloration syntaxique et validateur


                                             57
Maven
 Plugin pour AspectJ
 Si combiné avec AJDT
 o Compile avec AJC versus JDT-AJ pour Eclipse




                                                            © 2012 Elapse Technologies
 o Toujours faire « mvn clean » pour éviter les problèmes
 Pour du LTW utilisez le Exec Maven Plugin (ou autre)
 et passez le JavaAgent




                                             58
Spring + AJ
 Utiliser le Java Agent de Spring plutôt que celui par
 défaut d’AspectJ
 Attention à la combinaison Spring-AOP (proxy) et




                                                         © 2012 Elapse Technologies
 AJDT




                                         59
Autres considérations
 Maven
 o Il est possible que les métriques soient comptées en
   double en CTW.




                                                                © 2012 Elapse Technologies
 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 rabattre sur u Java Agent de la JVM



                                               60
61




© 2012 Elapse Technologies
                                    QUESTIONS
                       Période de
© 2012 Elapse Technologies
Formation conçue par

ELAPSE TECHNOLOGIES
Nos services
 Formations
 o Formations publiques
 o Formations privées sur mesure en entreprise




                                                 © 2012 Elapse Technologies
 Accompagnement d’entreprises
 o Mentorat et coaching
 o Diagnostique
 Service-conseil
 o Agent de changement
 o Expertise et conseils de pointe
Notre expertise
 Processus Agile
 o Scrum, Kanban, …
 o eXtreme Programming




                                                    © 2012 Elapse Technologies
 Pratiques de développement
 o Tests automatisés (TDD, ATDD, BDD, ...)
 o Architecture Agile
 o Réusinage (refactoring)
 o Qualité (code propre, intégration continue, …)
Blogue

                          Suivez nos professionnels sur
                            developpementagile.com




                                                          © 2012 Elapse Technologies
Image: renjith krishnan / FreeDigitalPhotos.net

Weitere ähnliche Inhalte

Was ist angesagt?

Eclipse4 et acceleo
Eclipse4 et acceleoEclipse4 et acceleo
Eclipse4 et acceleoglefur
 
Architecture Agile et développement durable (v 1.2)
 Architecture Agile et développement durable (v 1.2) Architecture Agile et développement durable (v 1.2)
Architecture Agile et développement durable (v 1.2)Elapse Technologies
 
TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...
TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...
TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...Cédric Leblond
 
Introduction AOP
Introduction AOPIntroduction AOP
Introduction AOPKlee Group
 
Génie Logiciels : Introduction aux architectures
Génie Logiciels : Introduction aux architecturesGénie Logiciels : Introduction aux architectures
Génie Logiciels : Introduction aux architecturesMohammed Amine Mostefai
 
03 jus 2011 11 15 bilan2 011
03 jus 2011 11 15 bilan2 01103 jus 2011 11 15 bilan2 011
03 jus 2011 11 15 bilan2 011OpenCascade
 

Was ist angesagt? (9)

Eclipse4 et acceleo
Eclipse4 et acceleoEclipse4 et acceleo
Eclipse4 et acceleo
 
Architecture Agile et développement durable (v 1.2)
 Architecture Agile et développement durable (v 1.2) Architecture Agile et développement durable (v 1.2)
Architecture Agile et développement durable (v 1.2)
 
TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...
TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...
TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...
 
Introduction AOP
Introduction AOPIntroduction AOP
Introduction AOP
 
Génie Logiciels : Introduction aux architectures
Génie Logiciels : Introduction aux architecturesGénie Logiciels : Introduction aux architectures
Génie Logiciels : Introduction aux architectures
 
Génie Logiciel - Cours 5 - analyse
Génie Logiciel - Cours 5 - analyseGénie Logiciel - Cours 5 - analyse
Génie Logiciel - Cours 5 - analyse
 
Génie Logiciel : Conception
Génie Logiciel : ConceptionGénie Logiciel : Conception
Génie Logiciel : Conception
 
03 jus 2011 11 15 bilan2 011
03 jus 2011 11 15 bilan2 01103 jus 2011 11 15 bilan2 011
03 jus 2011 11 15 bilan2 011
 
Mt104 Introduction
Mt104 IntroductionMt104 Introduction
Mt104 Introduction
 

Andere mochten auch

Équipes de développement : soyez experts!
Équipes de développement : soyez experts!Équipes de développement : soyez experts!
Équipes de développement : soyez experts!Elapse Technologies
 
Faîtes face à la demande - ConFoo 2012
Faîtes face à la demande - ConFoo 2012Faîtes face à la demande - ConFoo 2012
Faîtes face à la demande - ConFoo 2012Elapse Technologies
 
Implanter l'AOP... Comment partir du bon pied?
Implanter l'AOP... Comment partir du bon pied?Implanter l'AOP... Comment partir du bon pied?
Implanter l'AOP... Comment partir du bon pied?Elapse Technologies
 
Introduction aux methodes agile par la pratique.pptx
Introduction aux methodes agile par la pratique.pptxIntroduction aux methodes agile par la pratique.pptx
Introduction aux methodes agile par la pratique.pptxElapse Technologies
 
Speed sharing pour Scrum Masters
Speed sharing pour Scrum MastersSpeed sharing pour Scrum Masters
Speed sharing pour Scrum MastersElapse Technologies
 
Conditions de succès spécifications ou assurance qualité
Conditions de succès   spécifications ou assurance qualitéConditions de succès   spécifications ou assurance qualité
Conditions de succès spécifications ou assurance qualitéElapse Technologies
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Elapse Technologies
 
Une mise en production à chaque heure de la journée
Une mise en production à chaque heure de la journéeUne mise en production à chaque heure de la journée
Une mise en production à chaque heure de la journéeElapse Technologies
 
Leaflet ERAS Chemistry
Leaflet ERAS ChemistryLeaflet ERAS Chemistry
Leaflet ERAS ChemistryGuilla38
 
Risk factors of chronic liver disease amongst patients receiving care in a Ga...
Risk factors of chronic liver disease amongst patients receiving care in a Ga...Risk factors of chronic liver disease amongst patients receiving care in a Ga...
Risk factors of chronic liver disease amongst patients receiving care in a Ga...iosrjce
 
Secure Multi-Keyword Top-K Retrieval Over Encrypted Cloud Data Using Homomorp...
Secure Multi-Keyword Top-K Retrieval Over Encrypted Cloud Data Using Homomorp...Secure Multi-Keyword Top-K Retrieval Over Encrypted Cloud Data Using Homomorp...
Secure Multi-Keyword Top-K Retrieval Over Encrypted Cloud Data Using Homomorp...iosrjce
 
The periodontal abscess: A review
The periodontal abscess: A reviewThe periodontal abscess: A review
The periodontal abscess: A reviewiosrjce
 
A New Solution to Improve Power Quality of Renewable Energy Sources Smart Gri...
A New Solution to Improve Power Quality of Renewable Energy Sources Smart Gri...A New Solution to Improve Power Quality of Renewable Energy Sources Smart Gri...
A New Solution to Improve Power Quality of Renewable Energy Sources Smart Gri...iosrjce
 
Implementation of Marathi Language Speech Databases for Large Dictionary
Implementation of Marathi Language Speech Databases for Large DictionaryImplementation of Marathi Language Speech Databases for Large Dictionary
Implementation of Marathi Language Speech Databases for Large Dictionaryiosrjce
 
Entrepreneurship Coaching Role as a Realization of Furniture Industry Empower...
Entrepreneurship Coaching Role as a Realization of Furniture Industry Empower...Entrepreneurship Coaching Role as a Realization of Furniture Industry Empower...
Entrepreneurship Coaching Role as a Realization of Furniture Industry Empower...iosrjce
 
Cryptanalysis and Security Enhancement of a Khan et al.'s Scheme
Cryptanalysis and Security Enhancement of a Khan et al.'s SchemeCryptanalysis and Security Enhancement of a Khan et al.'s Scheme
Cryptanalysis and Security Enhancement of a Khan et al.'s Schemeiosrjce
 
The Effects of Cement Dust on Haematological Parameters of Cement Workers in ...
The Effects of Cement Dust on Haematological Parameters of Cement Workers in ...The Effects of Cement Dust on Haematological Parameters of Cement Workers in ...
The Effects of Cement Dust on Haematological Parameters of Cement Workers in ...iosrjce
 

Andere mochten auch (20)

Équipes de développement : soyez experts!
Équipes de développement : soyez experts!Équipes de développement : soyez experts!
Équipes de développement : soyez experts!
 
Faîtes face à la demande - ConFoo 2012
Faîtes face à la demande - ConFoo 2012Faîtes face à la demande - ConFoo 2012
Faîtes face à la demande - ConFoo 2012
 
Implanter l'AOP... Comment partir du bon pied?
Implanter l'AOP... Comment partir du bon pied?Implanter l'AOP... Comment partir du bon pied?
Implanter l'AOP... Comment partir du bon pied?
 
Introduction aux methodes agile par la pratique.pptx
Introduction aux methodes agile par la pratique.pptxIntroduction aux methodes agile par la pratique.pptx
Introduction aux methodes agile par la pratique.pptx
 
Speed sharing pour Scrum Masters
Speed sharing pour Scrum MastersSpeed sharing pour Scrum Masters
Speed sharing pour Scrum Masters
 
Extension Agile du BABOK
Extension Agile du BABOKExtension Agile du BABOK
Extension Agile du BABOK
 
Conditions de succès spécifications ou assurance qualité
Conditions de succès   spécifications ou assurance qualitéConditions de succès   spécifications ou assurance qualité
Conditions de succès spécifications ou assurance qualité
 
Faîtes face à la demande
Faîtes face à la demandeFaîtes face à la demande
Faîtes face à la demande
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29
 
Notre souper
Notre souperNotre souper
Notre souper
 
Une mise en production à chaque heure de la journée
Une mise en production à chaque heure de la journéeUne mise en production à chaque heure de la journée
Une mise en production à chaque heure de la journée
 
Leaflet ERAS Chemistry
Leaflet ERAS ChemistryLeaflet ERAS Chemistry
Leaflet ERAS Chemistry
 
Risk factors of chronic liver disease amongst patients receiving care in a Ga...
Risk factors of chronic liver disease amongst patients receiving care in a Ga...Risk factors of chronic liver disease amongst patients receiving care in a Ga...
Risk factors of chronic liver disease amongst patients receiving care in a Ga...
 
Secure Multi-Keyword Top-K Retrieval Over Encrypted Cloud Data Using Homomorp...
Secure Multi-Keyword Top-K Retrieval Over Encrypted Cloud Data Using Homomorp...Secure Multi-Keyword Top-K Retrieval Over Encrypted Cloud Data Using Homomorp...
Secure Multi-Keyword Top-K Retrieval Over Encrypted Cloud Data Using Homomorp...
 
The periodontal abscess: A review
The periodontal abscess: A reviewThe periodontal abscess: A review
The periodontal abscess: A review
 
A New Solution to Improve Power Quality of Renewable Energy Sources Smart Gri...
A New Solution to Improve Power Quality of Renewable Energy Sources Smart Gri...A New Solution to Improve Power Quality of Renewable Energy Sources Smart Gri...
A New Solution to Improve Power Quality of Renewable Energy Sources Smart Gri...
 
Implementation of Marathi Language Speech Databases for Large Dictionary
Implementation of Marathi Language Speech Databases for Large DictionaryImplementation of Marathi Language Speech Databases for Large Dictionary
Implementation of Marathi Language Speech Databases for Large Dictionary
 
Entrepreneurship Coaching Role as a Realization of Furniture Industry Empower...
Entrepreneurship Coaching Role as a Realization of Furniture Industry Empower...Entrepreneurship Coaching Role as a Realization of Furniture Industry Empower...
Entrepreneurship Coaching Role as a Realization of Furniture Industry Empower...
 
Cryptanalysis and Security Enhancement of a Khan et al.'s Scheme
Cryptanalysis and Security Enhancement of a Khan et al.'s SchemeCryptanalysis and Security Enhancement of a Khan et al.'s Scheme
Cryptanalysis and Security Enhancement of a Khan et al.'s Scheme
 
The Effects of Cement Dust on Haematological Parameters of Cement Workers in ...
The Effects of Cement Dust on Haematological Parameters of Cement Workers in ...The Effects of Cement Dust on Haematological Parameters of Cement Workers in ...
The Effects of Cement Dust on Haematological Parameters of Cement Workers in ...
 

Ähnlich wie Initiation à l’AOP

Codedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
Codedarmor 2012 - 09/10 - Eclipse 4 & AcceleoCodedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
Codedarmor 2012 - 09/10 - Eclipse 4 & Acceleocodedarmor
 
Les pratiques des geants du web
Les pratiques des geants du webLes pratiques des geants du web
Les pratiques des geants du webStephen PERIN
 
Implanter l'AOP... Comment partir du bon pied?
Implanter l'AOP... Comment partir du bon pied?Implanter l'AOP... Comment partir du bon pied?
Implanter l'AOP... Comment partir du bon pied?fbourbonnais
 
Dialonics soutenance de projet final (31 aout 2012)
Dialonics soutenance de projet final (31 aout 2012)Dialonics soutenance de projet final (31 aout 2012)
Dialonics soutenance de projet final (31 aout 2012)legendcasio
 
Code Reviews Devoxx France 2012
Code Reviews Devoxx France 2012Code Reviews Devoxx France 2012
Code Reviews Devoxx France 2012Mattias Karlsson
 
Eef 1.0 for eclipse indigo
Eef 1.0 for eclipse indigoEef 1.0 for eclipse indigo
Eef 1.0 for eclipse indigoglefur
 
Webinar Rubedo, la premiere solution cms open source tirant profit des atouts...
Webinar Rubedo, la premiere solution cms open source tirant profit des atouts...Webinar Rubedo, la premiere solution cms open source tirant profit des atouts...
Webinar Rubedo, la premiere solution cms open source tirant profit des atouts...Rubedo, a WebTales solution
 
Enquête sur les usages open source en entreprise
Enquête sur les usages open source en entreprise Enquête sur les usages open source en entreprise
Enquête sur les usages open source en entreprise Ideo - Groupe Netapsys
 
SOLLAN / Atelier Documation - Gérer ses vidéos à l'heure du collaboratif et d...
SOLLAN / Atelier Documation - Gérer ses vidéos à l'heure du collaboratif et d...SOLLAN / Atelier Documation - Gérer ses vidéos à l'heure du collaboratif et d...
SOLLAN / Atelier Documation - Gérer ses vidéos à l'heure du collaboratif et d...Sollan France
 
Redeploiement d’une plateforme eZpublish multisites internationale
Redeploiement d’une plateforme eZpublish multisites internationaleRedeploiement d’une plateforme eZpublish multisites internationale
Redeploiement d’une plateforme eZpublish multisites internationaleKaliop-slide
 
Communication interne : Vers une culture numerique
Communication interne : Vers une culture numeriqueCommunication interne : Vers une culture numerique
Communication interne : Vers une culture numeriqueConseils Atelya
 
Le projet Tiger à l'EPITA
Le projet Tiger à l'EPITALe projet Tiger à l'EPITA
Le projet Tiger à l'EPITAhere_and_there
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureGuillaume Laforge
 
Devoxx france-2013-lecons-cloud
Devoxx france-2013-lecons-cloudDevoxx france-2013-lecons-cloud
Devoxx france-2013-lecons-cloudDali Kilani
 
Réussir l'adhesion des utilisateurs autour d'un projet CRM
Réussir l'adhesion des utilisateurs autour d'un projet CRMRéussir l'adhesion des utilisateurs autour d'un projet CRM
Réussir l'adhesion des utilisateurs autour d'un projet CRME-DEAL
 

Ähnlich wie Initiation à l’AOP (20)

Codedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
Codedarmor 2012 - 09/10 - Eclipse 4 & AcceleoCodedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
Codedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
 
Les pratiques des geants du web
Les pratiques des geants du webLes pratiques des geants du web
Les pratiques des geants du web
 
Implanter l'AOP... Comment partir du bon pied?
Implanter l'AOP... Comment partir du bon pied?Implanter l'AOP... Comment partir du bon pied?
Implanter l'AOP... Comment partir du bon pied?
 
Dialonics soutenance de projet final (31 aout 2012)
Dialonics soutenance de projet final (31 aout 2012)Dialonics soutenance de projet final (31 aout 2012)
Dialonics soutenance de projet final (31 aout 2012)
 
Code Reviews Devoxx France 2012
Code Reviews Devoxx France 2012Code Reviews Devoxx France 2012
Code Reviews Devoxx France 2012
 
Eef 1.0 for eclipse indigo
Eef 1.0 for eclipse indigoEef 1.0 for eclipse indigo
Eef 1.0 for eclipse indigo
 
SQLI - Réduire vos coûts et augmenter la productivité de vos équipes au trav...
SQLI -  Réduire vos coûts et augmenter la productivité de vos équipes au trav...SQLI -  Réduire vos coûts et augmenter la productivité de vos équipes au trav...
SQLI - Réduire vos coûts et augmenter la productivité de vos équipes au trav...
 
2012 vallat complexité
2012 vallat complexité2012 vallat complexité
2012 vallat complexité
 
Webinar Rubedo, la premiere solution cms open source tirant profit des atouts...
Webinar Rubedo, la premiere solution cms open source tirant profit des atouts...Webinar Rubedo, la premiere solution cms open source tirant profit des atouts...
Webinar Rubedo, la premiere solution cms open source tirant profit des atouts...
 
Enquête sur les usages open source en entreprise
Enquête sur les usages open source en entreprise Enquête sur les usages open source en entreprise
Enquête sur les usages open source en entreprise
 
Placer la gestion de contenu vers le Cloud - EMC
Placer la gestion de contenu vers le Cloud - EMCPlacer la gestion de contenu vers le Cloud - EMC
Placer la gestion de contenu vers le Cloud - EMC
 
CM Processus Méthodes
CM Processus MéthodesCM Processus Méthodes
CM Processus Méthodes
 
SOLLAN / Atelier Documation - Gérer ses vidéos à l'heure du collaboratif et d...
SOLLAN / Atelier Documation - Gérer ses vidéos à l'heure du collaboratif et d...SOLLAN / Atelier Documation - Gérer ses vidéos à l'heure du collaboratif et d...
SOLLAN / Atelier Documation - Gérer ses vidéos à l'heure du collaboratif et d...
 
Eclipse Impress
Eclipse ImpressEclipse Impress
Eclipse Impress
 
Redeploiement d’une plateforme eZpublish multisites internationale
Redeploiement d’une plateforme eZpublish multisites internationaleRedeploiement d’une plateforme eZpublish multisites internationale
Redeploiement d’une plateforme eZpublish multisites internationale
 
Communication interne : Vers une culture numerique
Communication interne : Vers une culture numeriqueCommunication interne : Vers une culture numerique
Communication interne : Vers une culture numerique
 
Le projet Tiger à l'EPITA
Le projet Tiger à l'EPITALe projet Tiger à l'EPITA
Le projet Tiger à l'EPITA
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans rupture
 
Devoxx france-2013-lecons-cloud
Devoxx france-2013-lecons-cloudDevoxx france-2013-lecons-cloud
Devoxx france-2013-lecons-cloud
 
Réussir l'adhesion des utilisateurs autour d'un projet CRM
Réussir l'adhesion des utilisateurs autour d'un projet CRMRéussir l'adhesion des utilisateurs autour d'un projet CRM
Réussir l'adhesion des utilisateurs autour d'un projet CRM
 

Initiation à l’AOP

  • 1. Initiation à l’AOP Architecture logicielle © 2012 Elapse Technologies Université Laval Automne 2012
  • 2. Félix-Antoine Bourbonnais Ing. jr, PSM-I Formateur & Coach Agile o Tests automatisés: TDD/ATDD, BDD, … o Orientation objet avancée © 2012 Elapse Technologies o Architecture agile o Réusinage et qualité (Clean Code) elapsetech.com/fab o Agile Scrum @fbourbonnais Concepteur de logiciels linkedin.com/in/fbourbonnais o Pratiques de développement o Java, Python, etc. 2
  • 3. Réchauffement… Qui fait ou a fait de l’AOP dans un projet? © 2012 Elapse Technologies Qui a eu une mauvaise expérience avec l’AOP? Image: Nutdanai Apikhomboonwaroot / FreeDigitalPhotos.net 3
  • 4. © 2012 Elapse Technologies Quelques… NOTIONS PRÉALABLES 4
  • 5. SRP © 2012 Elapse Technologies SOLID Motivational Posters, by Derick Bailey http://lostechies.com/derickbailey/2009/02/11/solid-development-principles-in-motivational-pictures/ 5
  • 6. Gestion des dépendances Objectif: minimiser l’impacts des modifications Et si on change « Display »? © 2012 Elapse Technologies 6
  • 7. Problèmes OO Est-ce que beaucoup de classes risquent d’utiliser Display? Toutes les fonctionnalités sont © 2012 Elapse Technologies utilisées par les figures? Est-ce que Display risque de changer? Dans quel sens devrait être la dépendance? Abstraction? 7
  • 8. Solution OO © 2012 Elapse Technologies SRP? Il faut toujours appeler notify() 8
  • 9. © 2012 Elapse Technologies 9 Solution AO
  • 10. © 2012 Elapse Technologies Les PRÉOCCUPATIONS TRANSVERSES 10
  • 11. Préoccupations transverses Angl.: Crosscutting concerns. © 2012 Elapse Technologies Certaines préoccupations secondaires sont impossibles à regrouper et contaminent plusieurs classes. 11
  • 12. Préoccupations transverses © 2012 Elapse Technologies Enchevêtrement Éparpillement 12
  • 13. Préoccupations transverses Éparpillement (dispersion) Sécurité © 2012 Elapse Technologies 13
  • 14. Préoccupations transverses Enchevêtrement (cohésion) Fonctionnalité principale © 2012 Elapse Technologies Persistance Sécurité Observation 14
  • 15. © 2012 Elapse Technologies Enchevêtrement (1) 15
  • 16. © 2012 Elapse Technologies Enchevêtrement (2) 16
  • 17. © 2012 Elapse Technologies Enchevêtrement (3) 17
  • 18. © 2012 Elapse Technologies Enchevêtrement (4) 18
  • 19. © 2012 Elapse Technologies Enchevêtrement (principale) 19
  • 20. © 2012 Elapse Technologies Enchevêtrement (récapitulatif) 20
  • 21. © 2012 Elapse Technologies 21 Introduction à L’AOP
  • 22. Orientation objet et préoccupations © 2012 Elapse Technologies Théoriquement, chaque classe devrait représenter une seule préoccupation. 22
  • 23. Orientation aspect C A Classe 1 Aspect 1 © 2012 Elapse Technologies A C Aspect 2 Classe 2 A Aspect 3 23
  • 24. AOP © 2012 Elapse Technologies L’AOP est un paradigme 24
  • 25. © 2012 Elapse Technologies Aperçu rapide de… LA TERMINOLOGIE ET DU FONCTIONNEMENT 25
  • 26. Un aspect Un module encapsulant une préoccupation Peu gérer les préoccupations transverses © 2012 Elapse Technologies Généralement une classe « évoluée » o Capacités supplémentaires afin de permettre l’encapsulation de préoccupations transverses 26
  • 27. Contenu typique d’un aspect © 2012 Elapse Technologies Code à Indication Aspect exécuter des cibles 27
  • 28. Aspect en AspectJ public aspect VisitorAspect { /∗ −−−−−−−− Pointcuts −−−−−−−− ∗/ protected pointcut startMethod() : © 2012 Elapse Technologies execution( ∗ start∗(..) ); /∗ −−−−−−−− Advices −−−−−−−− ∗/ after() : startMethod() { printHello(); } } 28
  • 29. © 2012 Elapse Technologies Quelques MAUVAISES PRATIQUES Image: Ambro/ FreeDigitalPhotos.net 29
  • 30. Trop, c’est comme pas assez… Quand 50% du code est composé d’aspects… © 2012 Elapse Technologies Est-ce 50% du code est composé de préoccupations transverses? Image: farconville / FreeDigitalPhotos.net 30
  • 31. L’AOP n’est pas un pansement Suis-je en train d’utiliser l’AOP pour corriger un problème de design? © 2012 Elapse Technologies Ne vous servez pas de l’AOP comme parfum afin de masquer les mauvaises odeurs… Image: digitalart / FreeDigitalPhotos.net 31
  • 32. Le « trip techno » L’AOP c’est trop COOL !! La chute pourrait être douloureuse! © 2012 Elapse Technologies • « 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… » 32
  • 33. © 2012 Elapse Technologies Quelques BONNES PRATIQUES Image: photostock / FreeDigitalPhotos.net 33
  • 34. OO encore d’actualité © 2012 Elapse Technologies Ce qui était vrai en OO l’est encore en AO 34
  • 35. 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 © 2012 Elapse Technologies 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(); } 35
  • 36. Dépendances et couplage N’oubliez pas que l’aspect est couplé à toutes les classes où il © 2012 Elapse Technologies s’injecte*. * Où un point de coupure apparie Image: Salvatore Vuono / FreeDigitalPhotos.net 36
  • 37. 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 © 2012 Elapse Technologies 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. 37 In European Interactive Workshop on Aspects in Software (EIWAS), 2004.
  • 38. © 2012 Elapse Technologies Comment INTRODUIRE DE L’AOP DANS VOTRE PROJET 38
  • 39. Choisir sa technologie © 2012 Elapse Technologies Image: Sura Nualpradid / FreeDigitalPhotos.net 39
  • 40. Considérer la complexité ajoutée Gains © 2012 Elapse Technologies Complexité 40
  • 41. Considérer l’intégration Avec d’autres cadres applicatifs (framework) Le système de © 2012 Elapse Technologies déploiement L’intégrateur continu Les technologie de tests Etc. Image: manostphoto / FreeDigitalPhotos.net 41
  • 42. S’assurer de maîtriser les concepts Rappelez-vous que vous introduisez un nouveau paradigme et non pas simplement une technologie « cool »! © 2012 Elapse Technologies Prototyper Essayer sur un petit projet Bien se documenter Bien former son équipe Image: renjith krishnan / FreeDigitalPhotos.net 42
  • 43. Se discipliner Résistez au « canon pour tuer une mouche » L’AO tourne généralement mal entre les mains de cowboys © 2012 Elapse Technologies Balancez toujours la complexité versus le gain Tester! Image: photostock / FreeDigitalPhotos.net 43
  • 44. © 2012 Elapse Technologies 44 TECHNOLOGIE Choisir sa
  • 45. Quelques cadres pour Java AspectJ Spring-AOP © 2012 Elapse Technologies Guice-AOP … 45
  • 46. AspectJ Le plus complet o Plusieurs primitives o Plusieurs PJ possibles © 2012 Elapse Technologies Extension à Java o Requiert un compilateur d’Aspects o Ou de remplacer le chargement des classes (CL ou Java Agent) 46
  • 47. Spring supporte deux tisseurs Spring AOP © 2012 Elapse Technologies Spring AJ Spring 47
  • 48. Sprint-AOP Java 100% pur o Ne requiert pas de compilateur spécial o Ne requiert pas de Java Agent © 2012 Elapse Technologies o Utilise des « Proxies » dynamiques Limitations o Tissage possible uniquement dans des Beans Spring o Peu de primitives et limitées (ex.: exécution de méthodes) o Ne peut intercepter des appels à « this » 48
  • 49. Spring-Aj Spring peut se servir d’aspects de Spring pour élargir ses fonctionnalités Spring se sert d’AspectJ pour lui-même © 2012 Elapse Technologies @Configurable permet d’injecter des dépendances dans des objets qui ne sont pas des Beans Souvent une mauvaise Spring Spring odeur concernant le AspectJ AJ FW++ design… 49
  • 50. Syntaxe ou tisseur? Tissage Syntaxe (langage) Spring-AOP (proxy) XML © 2012 Elapse Technologies AspectJ @AspectJ Spring-AJ Langage AJ (.aj) 50
  • 51. Google Guice Limitations similaires à Spring-AOP (par « proxies ») Syntaxe propre o Java © 2012 Elapse Technologies o Pas de syntaxe cachée dans les chaînes de caractères des annotations (comme @AspectJ) 51
  • 52. © 2012 Elapse Technologies Choisir son MODE DE TISSAGE 52
  • 53. Deux grandes approches de tissage À la compilation (CTW) © 2012 Elapse Technologies À l’exécution (LTW) 53
  • 54. CTW (Compile-Time Weaving) Tissage à la compilation Remplace généralement le compilateur de Java © 2012 Elapse Technologies Peut tisser uniquement dans le code compilé (pas dans une lib. externe) Produit du Bytecode standard tissé 54
  • 55. LTW (Load-Time Weaving) Tissage lors du chargement de la classe Remplace (assiste) le chargeur de classes de Java (ClassLoader) © 2012 Elapse Technologies Requiert généralement le démarrage de la JVM avec un JavaAgent Peut être problématique avec des JEE Container ou entrer en conflit avec d’autres instrumentations 55
  • 56. © 2012 Elapse Technologies 56 L’INTÉGRATION Considérer
  • 57. AJDT Plugin Eclipse pour AspectJ Désagrément subtile: o Force le CTW sur le projet dans Eclipse quand la nature © 2012 Elapse Technologies « AspectJ » est activée Offre de l’assistance o Complétion (limitée) o Réusinage (limité) o Coloration syntaxique et validateur 57
  • 58. Maven Plugin pour AspectJ Si combiné avec AJDT o Compile avec AJC versus JDT-AJ pour Eclipse © 2012 Elapse Technologies o Toujours faire « mvn clean » pour éviter les problèmes Pour du LTW utilisez le Exec Maven Plugin (ou autre) et passez le JavaAgent 58
  • 59. Spring + AJ Utiliser le Java Agent de Spring plutôt que celui par défaut d’AspectJ Attention à la combinaison Spring-AOP (proxy) et © 2012 Elapse Technologies AJDT 59
  • 60. Autres considérations Maven o Il est possible que les métriques soient comptées en double en CTW. © 2012 Elapse Technologies 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 rabattre sur u Java Agent de la JVM 60
  • 61. 61 © 2012 Elapse Technologies QUESTIONS Période de
  • 62. © 2012 Elapse Technologies Formation conçue par ELAPSE TECHNOLOGIES
  • 63. Nos services Formations o Formations publiques o Formations privées sur mesure en entreprise © 2012 Elapse Technologies Accompagnement d’entreprises o Mentorat et coaching o Diagnostique Service-conseil o Agent de changement o Expertise et conseils de pointe
  • 64. Notre expertise Processus Agile o Scrum, Kanban, … o eXtreme Programming © 2012 Elapse Technologies Pratiques de développement o Tests automatisés (TDD, ATDD, BDD, ...) o Architecture Agile o Réusinage (refactoring) o Qualité (code propre, intégration continue, …)
  • 65. Blogue Suivez nos professionnels sur developpementagile.com © 2012 Elapse Technologies Image: renjith krishnan / FreeDigitalPhotos.net