SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
Introduction       Méthodologie        Taxonomie (1-2)           Métamodélisation (3)            Modélisation et validation (4-5)   Conclusion




               Une taxonomie et un métamodèle pour la détection des
                              défauts de conception


                             Naouel Moha – Duc-loc Huynh – Yann-Gaël Guéhéneuc


                                              GEODES – Groupe de recherche sur les systèmes
                                             ouverts et distribués et en génie logiciel expérimental
                                                            Université de Montréal
                                              {mohanaou, huynhduc, guehene}@iro.umontreal.ca



                                                               LMO 2006




Moha et al.                                                                                                                               1/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction         Méthodologie      Taxonomie (1-2)        Métamodélisation (3)     Modélisation et validation (4-5)   Conclusion



 Plan




        Objectifs de notre travail
        Modéliser les défauts de conception afin de pouvoir les détecter automatiquement
        dans le code.

              1   Introduction
              2   Méthodologie (5 phases)
              3   Phases 1 et 2 : analyse et taxonomie
              4   Phase 3 : métamodélisation
              5   Phases 4 et 5 : modélisation et validation
              6   Conclusion




Moha et al.                                                                                                                     2/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie        Taxonomie (1-2)        Métamodélisation (3)     Modélisation et validation (4-5)   Conclusion



 Les défauts de conception



        Défauts de conception vs. Patrons de conception
        “Mauvaises” solutions à des problèmes récurrents dans les architectures à objets


        Problèmes
               Pas de représentation précise et structurée
               Sous forme de descriptions textuelles sujettes à interprétation
               Difficile de les détecter précisément et efficacement


        Solution
        Représentation précise et structurée des défauts de conception basée sur un
        métamodèle à partir d’une taxonomie des défauts




Moha et al.                                                                                                                     3/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie        Taxonomie (1-2)        Métamodélisation (3)     Modélisation et validation (4-5)   Conclusion



 Motivations



               Pourquoi détecter les défauts de conception ?
                     Améliorer la qualité des architectures à objets
                     Faciliter l’évolution
                     Réduire les coûts de maintenance

               Pourquoi une taxonomie ?
                     Confusion entre : défauts, anti-patrons, problèmes, mauvaises odeurs, anomalies, etc.
                     Définir, comparer et classer les défauts

               Pourquoi un métamodèle ?
                     Limite les ambiguïtés en structurant les concepts
                     Facilite le développement d’algorithmes et d’outils

               Pourquoi une méthodologie ?
                     Définir une démarche systématique à appliquer pour la représentation des défauts
                     Peut être appliquée à d’autres spécifications




Moha et al.                                                                                                                     4/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction          Méthodologie            Taxonomie (1-2)                                   Métamodélisation (3)                                                    Modélisation et validation (4-5)                                                 Conclusion



 Méthodologie en 5 phases



                                                                                       Description textuelle


                                                                                                 Extraction                                                     Défauts
                                                                                             des concepts clefs                                                de patrons
                                                         1   Analyse
                                                                                                                                                                                                 2 Taxonomie
                                                                                                                                                          Anti-patrons

                                                                                                                                                                                       Mauvaises
                                                                                                                    Définir                              Terminologie et                odeurs
                                                                                  Fiches de                      et classifier
                                                                                                                                                          Classification                                                               RootElement
                                                                                    règles

                                                                                                                                                                                                                         Entity                      Element




                                                                                                                                                             Intégrer
                                                                                                             (a
                                                                                                               )I                                                                                                Class            Interface          Method
                                                                                                                        nt
                                                                                fier                     (d                é   gr
                                                                                                           )A                     e
                                                                                                                f fi                  r                                                                                  Métamodèle PADL
                                                                               Véri

                                                                                                                       ne
                                                                                                                          r
                                                                                                                                                    3   Métamodèlisation
                                                                                                                                                                                                           r
                                                                                                                              et                                                                       g re
                                                                                                                                                                                                Inté
                                                                          (c )




                                                                                                                                   co
                                                                                                                                     rr
                                                                                                                                          ig
                                             5 Validation                                                                                      er

                                                                                                       (b) Instancier
                                                             Modèles de défauts                                                                     Métamodèle SADDL                      SAD
               Détection                SwissArmyKnife       Controllerconception
                                                                 de Class
                                                                                                                                                    AntiPatternsRepository
                              Inférer                                                                4 Modélisation
               Algorithmes
                                           Interface                                                                                                    AntiPattern          Pattern              DesignPatternDefect
                                                               Method                  Abstraction

                                                                                                                                                                                           RootElement
                                          Signature                       Cohesion
                                                                        -low                                                                            BadSmell

                                                                                                                                                                                 Entity                        Element




Moha et al.                                                                                                                                                                                                                                                    5/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie        Taxonomie (1-2)         Métamodélisation (3)    Modélisation et validation (4-5)   Conclusion



 Méthodologie en 5 phases
        Blob

                     DataClass4
                     D4_attr                                ControllerClass                      DataClass1
                     getD4_attr()                                                                D1_attr
                     setD4_attr()                    C_attr1 : Data1                             getD1_attr()
                                                     C_attr2 : Data2                             setD1_attr()
                                                     C_attr3
                                                     C_attr4
                                                     C_attr5
                                                     ...

                                                     m1(D : Data1)
                                                     m2(D: Data2)                                    DataClass2
                                                     m3() {... m1(this.C_attr1)...}               D2_attr1
                                                     m4() {... m2(this.C_attr2)...}               D2_attr2
                                                     m5() {...uses this.C_attr3...}               getD2_attr1()
                     DataClass5                      m6(D : Data1)                                setD2_attr1()
                     D5_attr                         m7(D : Data2)                                getD2_attr2()
                     getD5_attr()                    .                                            setD2_attr2()
                     setD5_attr()                    .
                                                     .
                                                     .
                                                     .
                                                     .
                                                     .                                           DataClass3
                                                     m31() {...uses this.C_attr3...}             D3_attr
                                                     m32() {...m8()...}                          getD3_attr()
                                                     m33() {...}                                 setD3_attr()
                                                     m34() {...}
                                                     m35() {...}



Moha et al.                                                                                                                     6/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie        Taxonomie (1-2)        Métamodélisation (3)     Modélisation et validation (4-5)   Conclusion



 Méthodologie en 5 phases




          RULE_CARD : Blob {
          RULE : Blob {ASSOC: associated FROM:           ControllerClass ONE TO: DataClass MANY } ;
          RULE : ControllerClass {INTER LargeClassLowCohesion ClassName } ;
          RULE : LargeClassLowCohesion {INTER LargeClass ClassLowCohesion } ;
          RULE : LargeClass {INTER (METRIC: NM, HIGH) (METRIC: NA, HIGH) } ;
          RULE : ClassLowCohesion {(METRIC: LCOM, HIGH) } ;
          RULE : ClassName {(SEMANTIC: CLASSNAME, {System, Subsystem, Manager, Driver, Controller}) } ;
          RULE : DataClass {INTER (STRUCT: METHOD, Accessor) (METRIC: LCOM, LOW) } ;
          } ;



        Phase 1 : analyse
            Description littéraire → Synthétique




