Génération automatique d’algorithmes de
  détection des défauts de conception


Naouel Moha, Foutse Khomh, Yann-Gaël Guéhéneuc,
   Laurence Duchien, Anne-Françoise Le Meur


             Ptidej Team, GEODES, Université de Montréal, Canada
     LIFL, INRIA Lille - Nord Europe / ADAM Team, Université de Lille, France


                                  LMO’08
                               5-7 mars, 2008
Contexte




Moha ©     Génération automatique d’algorithmes de détection des défauts de conception   2
Contexte




Moha ©     Génération automatique d’algorithmes de détection des défauts de conception   3
Défauts de conception ?
    Patrons de conception sont de “bonnes” solutions à des
    problèmes de conception récurrents

    Défauts de conception (DCs)
         sont de “mauvaises” solutions à des problèmes récurrents
         2 catégories:
            Problèmes de haut niveau (global) : antipatterns [Brown 98]
            Problèmes de bas niveau (local) : mauvaises odeurs* [Fowler 99]

≠   “ déviations de spécifications ou d’exigences qui peuvent entraîner des
    défaillances dans les operations ”


    * Certaines mauvaises odeurs peuvent être considérées comme
         défauts de haut niveau

Moha ©               Génération automatique d’algorithmes de détection des défauts de conception   4
Défauts de conception ?
  2 exemples de défauts de conception [Brown 98]

                           Blob (God Class)
                           “ Procedural-style design leads to one object with a
                           lion’s share of the responsibilities while most other
                           objects only hold data or execute simple processes ”


                                 Large classe contrôleur

                                 Beaucoup de champs et méthodes avec une
                                 faible cohésion*

                                 Dépendent des données localisées dans des
                                 classes de données associées

                               * À quel point les méthodes sont étroitement liées aux variables
                            d'instance de la classe.
Moha ©         Génération automatique d’algorithmes de détection des défauts de conception        5
Défauts de conception ?
  2 exemples de défauts de conception [Brown 98]

                           Spaghetti Code
                           “ Ad hoc software structure makes it difficult to extend
                           and optimize code. ”


                                 Pensée procédurale dans la programmation OO

                                 Manque de structure : pas d’héritage, pas de
                                 réutilisation, pas de polymorphisme

                                 Longues méthodes sans paramètres avec une
                                 faible cohésion

                                 Noms des classes suggèrent une
                                 programmation procédurale

                                 Utilisation excessive de variables globales
Moha ©         Génération automatique d’algorithmes de détection des défauts de conception   6
Motivation
   Pourquoi il est important de détecter les DCs ?
         DCs atténuent la qualité des architectures OO et entravent leur
         évolution et leur maintenance

         La maintenance est coûteuse à cause des DCs [PER 92] : ajout,
         debuggage, et évolution des fonctionnalités sont plus difficiles

         Une bonne architecture logicielle sans DCs: plus facile à
         comprendre, changer, et donc maintenir


   Motivation
         Atteindre un haut niveau de qualité logicielle
         Réduire les coûts du développement logiciel et de maintenance



Moha ©               Génération automatique d’algorithmes de détection des défauts de conception   7
Method DECOR




                                   Specification




                                                        Processing




                                                                                                  Validation
                                                                            Detection
         Analysis
         Domain




Moha ©              Génération automatique d’algorithmes de détection des défauts de conception                8
Method DECOR




                                          Specification




                                                              Processing




                                                                                                         Validation
                                                                                   Detection
                Analysis
                Domain




     Contributions
         Génération automatique des algorithmes de détection

         Évaluation des algorithmes générés en terme de précision et de
         rappel
Moha ©                     Génération automatique d’algorithmes de détection des défauts de conception                9
Method DECOR




                                   Specification




                                                        Processing




                                                                                                  Validation
                                                                            Detection
         Analysis
         Domain




Moha ©              Génération automatique d’algorithmes de détection des défauts de conception                10
Method DECOR




                                   Specification




                                                        Processing




                                                                                                  Validation
                                                                            Detection
         Analysis
         Domain




Moha ©              Génération automatique d’algorithmes de détection des défauts de conception                11
DECOR Method




Spécifications
                                                                                     On all defects                                                     On each defect                                                   On each system
                                                                                                                                                                                             Source code                      Source code
                                                                                                            1                                       2                                  3                                 4                                 5




                                                                                                                                    Specification
                                                                                                                                                                                             of the system                    of the system




                                                                                                                                                                          Processing




                                                                                                                                                                                                                                              Validation
                                                                                                                 Vocabulary




                                                                                                                                                                                                             Detection
                                                                                                      Analysis
                                                                                                      Domain
                                                                         Text-based descriptions                                                         Specifications                     Operational                      Suspicious                         Classes having
                                                                            of design defects                                                                                              specifications                     classes                           design defects
                                                                                                                 Taxonomy
                                                                           Brown et al. (1998)
                                                                            Demeyer (2002)
                                                                             Dudney (2003)
                                                                                                                                                                                                       Marinescu (2004)           Marinescu (2004)
                                                                             Fowler (1999)                                    Marinescu (2004)
                                                                                                                                                                                                       Alikacem (2006)             Munro (2005)
                                                                              Riel (1996)                                      Munro (2005)
                                                                                                                                                                                              Travassos : manual detection (1999)
                                                                            Webster (1995)                                    Alikacem (2006)
                                                                                                                                                                                              Tools: SmallLint, PMD, CROCOPAT




SADSL (Software Architectural Defect Specification Language)                                                                                                                [LMO’06]
           Langage pour spécifier les DCs basé sur un méta-modèle

    RULE_CARD : SpaghettiCode {

     ...

     RULE: LongMethodMethodNoParameter { INTER LongMethod MethodNoParameter };
     RULE: LongMethod             { METRIC       LOC_METHOD        VERY_HIGH                          10.0 };
     RULE: MethodNoParameter { METRIC            NMNOPARAM        VERY_HIGH                        10.0 };

     ...

     RULE: NoInheritance          { METRIC       DIT     1   0.0 } ;
     RULE: NoPolymorphism         { STRUCT       NO_POLYMORPHISM } ;

     RULE: ProceduralNameGlobalVariable { UNION ProceduralName GlobalVariable };
     RULE: ProceduralName         { LEXIC       CLASS_NAME        (Make, Create, System, Exec) };

     RULE: UseGlobalVariable { STRUCT            USE_GLOBAL_VARIABLE };
    } ;




Moha ©                  Génération automatique d’algorithmes de détection des défauts de conception                                                                                                                                                        12
DECOR Method




 Spécifications
                                                                              On all defects                                                     On each defect                                                   On each system
                                                                                                                                                                                      Source code                      Source code
                                                                                                     1                                       2                                  3                                 4                                 5




                                                                                                                             Specification
                                                                                                                                                                                      of the system                    of the system




                                                                                                                                                                   Processing




                                                                                                                                                                                                                                       Validation
                                                                                                          Vocabulary




                                                                                                                                                                                                      Detection
                                                                                               Analysis
                                                                                               Domain
                                                                  Text-based descriptions                                                         Specifications                     Operational                      Suspicious                         Classes having
                                                                     of design defects                                                                                              specifications                     classes                           design defects
                                                                                                          Taxonomy
                                                                    Brown et al. (1998)
                                                                     Demeyer (2002)
                                                                      Dudney (2003)
                                                                                                                                                                                                Marinescu (2004)           Marinescu (2004)
                                                                      Fowler (1999)                                    Marinescu (2004)
                                                                                                                                                                                                Alikacem (2006)             Munro (2005)
                                                                       Riel (1996)                                      Munro (2005)
                                                                                                                                                                                       Travassos : manual detection (1999)
                                                                     Webster (1995)                                    Alikacem (2006)
                                                                                                                                                                                       Tools: SmallLint, PMD, CROCOPAT




Méta-modèle SADDL (Software Architectural Defect Definition Language)




Moha ©           Génération automatique d’algorithmes de détection des défauts de conception                                                                                                                                                        13
Method DECOR




                                   Specification




                                                        Processing




                                                                                                  Validation
                                                                            Detection
         Analysis
         Domain




Moha ©              Génération automatique d’algorithmes de détection des défauts de conception                14
Method DECOR




                                   Specification




                                                      Generation




                                                                                                  Validation
                                                      Algorithm




                                                                            Detection
         Analysis
         Domain




Moha ©              Génération automatique d’algorithmes de détection des défauts de conception                15
DECOR Method