Moha et al.                                                                                                                     7/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction          Méthodologie            Taxonomie (1-2)                                   Métamodélisation (3)                                                    Modélisation et validation (4-5)                                                 Conclusion



 Méthodologie en 5 phases



                                                                                       Description textuelle


                                                                                                 Extraction                                                     Défauts
                                                                                             des concepts clefs                                                de patrons
                                                         1   Analyse
                                                                                                                                                                                                 2 Taxonomie
                                                                                                                                                          Anti-patrons

                                                                                                                                                                                       Mauvaises
                                                                                                                    Définir                              Terminologie et                odeurs
                                                                                  Fiches de                      et classifier
                                                                                                                                                          Classification                                                               RootElement
                                                                                    règles

                                                                                                                                                                                                                         Entity                      Element




                                                                                                                                                             Intégrer
                                                                                                             (a
                                                                                                               )I                                                                                                Class            Interface          Method
                                                                                                                        nt
                                                                                fier                     (d                é   gr
                                                                                                           )A                     e
                                                                                                                f fi                  r                                                                                  Métamodèle PADL
                                                                               Véri

                                                                                                                       ne
                                                                                                                          r
                                                                                                                                                    3   Métamodèlisation
                                                                                                                                                                                                           r
                                                                                                                              et                                                                       g re
                                                                                                                                                                                                Inté
                                                                          (c )




                                                                                                                                   co
                                                                                                                                     rr
                                                                                                                                          ig
                                             5 Validation                                                                                      er

                                                                                                       (b) Instancier
                                                             Modèles de défauts                                                                     Métamodèle SADDL                      SAD
               Détection                SwissArmyKnife       Controllerconception
                                                                 de Class
                                                                                                                                                    AntiPatternsRepository
                              Inférer                                                                4 Modélisation
               Algorithmes
                                           Interface                                                                                                    AntiPattern          Pattern              DesignPatternDefect
                                                               Method                  Abstraction

                                                                                                                                                                                           RootElement
                                          Signature                       Cohesion
                                                                        -low                                                                            BadSmell

                                                                                                                                                                                 Entity                        Element




Moha et al.                                                                                                                                                                                                                                                    8/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction          Méthodologie            Taxonomie (1-2)                                   Métamodélisation (3)                                                    Modélisation et validation (4-5)                                                 Conclusion



 Méthodologie en 5 phases



                                                                                       Description textuelle


                                                                                                 Extraction                                                     Défauts
                                                                                             des concepts clefs                                                de patrons
                                                         1   Analyse
                                                                                                                                                                                                 2 Taxonomie
                                                                                                                                                          Anti-patrons

                                                                                                                                                                                       Mauvaises
                                                                                                                    Définir                              Terminologie et                odeurs
                                                                                  Fiches de                      et classifier
                                                                                                                                                          Classification                                                               RootElement
                                                                                    règles

                                                                                                                                                                                                                         Entity                      Element




                                                                                                                                                             Intégrer
                                                                                                             (a
                                                                                                               )I                                                                                                Class            Interface          Method
                                                                                                                        nt
                                                                                fier                     (d                é   gr
                                                                                                           )A                     e
                                                                                                                f fi                  r                                                                                  Métamodèle PADL
                                                                               Véri

                                                                                                                       ne
                                                                                                                          r
                                                                                                                                                    3   Métamodèlisation
                                                                                                                                                                                                           r
                                                                                                                              et                                                                       g re
                                                                                                                                                                                                Inté
                                                                          (c )




                                                                                                                                   co
                                                                                                                                     rr
                                                                                                                                          ig
                                             5 Validation                                                                                      er

                                                                                                       (b) Instancier
                                                             Modèles de défauts                                                                     Métamodèle SADDL                      SAD
               Détection                SwissArmyKnife       Controllerconception
                                                                 de Class
                                                                                                                                                    AntiPatternsRepository
                              Inférer                                                                4 Modélisation
               Algorithmes
                                           Interface                                                                                                    AntiPattern          Pattern              DesignPatternDefect
                                                               Method                  Abstraction

                                                                                                                                                                                           RootElement
                                          Signature                       Cohesion
                                                                        -low                                                                            BadSmell

                                                                                                                                                                                 Entity                        Element




Moha et al.                                                                                                                                                                                                                                                    9/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction          Méthodologie            Taxonomie (1-2)                                   Métamodélisation (3)                                                    Modélisation et validation (4-5)                                                 Conclusion



 Méthodologie en 5 phases



                                                                                       Description textuelle


                                                                                                 Extraction                                                     Défauts
                                                                                             des concepts clefs                                                de patrons
                                                         1   Analyse
                                                                                                                                                                                                 2 Taxonomie
                                                                                                                                                          Anti-patrons

                                                                                                                                                                                       Mauvaises
                                                                                                                    Définir                              Terminologie et                odeurs
                                                                                  Fiches de                      et classifier
                                                                                                                                                          Classification                                                               RootElement
                                                                                    règles

                                                                                                                                                                                                                         Entity                      Element




                                                                                                                                                             Intégrer
                                                                                                             (a
                                                                                                               )I                                                                                                Class            Interface          Method
                                                                                                                        nt
                                                                                fier                     (d                é   gr
                                                                                                           )A                     e
                                                                                                                f fi                  r                                                                                  Métamodèle PADL
                                                                               Véri

                                                                                                                       ne
                                                                                                                          r
                                                                                                                                                    3   Métamodèlisation
                                                                                                                                                                                                           r
                                                                                                                              et                                                                       g re
                                                                                                                                                                                                Inté
                                                                          (c )




                                                                                                                                   co
                                                                                                                                     rr
                                                                                                                                          ig
                                             5 Validation                                                                                      er

                                                                                                       (b) Instancier
                                                             Modèles de défauts                                                                     Métamodèle SADDL                      SAD
               Détection                SwissArmyKnife       Controllerconception
                                                                 de Class
                                                                                                                                                    AntiPatternsRepository
                              Inférer                                                                4 Modélisation
               Algorithmes
                                           Interface                                                                                                    AntiPattern          Pattern              DesignPatternDefect
                                                               Method                  Abstraction

                                                                                                                                                                                           RootElement
                                          Signature                       Cohesion
                                                                        -low                                                                            BadSmell

                                                                                                                                                                                 Entity                        Element




Moha et al.                                                                                                                                                                                                                                                    10/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie        Taxonomie (1-2)          Métamodélisation (3)            Modélisation et validation (4-5)   Conclusion



 Méthodologie en 5 phases

        Phase 4 : modélisation
               Modèle obtenu pour le Blob

                                                                                           Blob




                                                                                                1
                                                   Data Class                     Controller Class
                                                                  *          1
                                  Method



                                             *                        *    many                          many
                                        Accessor             Field               Field              Method
                                        -get ( )
                                        -set ( )

                                                   Cohesion                              Cohesion
                                                   -high                                 -low




Moha et al.                                                                                                                             11/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction          Méthodologie            Taxonomie (1-2)                                   Métamodélisation (3)                                                    Modélisation et validation (4-5)                                                 Conclusion



 Méthodologie en 5 phases



                                                                                       Description textuelle


                                                                                                 Extraction                                                     Défauts
                                                                                             des concepts clefs                                                de patrons
                                                         1   Analyse
                                                                                                                                                                                                 2 Taxonomie
                                                                                                                                                          Anti-patrons

                                                                                                                                                                                       Mauvaises
                                                                                                                    Définir                              Terminologie et                odeurs
                                                                                  Fiches de                      et classifier
                                                                                                                                                          Classification                                                               RootElement
                                                                                    règles

                                                                                                                                                                                                                         Entity                      Element




                                                                                                                                                             Intégrer
                                                                                                             (a
                                                                                                               )I                                                                                                Class            Interface          Method
                                                                                                                        nt
                                                                                fier                     (d                é   gr
                                                                                                           )A                     e
                                                                                                                f fi                  r                                                                                  Métamodèle PADL
                                                                               Véri

                                                                                                                       ne
                                                                                                                          r
                                                                                                                                                    3   Métamodèlisation
                                                                                                                                                                                                           r
                                                                                                                              et                                                                       g re
                                                                                                                                                                                                Inté
                                                                          (c )




                                                                                                                                   co
                                                                                                                                     rr
                                                                                                                                          ig
                                             5 Validation                                                                                      er

                                                                                                       (b) Instancier
                                                             Modèles de défauts                                                                     Métamodèle SADDL                      SAD
               Détection                SwissArmyKnife       Controllerconception
                                                                 de Class
                                                                                                                                                    AntiPatternsRepository
                              Inférer                                                                4 Modélisation
               Algorithmes
                                           Interface                                                                                                    AntiPattern          Pattern              DesignPatternDefect
                                                               Method                  Abstraction

                                                                                                                                                                                           RootElement
                                          Signature                       Cohesion
                                                                        -low                                                                            BadSmell

                                                                                                                                                                                 Entity                        Element




Moha et al.                                                                                                                                                                                                                                                    12/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie        Taxonomie (1-2)        Métamodélisation (3)     Modélisation et validation (4-5)   Conclusion



 Phases 1 et 2 : analyse et taxonomie




        Phase 1 : Analyse
               Extraction des concepts clefs
               Spécification des fiches de règles


        Phase 2 : Taxonomie
               Terminologie et classification
                     Les défauts de patrons
                     Les anti-patrons
                     Les symptômes
                     Carte des défauts




Moha et al.                                                                                                                    13/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction         Méthodologie         Taxonomie (1-2)     Métamodélisation (3)     Modélisation et validation (4-5)   Conclusion



 Les défauts de patrons
        Terminologie
               Les défauts de patrons sont de mauvaises applications des solutions des patrons
               de conception [MOH 05c]
        Classification
            2 types :
                 1    Les patrons déformés
                 2    Les patrons dégradés
               Basée sur la classification de Gamma et al.

                                                                 Degraded

                                    DesignPatternDefect

                                                                 Distorted             Singleton

                                                                                       Builder

                                                                 Creational            FactoryMethod

                                                                                       AbstractFactory
                                                 Pattern          Structural
                                                                                       Prototype

                                                                 Behavioral




Moha et al.                                                                                                                    14/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie        Taxonomie (1-2)        Métamodélisation (3)            Modélisation et validation (4-5)   Conclusion



 Les anti-patrons [BRO 98]

        Terminologie
               “Mauvaises” solutions à des problèmes récurrents dans les architectures à objets,
               dont l’utilisation a des effets négatifs sur la qualité

                                                                                     Blob

                                                                 Structural


                                             Inter-Class        Behavioral           Poltergeist


                                                                 Semantic
                                                                                                      Stovepipe
                                                                                     DataVision
                    AntiPattern                                                                       LavaFlow
                                                                                     TooMuchCode
                                                                                                      SpaghettiCode
                                                                 Structural          SwissArmyKnife
                                                                                                      Functional Decomposition
                                                                                     TinyService
                                             Intra-Class        Behavioral                            Cut&Paste Programming
                                                                                     MultiService

                                                                 Semantic




Moha et al.                                                                                                                           15/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie        Taxonomie (1-2)        Métamodélisation (3)           Modélisation et validation (4-5)   Conclusion



 Les symptômes ou mauvaises odeurs
        Terminologie
            Indicateurs de la présence possible de défauts
            Structures dans le code source qui suggèrent la possibilité d’une restructuration
            du code [FOW 99]
            Exemples : code dupliqué, larges classes & longues méthodes
                                                                                     Message Chain


                                                                Structural           ShotgunSurgery


                                                                                     Duplicated Code
                                            Inter-Class         Behavioral       Transient Associations




                                                                Semantic
                    BadSmell                                                         Comments
                                                                Semantic




                                            Intra-Class         Behavioral       ShortDuration

                                                                                                          Dead Code
                                                                                                          Stateless
                                                                Structural                                 LongMethod
                                                                                                          Unjustified Code
                                                                                                           Divergent Change
                                                                                                          LargeClass
Moha et al.                                                                                               DataClass                  16/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie               Taxonomie (1-2)                    Métamodélisation (3)                         Modélisation et validation (4-5)              Conclusion



 Carte des défauts de conception

        Relations entre les défauts de conception

                                                                                                                      No Polymorphism
                                                      Low Cohesion
                                                                           has
                                               have                                                         has             No Inheritance
                       Abstraction                                                                                    has
                                                                                  LargeClass
                                            Signatures
                                 relates                                                                                                     is
                                                                                                                   Spaghetti
                                                                 is                                  is              Code                                  Process
                                                                                                                                                           Oriented
                                                  has

                                                                                                                            has       Class & Global
                             LargeInterface                                        has                                                   Variables

                                                                                                          DeadCode
                                       is                    Blob
                                                                                                                                    LavaFlow
                     SwissArmy                   linked                                SingleAction                                                      {TODO, To be
                       Knife                                                                                         has                               replaced, In Flux}

                                                                                 ShortDuration
                                            DataClass
                                                                                       Complex
                                                                                                                                        Lack of         Comments
                                                                                                                                     documentation

                                                                      is
                                                                                  is
                                                              does                             has
                                                                                                             Message
                                                                                                              Chain               UnjustifiedCode


                                                                            Poltergeist
                                                                                                             has