Génération des algos
                                                                      On all defects                                                     On each defect                                                   On each system
                                                                                                                                                                              Source code                      Source code
                                                                                             1                                       2                                  3                                 4                                 5




                                                                                                                     Specification
                                                                                                                                                                              of the system                    of the system




                                                                                                                                                           Processing




                                                                                                                                                                                                                               Validation
                                                                                                  Vocabulary




                                                                                                                                                                                              Detection
                                                                                       Analysis
                                                                                       Domain
                                                          Text-based descriptions                                                         Specifications                     Operational                      Suspicious                         Classes having
                                                             of design defects                                                                                              specifications                     classes                           design defects
                                                                                                  Taxonomy
                                                            Brown et al. (1998)
                                                             Demeyer (2002)
                                                              Dudney (2003)
                                                                                                                                                                                        Marinescu (2004)           Marinescu (2004)
                                                              Fowler (1999)                                    Marinescu (2004)
                                                                                                                                                                                        Alikacem (2006)             Munro (2005)
                                                               Riel (1996)                                      Munro (2005)
                                                                                                                                                                               Travassos : manual detection (1999)
                                                             Webster (1995)                                    Alikacem (2006)
                                                                                                                                                                               Tools: SmallLint, PMD, CROCOPAT




Moha ©   Génération automatique d’algorithmes de détection des défauts de conception                                                                                                                                                        16
DECOR Method




Génération des algos
                                                                      On all defects                                                     On each defect                                                   On each system
                                                                                                                                                                              Source code                      Source code
                                                                                             1                                       2                                  3                                 4                                 5




                                                                                                                     Specification
                                                                                                                                                                              of the system                    of the system




                                                                                                                                                           Processing




                                                                                                                                                                                                                               Validation
                                                                                                  Vocabulary




                                                                                                                                                                                              Detection
                                                                                       Analysis
                                                                                       Domain
                                                          Text-based descriptions                                                         Specifications                     Operational                      Suspicious                         Classes having
                                                             of design defects                                                                                              specifications                     classes                           design defects
                                                                                                  Taxonomy
                                                            Brown et al. (1998)
                                                             Demeyer (2002)
                                                              Dudney (2003)
                                                                                                                                                                                        Marinescu (2004)           Marinescu (2004)
                                                              Fowler (1999)                                    Marinescu (2004)
                                                                                                                                                                                        Alikacem (2006)             Munro (2005)
                                                               Riel (1996)                                      Munro (2005)
                                                                                                                                                                               Travassos : manual detection (1999)
                                                             Webster (1995)                                    Alikacem (2006)
                                                                                                                                                                               Tools: SmallLint, PMD, CROCOPAT




Moha ©   Génération automatique d’algorithmes de détection des défauts de conception                                                                                                                                                        17
DECOR Method




    Génération des algos
                                                                                      On all defects                                                     On each defect                                                   On each system
                                                                                                                                                                                              Source code                      Source code
                                                                                                             1                                       2                                  3                                 4                                 5




                                                                                                                                     Specification
                                                                                                                                                                                              of the system                    of the system




                                                                                                                                                                           Processing




                                                                                                                                                                                                                                               Validation
                                                                                                                  Vocabulary




                                                                                                                                                                                                              Detection
                                                                                                       Analysis
                                                                                                       Domain
                                                                          Text-based descriptions                                                         Specifications                     Operational                      Suspicious                         Classes having
                                                                             of design defects                                                                                              specifications                     classes                           design defects
                                                                                                                  Taxonomy
                                                                            Brown et al. (1998)
                                                                             Demeyer (2002)
                                                                              Dudney (2003)
                                                                                                                                                                                                        Marinescu (2004)           Marinescu (2004)
                                                                              Fowler (1999)                                    Marinescu (2004)
                                                                                                                                                                                                        Alikacem (2006)             Munro (2005)
                                                                               Riel (1996)                                      Munro (2005)
                                                                                                                                                                                               Travassos : manual detection (1999)
                                                                             Webster (1995)                                    Alikacem (2006)
                                                                                                                                                                                               Tools: SmallLint, PMD, CROCOPAT




    Complexité : O((c+op) X n) Plateforme SAD
-     c : le nombre de propriétés              -        Méta-modèle pour représenter les programmes OO
-     op : le nombre d’opérateurs              -        Un répertoire de métriques
-     n : le nombre de classes                 -        Des services pour analyser to analyse des relations
                                                        structurelles
                                               -        Des services pour appliquer des analyses
                                                        structurelles et lexicales