Moha et al.                                                                                                                                                                      17/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie                      Taxonomie (1-2)                                       Métamodélisation (3)                                          Modélisation et validation (4-5)         Conclusion



 Phase 3 : Métamodélisation
        PADL (Pattern and Abstract-level Description Language)
           Décrit la structure des programmes OO et les patrons de conception [ALB 02]
        SADDL étend PADL (Software Architectural Defects Description Language)
           Décrit les défauts de conception
                                                       SAD                                                                                                 Légende

                     AntiPatternsRepository                                                                                                                ElemSADDL Élément du métamodèle SADDL

                                                                                                                                                           ElemPADL         Élément du métamodèle PADL
                                0..*
                     related
                               AntiPattern                      DesignPatternDefect
                        0..*
                                                    BadSmell
                                             0..*
                                                                                           0..*
                                                                          resemble                                                           0..*   Role      contains     0..* Relationship

                                                                                        1..*
                                                                                                         0..*                                          targets
                                                                            Pattern                                             declares
                                                                                                                related

                                                                  +compare(Pattern)()                                RootElement                                    Abstraction
                                                                                                                     -name
                                                                                                                     -visibility             0..*            0..*                 related
                                              Observer       Composite                                                                                                    0..*


                                                                                                                                                                                 Cohesion
                                                                                                                                                                 0..*
                                                       Coupling                   0..*                                                              Element
                                                                                                                                      0..*
                                                                                   Entity
                                                                                                                                             +attachTo(Element)() 0..1
                                                                inherit
                                                                                                  0..*          targetEntity
                                                                                 0..*


                                                                                                                       Assoc                 Method 0..*                  Comment           Field    Parameter
                                       Class          shouldimplement            Interface                                                             has same
                                                                          0..*                                                                           name

                                                                                                                          targetAssoc

                                                                                                                                      DelegatingMethod Accessor                  ClassVariable   GlobalVariable
                                                                                                                               0..1
                                                                                                                                                       Signature
                                                                                               Composition                      Agregation


Moha et al.                                                                                                                                                                                                            18/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie        Taxonomie (1-2)        Métamodélisation (3)     Modélisation et validation (4-5)   Conclusion



 Phases 4-5 : Modélisation et validation




        Modélisation
               Instancier des défauts de conception à partir de SADDL sous forme de modèles
               Quinzaine de défauts dont une dizaine d’anti-patrons


        Validation
               Modèles ↔ Fiches
               Corriger et enrichir le métamodèle
               Inférer les algorithmes de détection




Moha et al.                                                                                                                    19/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie                   Taxonomie (1-2)             Métamodélisation (3)             Modélisation et validation (4-5)          Conclusion



 Les défauts de patron




                    Subject                                                            ConcreteSubject
                                      observers                      Observer
                                                                                      -subjectState         observers                     Observer

               +Attach(Observer)()                                                    +GetState()
               +Detach(Observer)()                                                    +SetState()
               +Notify()()                                                            +Attach(Observer)()
                                                                                      +Detach(Observer)()
                                                                                      +Notify()()




                ConcreteSubject                        subject   ConcreteObserver                                          su
                                                                                                                             b je
                                                                                                                                 ct   ConcreteObserver
                -subjectState                                    -observerState
                +GetState()                                                                                                           -observerState
                                                                 +Update()
                +SetState()                                                                                                           +Update()

                                     (a) Patron Observer                                                    (b) Patron déformé



                                                  F IG .: Le patron Observer et son patron déformé




Moha et al.                                                                                                                                                   20/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction               Méthodologie             Taxonomie (1-2)          Métamodélisation (3)                Modélisation et validation (4-5)          Conclusion



 Les anti-patrons




          SwissArmyKnife                  Controller Class



                             implements                               RULE_CARD : SwissArmyKnife {

                    1                                                 RULE : SwissArmyKnife {AGGREG: associated FROM:    Interface ONE TO: Signature MANY} ;
                                                  many
               Interface                                              RULE : Interface {IMPL:   ControllerClass } ;
                                              Method
                                                                      RULE : ControllerClass {INTER LargeClassLowCohesion ClassName } ;
                                                                      RULE : LargeClassLowCohesion {INTER (METRIC: NM, HIGH) (METRIC: LCOM, HIGH)} ;

                                implements                            RULE : ClassName {(SEMANTIC: CLASSNAME, {System, Subsystem, Manager, Driver,
                                                         Cohesion                              Controller}) } ;
                    many
                                                         -low         RULE : Signature {(METRIC: NM, HIGH) } ;
               Signature
                                                                      } ;


                                (a) Modèle                                                            (b) Fiche de règles



                                                                    F IG .: Le couteau suisse




Moha et al.                                                                                                                                                     21/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie        Taxonomie (1-2)        Métamodélisation (3)          Modélisation et validation (4-5)   Conclusion



 Les symptômes




                 Shotgun Surgery                          Divergent Change



                              1                                        1
                         Class     1                               Class                    Method       1
                                                                                     1..*
                           1..*                                                               1..*
                                         Coupling                                                             Cohesion
                                         -high                                                                -low
                         (a) Shotgun Surgery                                 (b) Divergent Change



                             F IG .: Les modèles du Shotgun Surgery et du Divergent Change




Moha et al.                                                                                                                         22/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction          Méthodologie            Taxonomie (1-2)                                   Métamodélisation (3)                                                    Modélisation et validation (4-5)                                                 Conclusion



 Méthodologie en 5 phases



                                                                                       Description textuelle


                                                                                                 Extraction                                                     Défauts
                                                                                             des concepts clefs                                                de patrons
                                                         1   Analyse
                                                                                                                                                                                                 2 Taxonomie
                                                                                                                                                          Anti-patrons

                                                                                                                                                                                       Mauvaises
                                                                                                                    Définir                              Terminologie et                odeurs
                                                                                  Fiches de                      et classifier
                                                                                                                                                          Classification                                                               RootElement
                                                                                    règles

                                                                                                                                                                                                                         Entity                      Element




                                                                                                                                                             Intégrer
                                                                                                             (a
                                                                                                               )I                                                                                                Class            Interface          Method
                                                                                                                        nt
                                                                                fier                     (d                é   gr
                                                                                                           )A                     e
                                                                                                                f fi                  r                                                                                  Métamodèle PADL
                                                                               Véri

                                                                                                                       ne
                                                                                                                          r
                                                                                                                                                    3   Métamodèlisation
                                                                                                                                                                                                           r
                                                                                                                              et                                                                       g re
                                                                                                                                                                                                Inté
                                                                          (c )




                                                                                                                                   co
                                                                                                                                     rr
                                                                                                                                          ig
                                             5 Validation                                                                                      er

                                                                                                       (b) Instancier
                                                             Modèles de défauts                                                                     Métamodèle SADDL                      SAD
               Détection                SwissArmyKnife       Controllerconception
                                                                 de Class
                                                                                                                                                    AntiPatternsRepository
                              Inférer                                                                4 Modélisation
               Algorithmes
                                           Interface                                                                                                    AntiPattern          Pattern              DesignPatternDefect
                                                               Method                  Abstraction

                                                                                                                                                                                           RootElement
                                          Signature                       Cohesion
                                                                        -low                                                                            BadSmell

                                                                                                                                                                                 Entity                        Element




Moha et al.                                                                                                                                                                                                                                                    23/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie        Taxonomie (1-2)        Métamodélisation (3)     Modélisation et validation (4-5)   Conclusion



 Experimentations

        Objectif
        Montrer l’utilité de notre méthodologie et de son implémentation (métamodèle SADDL)


        Hypothèses
               Possibilité de spécifier un grand nombre de défauts de conception
               La précision de nos algos est raisonnable


        Objets
        5 programmes open source entre 140 et 1200 classes.


        Traitement
               4 anti-patrons : Blob, Functional decomposition, Swiss Army Knife, Spaghetti
               Code
               Implémentation des algorithmes de détection
               Validation manuelle : Précision vs. Rappel

Moha et al.                                                                                                                    24/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction         Méthodologie      Taxonomie (1-2)        Métamodélisation (3)     Modélisation et validation (4-5)       Conclusion



 Détection des défauts de conception

                                                              Blob
                             ArgoUML          Azureus     GanttProject      PMD                QuickUML               Total
                             113KLOC         192KLOC        21KLOC        42KLOC                9KLOC
                               1230c           1449c           188c         423c                  142c
              Effectifs          91             143             19           15                     3                 271
                               70/91           82/143         10/19         3/15                   1/3              166/271
              Precisions
                              = 76.9%         = 57.3%       = 52.6%        = 20%                = 33.3%              61.5%
                                                      Swiss Army Knife
                             ArgoUML          Azureus     GanttProject      PMD                QuickUML              Total
              Effectifs          2               22              0            0                    0                   24
                                2/2            22/22             -            -                    -                 24/24
              Precisions
                              = 100%          = 100%           = -%         = -%                 = -%               = 100%
                                                   Functional Decomposition
                             ArgoUML          Azureus     GanttProject      PMD                QuickUML               Total
              Effectifs         14               22              9           13                    1                   59
                               9/14            19/22             0            0                    0                 28/59
              Precisions
                             = 64.2%          = 86.3%         = 0%         = 0%                  = 0%               = 47.6%
                                                       Spaghetti Code
                             ArgoUML          Azureus     GanttProject      PMD                QuickUML               Total
              Effectifs         26               35              8           11                    1                   81
                               21/26           29/35             6            6                    0                 62/81
              Precisions
                             = 80.7%          = 82.8%         = 75%       = 54.5%                = 0%               = 76.6%


Moha et al.                                                                                                                        25/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction       Méthodologie        Taxonomie (1-2)        Métamodélisation (3)     Modélisation et validation (4-5)   Conclusion



 Conclusion

        Objectifs de notre travail
        Modéliser les défauts de conception afin de pouvoir les détecter automatiquement
        dans le code.


        Objectifs atteints
               Manque de travaux sur la spécification des défauts
               Nécessiter de représentations précises et structurées
               Une taxonomie et un métamodèle
               Fournir un cadre de développement de techniques et d’outils pour la détection des
               défauts


        À faire...
               Affiner la description des règles (règles comportementales)
               Augmenter notre base de défauts
               Améliorer la précision de nos algorithmes de détection
               Développer des techniques de correction

Moha et al.                                                                                                                    26/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
Introduction        Méthodologie          Taxonomie (1-2)         Métamodélisation (3)          Modélisation et validation (4-5)      Conclusion



 Références




      ALB 02 ALBIN-AMIOT H., COINTE P., GUÉHÉNEUC Y.-G., Un méta-modèle pour coupler application et détection des design patterns,
             DAO M., HUCHARD M., Eds., actes du 8e colloque Langages et Modèles à Objets, vol. 8, numéro 1–2/2002 de RSTI L’objet,
             Hermès Science Publications, janvier 2002, p. 41–58.
      BRO 98 BROWN W. J., MALVEAU R. C., BROWN W. H., III H. W. M., MOWBRAY T. J., Anti Patterns : Refactoring Software, Architectures,
             and Projects in Crisis, John Wiley and Sons, 1st édition, March 1998.
      FOW 99 FOWLER M., Refactoring – Improving the Design of Existing Code, Addison- Wesley, 1st édition, June 1999.
      GUÉ 01 GUÉHÉNEUC Y.-G., ALBIN-AMIOT H., Using Design Patterns and Constraints to Automate the Detection and Correction of
             Inter-Class Design Defects, LI Q., RIEHLE R., POUR G., MEYER B., Eds., proceedings of the 39th conference on the Technology
                                                                                                       ˝
             of Object-Oriented Languages and Systems, IEEE Computer Society Press, July 2001, p. 296U 305.
      GAM 94 GAMMA E., HELM R., JOHNSON R., VLISSIDES J., Design Patterns – Elements of Reusable Object-Oriented Software,
             Addison-Wesley, 1st édition, 1994.
    MOH 05c MOHA N., HUYNH D.-L., GUÉHÉNEUC Y.-G., A Taxonomy and a First Study of Design Pattern Defects, ANTONIOL G.,
            GUÉHÉNEUC Y.-G., Eds., Proceedings of the STEP International Workshop on Design Pattern Theory and Practice (IWDPTP05),
            September 2005.




Moha et al.                                                                                                                                27/27
LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception

Más contenido relacionado

Más de Ptidej Team

From IoT to Software Miniaturisation
From IoT to Software MiniaturisationFrom IoT to Software Miniaturisation
From IoT to Software MiniaturisationPtidej Team
 
Presentation by Lionel Briand
Presentation by Lionel BriandPresentation by Lionel Briand
Presentation by Lionel BriandPtidej Team
 
Manel Abdellatif
Manel AbdellatifManel Abdellatif
Manel AbdellatifPtidej Team
 
Azadeh Kermansaravi
Azadeh KermansaraviAzadeh Kermansaravi
Azadeh KermansaraviPtidej Team
 
CSED - Manel Grichi
CSED - Manel GrichiCSED - Manel Grichi
CSED - Manel GrichiPtidej Team
 
Cristiano Politowski
Cristiano PolitowskiCristiano Politowski
Cristiano PolitowskiPtidej Team
 
Will io t trigger the next software crisis
Will io t trigger the next software crisisWill io t trigger the next software crisis
Will io t trigger the next software crisisPtidej Team
 
Thesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.pptThesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.pptPtidej Team
 
Thesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptThesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptPtidej Team
 

Más de Ptidej Team (20)

From IoT to Software Miniaturisation
From IoT to Software MiniaturisationFrom IoT to Software Miniaturisation
From IoT to Software Miniaturisation
 
Presentation
PresentationPresentation
Presentation
 
Presentation
PresentationPresentation
Presentation
 
Presentation
PresentationPresentation
Presentation
 
Presentation by Lionel Briand
Presentation by Lionel BriandPresentation by Lionel Briand
Presentation by Lionel Briand
 
Manel Abdellatif
Manel AbdellatifManel Abdellatif
Manel Abdellatif
 
Azadeh Kermansaravi
Azadeh KermansaraviAzadeh Kermansaravi
Azadeh Kermansaravi
 
Mouna Abidi
Mouna AbidiMouna Abidi
Mouna Abidi
 
CSED - Manel Grichi
CSED - Manel GrichiCSED - Manel Grichi
CSED - Manel Grichi
 
Cristiano Politowski
Cristiano PolitowskiCristiano Politowski
Cristiano Politowski
 
Will io t trigger the next software crisis
Will io t trigger the next software crisisWill io t trigger the next software crisis
Will io t trigger the next software crisis
 
MIPA
MIPAMIPA
MIPA
 
Thesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.pptThesis+of+laleh+eshkevari.ppt
Thesis+of+laleh+eshkevari.ppt
 
Thesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.pptThesis+of+nesrine+abdelkafi.ppt
Thesis+of+nesrine+abdelkafi.ppt
 
Medicine15.ppt
Medicine15.pptMedicine15.ppt
Medicine15.ppt
 
Qrs17b.ppt
Qrs17b.pptQrs17b.ppt
Qrs17b.ppt
 
Icpc11c.ppt
Icpc11c.pptIcpc11c.ppt
Icpc11c.ppt
 
Icsme16.ppt
Icsme16.pptIcsme16.ppt
Icsme16.ppt
 
Msr17a.ppt
Msr17a.pptMsr17a.ppt
Msr17a.ppt
 
Icsoc15.ppt
Icsoc15.pptIcsoc15.ppt
Icsoc15.ppt
 