Moha ©                   Génération automatique d’algorithmes de détection des défauts de conception                                                                                                                                                        18
DECOR Method




Génération des algos
                                                                                      On all defects                                                     On each defect                                                   On each system
                                                                                                                                                                                              Source code                      Source code
                                                                                                             1                                       2                                  3                                 4                                 5




                                                                                                                                     Specification
                                                                                                                                                                                              of the system                    of the system




                                                                                                                                                                           Processing




                                                                                                                                                                                                                                               Validation
                                                                                                                  Vocabulary




                                                                                                                                                                                                              Detection
                                                                                                       Analysis
                                                                                                       Domain
                                                                          Text-based descriptions                                                         Specifications                     Operational                      Suspicious                         Classes having
                                                                             of design defects                                                                                              specifications                     classes                           design defects
                                                                                                                  Taxonomy
                                                                            Brown et al. (1998)
                                                                             Demeyer (2002)
                                                                              Dudney (2003)
                                                                                                                                                                                                        Marinescu (2004)           Marinescu (2004)
                                                                              Fowler (1999)                                    Marinescu (2004)
                                                                                                                                                                                                        Alikacem (2006)             Munro (2005)
                                                                               Riel (1996)                                      Munro (2005)
                                                                                                                                                                                               Travassos : manual detection (1999)
                                                                             Webster (1995)                                    Alikacem (2006)
                                                                                                                                                                                               Tools: SmallLint, PMD, CROCOPAT




  RULE: LongMethod   { METRIC   LOC_METHOD     VERY_HIGH     10.0 };



                                                              1 public class <CODESMELL>Detection
                                                              2    extends CodeSmellDetection
                                                              3    implements ICodeSmellDetection {
                                                              4    public Set performDetection() {
                                                              5      IClass c = iteratorOnClasses.next();
                                                              6      LOCofSetOfClasses.add(
                                                              7      Metrics.compute(<METRIC>, c));
                                                              8      ...
                                                              9      BoxPlot boxPlot = new BoxPlot(
                                                              10       <METRIC>ofSetOfClasses, <FUZZINESS>);
                                                              11     Map setOfOutliers =
                                                              12       boxPlot.<ORDINAL_VALUE>();
                                                              13     ...
                                                              14     suspiciousCodeSmells.add( new CodeSmell(
                                                              15       <CODESMELL>, setOfOutliers));
                                                              16     ...
                                                              17     return suspiciousCodeSmells;
                                                              18 }


              Visiteur                                                                  Gabarit




Moha ©                   Génération automatique d’algorithmes de détection des défauts de conception                                                                                                                                                        19
DECOR Method




Génération des algos
                                                                                      On all defects                                                     On each defect                                                   On each system
                                                                                                                                                                                              Source code                      Source code
                                                                                                             1                                       2                                  3                                 4                                 5




                                                                                                                                     Specification
                                                                                                                                                                                              of the system                    of the system




                                                                                                                                                                           Processing




                                                                                                                                                                                                                                               Validation
                                                                                                                  Vocabulary




                                                                                                                                                                                                              Detection
                                                                                                       Analysis
                                                                                                       Domain
                                                                          Text-based descriptions                                                         Specifications                     Operational                      Suspicious                         Classes having
                                                                             of design defects                                                                                              specifications                     classes                           design defects
                                                                                                                  Taxonomy
                                                                            Brown et al. (1998)
                                                                             Demeyer (2002)
                                                                              Dudney (2003)
                                                                                                                                                                                                        Marinescu (2004)           Marinescu (2004)
                                                                              Fowler (1999)                                    Marinescu (2004)
                                                                                                                                                                                                        Alikacem (2006)             Munro (2005)
                                                                               Riel (1996)                                      Munro (2005)
                                                                                                                                                                                               Travassos : manual detection (1999)
                                                                             Webster (1995)                                    Alikacem (2006)
                                                                                                                                                                                               Tools: SmallLint, PMD, CROCOPAT




  RULE: LongMethod   { METRIC   LOC_METHOD     VERY_HIGH     10.0 };




              Visiteur                                                    Code généré




Moha ©                   Génération automatique d’algorithmes de détection des défauts de conception                                                                                                                                                        20
DECOR Method




Génération des algos
                                                                                      On all defects                                                     On each defect                                                   On each system
                                                                                                                                                                                              Source code                      Source code
                                                                                                             1                                       2                                  3                                 4                                 5




                                                                                                                                     Specification
                                                                                                                                                                                              of the system                    of the system




                                                                                                                                                                           Processing




                                                                                                                                                                                                                                               Validation
                                                                                                                  Vocabulary




                                                                                                                                                                                                              Detection
                                                                                                       Analysis
                                                                                                       Domain
                                                                          Text-based descriptions                                                         Specifications                     Operational                      Suspicious                         Classes having
                                                                             of design defects                                                                                              specifications                     classes                           design defects
                                                                                                                  Taxonomy
                                                                            Brown et al. (1998)
                                                                             Demeyer (2002)
                                                                              Dudney (2003)
                                                                                                                                                                                                        Marinescu (2004)           Marinescu (2004)
                                                                              Fowler (1999)                                    Marinescu (2004)
                                                                                                                                                                                                        Alikacem (2006)             Munro (2005)
                                                                               Riel (1996)                                      Munro (2005)
                                                                                                                                                                                               Travassos : manual detection (1999)
                                                                             Webster (1995)                                    Alikacem (2006)
                                                                                                                                                                                               Tools: SmallLint, PMD, CROCOPAT




  RULE: LongMethod   { METRIC   LOC_METHOD     VERY_HIGH     10.0 };




  Box-plot pour les métriques de type ordinal




Moha ©                   Génération automatique d’algorithmes de détection des défauts de conception                                                                                                                                                        21
Method DECOR




                                   Specification




                                                      Generation




                                                                                                  Validation
                                                      Algorithm




                                                                            Detection
         Analysis
         Domain




Moha ©              Génération automatique d’algorithmes de détection des défauts de conception                22
Method DECOR




                                   Specification




                                                      Generation




                                                                                                  Validation
                                                      Algorithm




                                                                            Detection
         Analysis
         Domain




Moha ©              Génération automatique d’algorithmes de détection des défauts de conception                23
Expérimentations
But : évaluer les algorithmes générés en terme de précision et rappel

Xerces: 71,217LOC, 513 classes et 162 interfaces

                     Nbre de           Défauts             Défauts                                     Temps de
         Défauts                                                             Précision        Rappel
                     classes          existants            détectés                                    détection
Blob                                 39    (7,6%)         44    (8,6%)         88,6%           100%      2,45s

Functional Decomp.                   15    (2,9%)         29    (5,6%)         51,7%           100%      0,91s
                        513
Spaghetti Code                       46    (9,0%)         76 (14,8%)           60,5%           100%      0,23s

Swiss Army Knife                     23     (4,5%)        56 (10,9%)           41,1%           100%      0,08s




Moha ©               Génération automatique d’algorithmes de détection des défauts de conception             24
Démonstration




Moha ©   Génération automatique d’algorithmes de détection des défauts de conception   25
Conclusion
    Method DECOR
    Méthode pour générer des algorithmes de détection des DCs

    Contributions
         Processus explicite de génération des algorithmes de détection

         Évaluation des algorithmes de détection en terme de précision et
         de rappel

    Travaux futurs
         -   Expérimentations sur d’autres systèmes et défauts
         -   Plus de flexibilité dans la génération de code en utilisant XML
         -   Intégrer les plateformes existantes



Moha ©               Génération automatique d’algorithmes de détection des défauts de conception   26
Questions
         Contact: mohanaou@iro.umontreal.ca
                  http://www-etud.iro.umontreal.ca/~mohanaou




         Merci pour votre attention !

Moha ©                 Génération automatique d’algorithmes de détection des défauts de conception   27

LMO08a.ppt

  • 1.
    Génération automatique d’algorithmesde détection des défauts de conception Naouel Moha, Foutse Khomh, Yann-Gaël Guéhéneuc, Laurence Duchien, Anne-Françoise Le Meur Ptidej Team, GEODES, Université de Montréal, Canada LIFL, INRIA Lille - Nord Europe / ADAM Team, Université de Lille, France LMO’08 5-7 mars, 2008
  • 2.
    Contexte Moha © Génération automatique d’algorithmes de détection des défauts de conception 2
  • 3.
    Contexte Moha © Génération automatique d’algorithmes de détection des défauts de conception 3
  • 4.
    Défauts de conception? Patrons de conception sont de “bonnes” solutions à des problèmes de conception récurrents Défauts de conception (DCs) sont de “mauvaises” solutions à des problèmes récurrents 2 catégories: Problèmes de haut niveau (global) : antipatterns [Brown 98] Problèmes de bas niveau (local) : mauvaises odeurs* [Fowler 99] ≠ “ déviations de spécifications ou d’exigences qui peuvent entraîner des défaillances dans les operations ” * Certaines mauvaises odeurs peuvent être considérées comme défauts de haut niveau Moha © Génération automatique d’algorithmes de détection des défauts de conception 4
  • 5.
    Défauts de conception? 2 exemples de défauts de conception [Brown 98] Blob (God Class) “ Procedural-style design leads to one object with a lion’s share of the responsibilities while most other objects only hold data or execute simple processes ” Large classe contrôleur Beaucoup de champs et méthodes avec une faible cohésion* Dépendent des données localisées dans des classes de données associées * À quel point les méthodes sont étroitement liées aux variables d'instance de la classe. Moha © Génération automatique d’algorithmes de détection des défauts de conception 5
  • 6.
    Défauts de conception? 2 exemples de défauts de conception [Brown 98] Spaghetti Code “ Ad hoc software structure makes it difficult to extend and optimize code. ” Pensée procédurale dans la programmation OO Manque de structure : pas d’héritage, pas de réutilisation, pas de polymorphisme Longues méthodes sans paramètres avec une faible cohésion Noms des classes suggèrent une programmation procédurale Utilisation excessive de variables globales Moha © Génération automatique d’algorithmes de détection des défauts de conception 6
  • 7.
    Motivation Pourquoi il est important de détecter les DCs ? DCs atténuent la qualité des architectures OO et entravent leur évolution et leur maintenance La maintenance est coûteuse à cause des DCs [PER 92] : ajout, debuggage, et évolution des fonctionnalités sont plus difficiles Une bonne architecture logicielle sans DCs: plus facile à comprendre, changer, et donc maintenir Motivation Atteindre un haut niveau de qualité logicielle Réduire les coûts du développement logiciel et de maintenance Moha © Génération automatique d’algorithmes de détection des défauts de conception 7
  • 8.
    Method DECOR Specification Processing Validation Detection Analysis Domain Moha © Génération automatique d’algorithmes de détection des défauts de conception 8
  • 9.
    Method DECOR Specification Processing Validation Detection Analysis Domain Contributions Génération automatique des algorithmes de détection Évaluation des algorithmes générés en terme de précision et de rappel Moha © Génération automatique d’algorithmes de détection des défauts de conception 9
  • 10.
    Method DECOR Specification Processing Validation Detection Analysis Domain Moha © Génération automatique d’algorithmes de détection des défauts de conception 10
  • 11.
    Method DECOR Specification Processing Validation Detection Analysis Domain Moha © Génération automatique d’algorithmes de détection des défauts de conception 11
  • 12.
    DECOR Method Spécifications On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPAT SADSL (Software Architectural Defect Specification Language) [LMO’06] Langage pour spécifier les DCs basé sur un méta-modèle RULE_CARD : SpaghettiCode { ... RULE: LongMethodMethodNoParameter { INTER LongMethod MethodNoParameter }; RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 }; RULE: MethodNoParameter { METRIC NMNOPARAM VERY_HIGH 10.0 }; ... RULE: NoInheritance { METRIC DIT 1 0.0 } ; RULE: NoPolymorphism { STRUCT NO_POLYMORPHISM } ; RULE: ProceduralNameGlobalVariable { UNION ProceduralName GlobalVariable }; RULE: ProceduralName { LEXIC CLASS_NAME (Make, Create, System, Exec) }; RULE: UseGlobalVariable { STRUCT USE_GLOBAL_VARIABLE }; } ; Moha © Génération automatique d’algorithmes de détection des défauts de conception 12
  • 13.
    DECOR Method Spécifications On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPAT Méta-modèle SADDL (Software Architectural Defect Definition Language) Moha © Génération automatique d’algorithmes de détection des défauts de conception 13
  • 14.
    Method DECOR Specification Processing Validation Detection Analysis Domain Moha © Génération automatique d’algorithmes de détection des défauts de conception 14
  • 15.
    Method DECOR Specification Generation Validation Algorithm Detection Analysis Domain Moha © Génération automatique d’algorithmes de détection des défauts de conception 15
  • 16.
    DECOR Method Génération desalgos On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPAT Moha © Génération automatique d’algorithmes de détection des défauts de conception 16
  • 17.
    DECOR Method Génération desalgos On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPAT Moha © Génération automatique d’algorithmes de détection des défauts de conception 17
  • 18.
    DECOR Method Génération des algos On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPAT Complexité : O((c+op) X n) Plateforme SAD - c : le nombre de propriétés - Méta-modèle pour représenter les programmes OO - op : le nombre d’opérateurs - Un répertoire de métriques - n : le nombre de classes - Des services pour analyser to analyse des relations structurelles - Des services pour appliquer des analyses structurelles et lexicales Moha © Génération automatique d’algorithmes de détection des défauts de conception 18
  • 19.
    DECOR Method Génération desalgos On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPAT RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 }; 1 public class <CODESMELL>Detection 2 extends CodeSmellDetection 3 implements ICodeSmellDetection { 4 public Set performDetection() { 5 IClass c = iteratorOnClasses.next(); 6 LOCofSetOfClasses.add( 7 Metrics.compute(<METRIC>, c)); 8 ... 9 BoxPlot boxPlot = new BoxPlot( 10 <METRIC>ofSetOfClasses, <FUZZINESS>); 11 Map setOfOutliers = 12 boxPlot.<ORDINAL_VALUE>(); 13 ... 14 suspiciousCodeSmells.add( new CodeSmell( 15 <CODESMELL>, setOfOutliers)); 16 ... 17 return suspiciousCodeSmells; 18 } Visiteur Gabarit Moha © Génération automatique d’algorithmes de détection des défauts de conception 19
  • 20.
    DECOR Method Génération desalgos On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPAT RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 }; Visiteur Code généré Moha © Génération automatique d’algorithmes de détection des défauts de conception 20
  • 21.
    DECOR Method Génération desalgos On all defects On each defect On each system Source code Source code 1 2 3 4 5 Specification of the system of the system Processing Validation Vocabulary Detection Analysis Domain Text-based descriptions Specifications Operational Suspicious Classes having of design defects specifications classes design defects Taxonomy Brown et al. (1998) Demeyer (2002) Dudney (2003) Marinescu (2004) Marinescu (2004) Fowler (1999) Marinescu (2004) Alikacem (2006) Munro (2005) Riel (1996) Munro (2005) Travassos : manual detection (1999) Webster (1995) Alikacem (2006) Tools: SmallLint, PMD, CROCOPAT RULE: LongMethod { METRIC LOC_METHOD VERY_HIGH 10.0 }; Box-plot pour les métriques de type ordinal Moha © Génération automatique d’algorithmes de détection des défauts de conception 21
  • 22.
    Method DECOR Specification Generation Validation Algorithm Detection Analysis Domain Moha © Génération automatique d’algorithmes de détection des défauts de conception 22
  • 23.
    Method DECOR Specification Generation Validation Algorithm Detection Analysis Domain Moha © Génération automatique d’algorithmes de détection des défauts de conception 23
  • 24.
    Expérimentations But : évaluerles algorithmes générés en terme de précision et rappel Xerces: 71,217LOC, 513 classes et 162 interfaces Nbre de Défauts Défauts Temps de Défauts Précision Rappel classes existants détectés détection Blob 39 (7,6%) 44 (8,6%) 88,6% 100% 2,45s Functional Decomp. 15 (2,9%) 29 (5,6%) 51,7% 100% 0,91s 513 Spaghetti Code 46 (9,0%) 76 (14,8%) 60,5% 100% 0,23s Swiss Army Knife 23 (4,5%) 56 (10,9%) 41,1% 100% 0,08s Moha © Génération automatique d’algorithmes de détection des défauts de conception 24
  • 25.
    Démonstration Moha © Génération automatique d’algorithmes de détection des défauts de conception 25
  • 26.
    Conclusion Method DECOR Méthode pour générer des algorithmes de détection des DCs Contributions Processus explicite de génération des algorithmes de détection Évaluation des algorithmes de détection en terme de précision et de rappel Travaux futurs - Expérimentations sur d’autres systèmes et défauts - Plus de flexibilité dans la génération de code en utilisant XML - Intégrer les plateformes existantes Moha © Génération automatique d’algorithmes de détection des défauts de conception 26
  • 27.
    Questions Contact: mohanaou@iro.umontreal.ca http://www-etud.iro.umontreal.ca/~mohanaou Merci pour votre attention ! Moha © Génération automatique d’algorithmes de détection des défauts de conception 27