LMO06.ppt

  • 1. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Une taxonomie et un métamodèle pour la détection des défauts de conception Naouel Moha – Duc-loc Huynh – Yann-Gaël Guéhéneuc GEODES – Groupe de recherche sur les systèmes ouverts et distribués et en génie logiciel expérimental Université de Montréal {mohanaou, huynhduc, guehene}@iro.umontreal.ca LMO 2006 Moha et al. 1/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 2. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Plan Objectifs de notre travail Modéliser les défauts de conception afin de pouvoir les détecter automatiquement dans le code. 1 Introduction 2 Méthodologie (5 phases) 3 Phases 1 et 2 : analyse et taxonomie 4 Phase 3 : métamodélisation 5 Phases 4 et 5 : modélisation et validation 6 Conclusion Moha et al. 2/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 3. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Les défauts de conception Défauts de conception vs. Patrons de conception “Mauvaises” solutions à des problèmes récurrents dans les architectures à objets Problèmes Pas de représentation précise et structurée Sous forme de descriptions textuelles sujettes à interprétation Difficile de les détecter précisément et efficacement Solution Représentation précise et structurée des défauts de conception basée sur un métamodèle à partir d’une taxonomie des défauts Moha et al. 3/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 4. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Motivations Pourquoi détecter les défauts de conception ? Améliorer la qualité des architectures à objets Faciliter l’évolution Réduire les coûts de maintenance Pourquoi une taxonomie ? Confusion entre : défauts, anti-patrons, problèmes, mauvaises odeurs, anomalies, etc. Définir, comparer et classer les défauts Pourquoi un métamodèle ? Limite les ambiguïtés en structurant les concepts Facilite le développement d’algorithmes et d’outils Pourquoi une méthodologie ? Définir une démarche systématique à appliquer pour la représentation des défauts Peut être appliquée à d’autres spécifications Moha et al. 4/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 5. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Description textuelle Extraction Défauts des concepts clefs de patrons 1 Analyse 2 Taxonomie Anti-patrons Mauvaises Définir Terminologie et odeurs Fiches de et classifier Classification RootElement règles Entity Element Intégrer (a )I Class Interface Method nt fier (d é gr )A e f fi r Métamodèle PADL Véri ne r 3 Métamodèlisation r et g re Inté (c ) co rr ig 5 Validation er (b) Instancier Modèles de défauts Métamodèle SADDL SAD Détection SwissArmyKnife Controllerconception de Class AntiPatternsRepository Inférer 4 Modélisation Algorithmes Interface AntiPattern Pattern DesignPatternDefect Method Abstraction RootElement Signature Cohesion -low BadSmell Entity Element Moha et al. 5/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 6. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Blob DataClass4 D4_attr ControllerClass DataClass1 getD4_attr() D1_attr setD4_attr() C_attr1 : Data1 getD1_attr() C_attr2 : Data2 setD1_attr() C_attr3 C_attr4 C_attr5 ... m1(D : Data1) m2(D: Data2) DataClass2 m3() {... m1(this.C_attr1)...} D2_attr1 m4() {... m2(this.C_attr2)...} D2_attr2 m5() {...uses this.C_attr3...} getD2_attr1() DataClass5 m6(D : Data1) setD2_attr1() D5_attr m7(D : Data2) getD2_attr2() getD5_attr() . setD2_attr2() setD5_attr() . . . . . . DataClass3 m31() {...uses this.C_attr3...} D3_attr m32() {...m8()...} getD3_attr() m33() {...} setD3_attr() m34() {...} m35() {...} Moha et al. 6/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 7. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases RULE_CARD : Blob { RULE : Blob {ASSOC: associated FROM: ControllerClass ONE TO: DataClass MANY } ; RULE : ControllerClass {INTER LargeClassLowCohesion ClassName } ; RULE : LargeClassLowCohesion {INTER LargeClass ClassLowCohesion } ; RULE : LargeClass {INTER (METRIC: NM, HIGH) (METRIC: NA, HIGH) } ; RULE : ClassLowCohesion {(METRIC: LCOM, HIGH) } ; RULE : ClassName {(SEMANTIC: CLASSNAME, {System, Subsystem, Manager, Driver, Controller}) } ; RULE : DataClass {INTER (STRUCT: METHOD, Accessor) (METRIC: LCOM, LOW) } ; } ; Phase 1 : analyse Description littéraire → Synthétique Moha et al. 7/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 8. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Description textuelle Extraction Défauts des concepts clefs de patrons 1 Analyse 2 Taxonomie Anti-patrons Mauvaises Définir Terminologie et odeurs Fiches de et classifier Classification RootElement règles Entity Element Intégrer (a )I Class Interface Method nt fier (d é gr )A e f fi r Métamodèle PADL Véri ne r 3 Métamodèlisation r et g re Inté (c ) co rr ig 5 Validation er (b) Instancier Modèles de défauts Métamodèle SADDL SAD Détection SwissArmyKnife Controllerconception de Class AntiPatternsRepository Inférer 4 Modélisation Algorithmes Interface AntiPattern Pattern DesignPatternDefect Method Abstraction RootElement Signature Cohesion -low BadSmell Entity Element Moha et al. 8/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 9. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Description textuelle Extraction Défauts des concepts clefs de patrons 1 Analyse 2 Taxonomie Anti-patrons Mauvaises Définir Terminologie et odeurs Fiches de et classifier Classification RootElement règles Entity Element Intégrer (a )I Class Interface Method nt fier (d é gr )A e f fi r Métamodèle PADL Véri ne r 3 Métamodèlisation r et g re Inté (c ) co rr ig 5 Validation er (b) Instancier Modèles de défauts Métamodèle SADDL SAD Détection SwissArmyKnife Controllerconception de Class AntiPatternsRepository Inférer 4 Modélisation Algorithmes Interface AntiPattern Pattern DesignPatternDefect Method Abstraction RootElement Signature Cohesion -low BadSmell Entity Element Moha et al. 9/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 10. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Description textuelle Extraction Défauts des concepts clefs de patrons 1 Analyse 2 Taxonomie Anti-patrons Mauvaises Définir Terminologie et odeurs Fiches de et classifier Classification RootElement règles Entity Element Intégrer (a )I Class Interface Method nt fier (d é gr )A e f fi r Métamodèle PADL Véri ne r 3 Métamodèlisation r et g re Inté (c ) co rr ig 5 Validation er (b) Instancier Modèles de défauts Métamodèle SADDL SAD Détection SwissArmyKnife Controllerconception de Class AntiPatternsRepository Inférer 4 Modélisation Algorithmes Interface AntiPattern Pattern DesignPatternDefect Method Abstraction RootElement Signature Cohesion -low BadSmell Entity Element Moha et al. 10/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 11. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Phase 4 : modélisation Modèle obtenu pour le Blob Blob 1 Data Class Controller Class * 1 Method * * many many Accessor Field Field Method -get ( ) -set ( ) Cohesion Cohesion -high -low Moha et al. 11/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 12. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Description textuelle Extraction Défauts des concepts clefs de patrons 1 Analyse 2 Taxonomie Anti-patrons Mauvaises Définir Terminologie et odeurs Fiches de et classifier Classification RootElement règles Entity Element Intégrer (a )I Class Interface Method nt fier (d é gr )A e f fi r Métamodèle PADL Véri ne r 3 Métamodèlisation r et g re Inté (c ) co rr ig 5 Validation er (b) Instancier Modèles de défauts Métamodèle SADDL SAD Détection SwissArmyKnife Controllerconception de Class AntiPatternsRepository Inférer 4 Modélisation Algorithmes Interface AntiPattern Pattern DesignPatternDefect Method Abstraction RootElement Signature Cohesion -low BadSmell Entity Element Moha et al. 12/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 13. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Phases 1 et 2 : analyse et taxonomie Phase 1 : Analyse Extraction des concepts clefs Spécification des fiches de règles Phase 2 : Taxonomie Terminologie et classification Les défauts de patrons Les anti-patrons Les symptômes Carte des défauts Moha et al. 13/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 14. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Les défauts de patrons Terminologie Les défauts de patrons sont de mauvaises applications des solutions des patrons de conception [MOH 05c] Classification 2 types : 1 Les patrons déformés 2 Les patrons dégradés Basée sur la classification de Gamma et al. Degraded DesignPatternDefect Distorted Singleton Builder Creational FactoryMethod AbstractFactory Pattern Structural Prototype Behavioral Moha et al. 14/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 15. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Les anti-patrons [BRO 98] Terminologie “Mauvaises” solutions à des problèmes récurrents dans les architectures à objets, dont l’utilisation a des effets négatifs sur la qualité Blob Structural Inter-Class Behavioral Poltergeist Semantic Stovepipe DataVision AntiPattern LavaFlow TooMuchCode SpaghettiCode Structural SwissArmyKnife Functional Decomposition TinyService Intra-Class Behavioral Cut&Paste Programming MultiService Semantic Moha et al. 15/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 16. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Les symptômes ou mauvaises odeurs Terminologie Indicateurs de la présence possible de défauts Structures dans le code source qui suggèrent la possibilité d’une restructuration du code [FOW 99] Exemples : code dupliqué, larges classes & longues méthodes Message Chain Structural ShotgunSurgery Duplicated Code Inter-Class Behavioral Transient Associations Semantic BadSmell Comments Semantic Intra-Class Behavioral ShortDuration Dead Code Stateless Structural LongMethod Unjustified Code Divergent Change LargeClass Moha et al. DataClass 16/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 17. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Carte des défauts de conception Relations entre les défauts de conception No Polymorphism Low Cohesion has have has No Inheritance Abstraction has LargeClass Signatures relates is Spaghetti is is Code Process Oriented has has Class & Global LargeInterface has Variables DeadCode is Blob LavaFlow SwissArmy linked SingleAction {TODO, To be Knife has replaced, In Flux} ShortDuration DataClass Complex Lack of Comments documentation is is does has Message Chain UnjustifiedCode Poltergeist has Moha et al. 17/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 18. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Phase 3 : Métamodélisation PADL (Pattern and Abstract-level Description Language) Décrit la structure des programmes OO et les patrons de conception [ALB 02] SADDL étend PADL (Software Architectural Defects Description Language) Décrit les défauts de conception SAD Légende AntiPatternsRepository ElemSADDL Élément du métamodèle SADDL ElemPADL Élément du métamodèle PADL 0..* related AntiPattern DesignPatternDefect 0..* BadSmell 0..* 0..* resemble 0..* Role contains 0..* Relationship 1..* 0..* targets Pattern declares related +compare(Pattern)() RootElement Abstraction -name -visibility 0..* 0..* related Observer Composite 0..* Cohesion 0..* Coupling 0..* Element 0..* Entity +attachTo(Element)() 0..1 inherit 0..* targetEntity 0..* Assoc Method 0..* Comment Field Parameter Class shouldimplement Interface has same 0..* name targetAssoc DelegatingMethod Accessor ClassVariable GlobalVariable 0..1 Signature Composition Agregation Moha et al. 18/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 19. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Phases 4-5 : Modélisation et validation Modélisation Instancier des défauts de conception à partir de SADDL sous forme de modèles Quinzaine de défauts dont une dizaine d’anti-patrons Validation Modèles ↔ Fiches Corriger et enrichir le métamodèle Inférer les algorithmes de détection Moha et al. 19/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 20. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Les défauts de patron Subject ConcreteSubject observers Observer -subjectState observers Observer +Attach(Observer)() +GetState() +Detach(Observer)() +SetState() +Notify()() +Attach(Observer)() +Detach(Observer)() +Notify()() ConcreteSubject subject ConcreteObserver su b je ct ConcreteObserver -subjectState -observerState +GetState() -observerState +Update() +SetState() +Update() (a) Patron Observer (b) Patron déformé F IG .: Le patron Observer et son patron déformé Moha et al. 20/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 21. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Les anti-patrons SwissArmyKnife Controller Class implements RULE_CARD : SwissArmyKnife { 1 RULE : SwissArmyKnife {AGGREG: associated FROM: Interface ONE TO: Signature MANY} ; many Interface RULE : Interface {IMPL: ControllerClass } ; Method RULE : ControllerClass {INTER LargeClassLowCohesion ClassName } ; RULE : LargeClassLowCohesion {INTER (METRIC: NM, HIGH) (METRIC: LCOM, HIGH)} ; implements RULE : ClassName {(SEMANTIC: CLASSNAME, {System, Subsystem, Manager, Driver, Cohesion Controller}) } ; many -low RULE : Signature {(METRIC: NM, HIGH) } ; Signature } ; (a) Modèle (b) Fiche de règles F IG .: Le couteau suisse Moha et al. 21/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 22. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Les symptômes Shotgun Surgery Divergent Change 1 1 Class 1 Class Method 1 1..* 1..* 1..* Coupling Cohesion -high -low (a) Shotgun Surgery (b) Divergent Change F IG .: Les modèles du Shotgun Surgery et du Divergent Change Moha et al. 22/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 23. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Méthodologie en 5 phases Description textuelle Extraction Défauts des concepts clefs de patrons 1 Analyse 2 Taxonomie Anti-patrons Mauvaises Définir Terminologie et odeurs Fiches de et classifier Classification RootElement règles Entity Element Intégrer (a )I Class Interface Method nt fier (d é gr )A e f fi r Métamodèle PADL Véri ne r 3 Métamodèlisation r et g re Inté (c ) co rr ig 5 Validation er (b) Instancier Modèles de défauts Métamodèle SADDL SAD Détection SwissArmyKnife Controllerconception de Class AntiPatternsRepository Inférer 4 Modélisation Algorithmes Interface AntiPattern Pattern DesignPatternDefect Method Abstraction RootElement Signature Cohesion -low BadSmell Entity Element Moha et al. 23/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 24. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Experimentations Objectif Montrer l’utilité de notre méthodologie et de son implémentation (métamodèle SADDL) Hypothèses Possibilité de spécifier un grand nombre de défauts de conception La précision de nos algos est raisonnable Objets 5 programmes open source entre 140 et 1200 classes. Traitement 4 anti-patrons : Blob, Functional decomposition, Swiss Army Knife, Spaghetti Code Implémentation des algorithmes de détection Validation manuelle : Précision vs. Rappel Moha et al. 24/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 25. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Détection des défauts de conception Blob ArgoUML Azureus GanttProject PMD QuickUML Total 113KLOC 192KLOC 21KLOC 42KLOC 9KLOC 1230c 1449c 188c 423c 142c Effectifs 91 143 19 15 3 271 70/91 82/143 10/19 3/15 1/3 166/271 Precisions = 76.9% = 57.3% = 52.6% = 20% = 33.3% 61.5% Swiss Army Knife ArgoUML Azureus GanttProject PMD QuickUML Total Effectifs 2 22 0 0 0 24 2/2 22/22 - - - 24/24 Precisions = 100% = 100% = -% = -% = -% = 100% Functional Decomposition ArgoUML Azureus GanttProject PMD QuickUML Total Effectifs 14 22 9 13 1 59 9/14 19/22 0 0 0 28/59 Precisions = 64.2% = 86.3% = 0% = 0% = 0% = 47.6% Spaghetti Code ArgoUML Azureus GanttProject PMD QuickUML Total Effectifs 26 35 8 11 1 81 21/26 29/35 6 6 0 62/81 Precisions = 80.7% = 82.8% = 75% = 54.5% = 0% = 76.6% Moha et al. 25/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 26. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Conclusion Objectifs de notre travail Modéliser les défauts de conception afin de pouvoir les détecter automatiquement dans le code. Objectifs atteints Manque de travaux sur la spécification des défauts Nécessiter de représentations précises et structurées Une taxonomie et un métamodèle Fournir un cadre de développement de techniques et d’outils pour la détection des défauts À faire... Affiner la description des règles (règles comportementales) Augmenter notre base de défauts Améliorer la précision de nos algorithmes de détection Développer des techniques de correction Moha et al. 26/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception
  • 27. Introduction Méthodologie Taxonomie (1-2) Métamodélisation (3) Modélisation et validation (4-5) Conclusion Références ALB 02 ALBIN-AMIOT H., COINTE P., GUÉHÉNEUC Y.-G., Un méta-modèle pour coupler application et détection des design patterns, DAO M., HUCHARD M., Eds., actes du 8e colloque Langages et Modèles à Objets, vol. 8, numéro 1–2/2002 de RSTI L’objet, Hermès Science Publications, janvier 2002, p. 41–58. BRO 98 BROWN W. J., MALVEAU R. C., BROWN W. H., III H. W. M., MOWBRAY T. J., Anti Patterns : Refactoring Software, Architectures, and Projects in Crisis, John Wiley and Sons, 1st édition, March 1998. FOW 99 FOWLER M., Refactoring – Improving the Design of Existing Code, Addison- Wesley, 1st édition, June 1999. GUÉ 01 GUÉHÉNEUC Y.-G., ALBIN-AMIOT H., Using Design Patterns and Constraints to Automate the Detection and Correction of Inter-Class Design Defects, LI Q., RIEHLE R., POUR G., MEYER B., Eds., proceedings of the 39th conference on the Technology ˝ of Object-Oriented Languages and Systems, IEEE Computer Society Press, July 2001, p. 296U 305. GAM 94 GAMMA E., HELM R., JOHNSON R., VLISSIDES J., Design Patterns – Elements of Reusable Object-Oriented Software, Addison-Wesley, 1st édition, 1994. MOH 05c MOHA N., HUYNH D.-L., GUÉHÉNEUC Y.-G., A Taxonomy and a First Study of Design Pattern Defects, ANTONIOL G., GUÉHÉNEUC Y.-G., Eds., Proceedings of the STEP International Workshop on Design Pattern Theory and Practice (IWDPTP05), September 2005. Moha et al. 27/27 LMO 2006, Une taxonomie et un métamodèle pour la détection des défauts de conception