SlideShare une entreprise Scribd logo
1  sur  144
Télécharger pour lire hors ligne
Un cadre pour la traçabilité
 des motifs de conception



             Soutenance de thèse de doctorat
                 Yann-Gaël Guéhéneuc

École des Mines                            Object Technology
de Nantes, France                          International, Inc., Canada
Plan

       n Contexte
         – Identification des choix de conception
       n Problèmes
         – Obtention de l’architecture d’un programme
         – Identification des choix de conception
       n Contributions
       n Évaluation,   perspectives
2/80
Plan

       n Contexte
         – Identification des choix de conception
       n Problèmes
         – Obtention de l’architecture d’un programme
         – Identification des choix de conception
       n Contributions
       n Évaluation,   perspectives
3/80
Contexte                                            (1/2)

       n Maintenance   des programmes à objets
         – Rétro-conception
         – Compréhension
         – Traçabilité
         – Modification


       n Coûtshumains, temporels, financiers
        prépondérants   [Sharon96, Takang96, Pressman01]

4/80
Contexte                           (2/2)

       n Absence   des développeurs originels
         – Roulement


       n Absence   de documentation
         – Implémentation
         – Architecture
         – Choix de conception

5/80
Scénario                                   (1/8)

       n JHotDraw [Gamma98]
          – Programme de
            dessin vectoriel
          – 14 578 lignes
            de code Java
          – Figures
             •   Carré, arrondi
             •   Cercle, ellipse
             •   Ligne, polygone
6/80
             •   Connexion, dessin à main levée
Scénario                                   (1/8)

       n JHotDraw [Gamma98]
          – Programme de
            dessin vectoriel
          – 14 578 lignes
            de code Java
          – Figures
             •   Carré, arrondi
             •   Cercle, ellipse
             •   Ligne, polygone
6/80
             •   Connexion, dessin à main levée
Scénario                (2/8)

       n Ajoutde
        fonctionnalité
         – La forme triangle
         – Manipulation
           identique aux
           autres formes



7/80
Scénario                (2/8)

       n Ajoutde
        fonctionnalité
         – La forme triangle
         – Manipulation
           identique aux
           autres formes



7/80
Scénario (3/8)

       n Implémentation
       n Architecture
       n Choix   de conception




8/80
Scénario (3/8)

       n Implémentation
       n Architecture
       n Choix   de conception




8/80
Scénario (3/8)

       n Implémentation
       n Architecture
       n Choix   de conception




8/80
Scénario (3/8)

       n Implémentation
       n Architecture
       n Choix   de conception




8/80
Scénario (3/8)

       n Implémentation
       n Architecture
       n Choix   de conception




8/80
Scénario (3/8)

       n Implémentation
       n Architecture
       n Choix   de conception




8/80
Scénario (3/8)

       n Implémentation
       n Architecture
       n Choix   de conception




8/80
Scénario (3/8)

       n Implémentation
       n Architecture
       n Choix   de conception




8/80
Scénario (3/8)

       n Implémentation
       n Architecture
       n Choix   de conception




8/80
Scénario                                                                      (4/8)
                                               Frame                             Panel



       n Implémentation
       n Architecture
                                            DrawingEditor                      DrawingView




       n Choix   de conception                  Tool                            Drawing




                                               Handle                            Figure




                                                                           AbstractFigure




                          AttributeFigure   DecoratorFigure   PolyLineFigure              CompositeFigure


9/80
Scénario                                                                                            (5/8)
                                                                      Frame                             Panel



        n Implémentation
        n Architecture
                                                                   DrawingEditor                      DrawingView




        n Choix          de conception                                 Tool                            Drawing




                                                                      Handle                            Figure




                                                                                                  AbstractFigure



         Composer des objets en une hiérarchie
         tout–partie qui permet au client de
         manipuler uniformément des objets et    AttributeFigure   DecoratorFigure   PolyLineFigure              CompositeFigure
         des compositions d'objets
10/80
Scénario                                                                   (6/8)
                                             Frame                             Panel



        n Choix de conception
         pour manipuler                   DrawingEditor                      DrawingView




         uniformément des
                                              Tool                            Drawing


         objets
                                             Handle                            Figure




                                                                         AbstractFigure




                        AttributeFigure   DecoratorFigure   PolyLineFigure              CompositeFigure


11/80
Scénario                                                                               (6/8)
                                                         Frame                             Panel



        n Choix de conception
         pour manipuler                               DrawingEditor                      DrawingView




         uniformément des
                                                          Tool                            Drawing


         objets
                                                         Handle                            Figure




                                                                                     AbstractFigure




                   TriangleFigure   AttributeFigure   DecoratorFigure   PolyLineFigure              CompositeFigure


11/80
Scénario              (7/8)

        n Modification
          – Plus pertinente
          – Plus rapide




12/80
Scénario              (7/8)

        n Modification
          – Plus pertinente
          – Plus rapide




12/80
Scénario              (7/8)

        n Modification
          – Plus pertinente
          – Plus rapide




12/80
Scénario                        (8/8)

        n Choix   de conception
          – Facilitent la maintenance
            •   Rétro-conception
            •   Compréhension
            •   Traçabilité
            •   Modification
          – Diminuent les coûts


13/80
Constat                                 (1/2)

        n Développement  des programmes :
         techniques et outils bien intégrés
          – Implémentation
            • Eclipse
          – Architecture
            • Rational Rose
          – Choix de conception
            • Patrons de conception [Gamma94]

14/80
Constat                             (2/2)

        n Maintenance des programmes :
         techniques et outils déconnectés
          – Implémentation
          – Architecture
          – Choix de conception




15/80
Objectifs                             (1/2)

        n Maintenance   des programmes à objets
          – Rétro-conception
          – Compréhension
          – Traçabilité
          – Modification


        n Assistance   semi-automatique
          – Obtention de l’architecture d’un programme
16/80
          – Identification des choix de conception
Objectifs                                                                                                                          (2/2)

        n Implémentation
        n Architecture
                                                                                                      Composer des objets en une hiérarchie

        n Choix   de conception                                                                       tout–partie qui permet au client de
                                                                                                      manipuler uniformément des objets et
                                                                                                      des compositions d'objets

                                           Frame                            Panel                                           Frame                            Panel




                                        DrawingEditor                  DrawingView                                       DrawingEditor                  DrawingView




                                            Tool                           Drawing                                           Tool                           Drawing




                                           Handle                          Figure                                           Handle                          Figure




                                                                      AbstractFigure                                                                   AbstractFigure




17/80                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure    AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure
Objectifs                                                                                                                          (2/2)

        n Implémentation
        n Architecture
                                                                                                      Composer des objets en une hiérarchie

        n Choix   de conception                                                                       tout–partie qui permet au client de
                                                                                                      manipuler uniformément des objets et
                                                                                                      des compositions d'objets

                                           Frame                            Panel                                           Frame                            Panel




                                        DrawingEditor                  DrawingView                                       DrawingEditor                  DrawingView




                                            Tool                           Drawing                                           Tool                           Drawing




                                           Handle                          Figure                                           Handle                          Figure




                                                                      AbstractFigure                                                                   AbstractFigure




17/80                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure    AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure
Objectifs                                                                                                                          (2/2)

        n Implémentation
        n Architecture
                                                                                                      Composer des objets en une hiérarchie

        n Choix   de conception                                                                       tout–partie qui permet au client de
                                                                                                      manipuler uniformément des objets et
                                                                                                      des compositions d'objets

                                           Frame                            Panel                                           Frame                            Panel




                                        DrawingEditor                  DrawingView                                       DrawingEditor                  DrawingView




                                            Tool                           Drawing                                           Tool                           Drawing




                                           Handle                          Figure                                           Handle                          Figure




                                                                      AbstractFigure                                                                   AbstractFigure




17/80                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure    AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure
Objectifs                                                                                                                          (2/2)

        n Implémentation
        n Architecture
                                                                                                      Composer des objets en une hiérarchie

        n Choix   de conception                                                                       tout–partie qui permet au client de
                                                                                                      manipuler uniformément des objets et
                                                                                                      des compositions d'objets

                                           Frame                            Panel                                           Frame                            Panel




                                        DrawingEditor                  DrawingView                                       DrawingEditor                  DrawingView




                                            Tool                           Drawing                                           Tool                           Drawing




                                           Handle                          Figure                                           Handle                          Figure




                                                                      AbstractFigure                                                                   AbstractFigure




17/80                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure    AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure
Objectifs                                                                                                                          (2/2)

        n Implémentation
        n Architecture
                                                                                                      Composer des objets en une hiérarchie

        n Choix   de conception                                                                       tout–partie qui permet au client de
                                                                                                      manipuler uniformément des objets et
                                                                                                      des compositions d'objets

                                           Frame                            Panel                                           Frame                            Panel




                                        DrawingEditor                  DrawingView                                       DrawingEditor                  DrawingView




                                            Tool                           Drawing                                           Tool                           Drawing




                                           Handle                          Figure                                           Handle                          Figure




                                                                      AbstractFigure                                                                   AbstractFigure




17/80                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure    AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure
Contributions                               (1/4)

        n Une   suite d’outils intégrés, Ptidej
          – Techniques
             • Analyses statiques et dynamiques
             • Programmation par contraintes avec explications
          – Outils
             • Introspector, Caffeine
             • PtidejSolver, PtidejLibrary



18/80
Contributions                    (2/4)

                        n Implémentation
                        n Architecture
                        n Choix   de conception




19/80
Contributions                    (3/4)

                        n Implémentation
                        n Architecture
                        n Choix   de conception




20/80
Contributions                    (4/4)

                        n Implémentation
                        n Architecture
                        n Choix   de conception




21/80
Plan

        n Contexte
          – Identification des choix de conception
        n Problèmes
          – Obtention de l’architecture d’un programme
          – Identification des choix de conception
        n Contributions
        n Évaluation,   perspectives
22/80
Architecture d’un programme
                                                    Frame                             Panel



        n UML   [OMG03]


           •   Classe                            DrawingEditor                      DrawingView




           •   Interface
           •   Héritage                              Tool                            Drawing




           •   Instanciation
           •   Association                          Handle                            Figure




           •   Agrégation
                                                                                AbstractFigure

           •   Composition

                               AttributeFigure   DecoratorFigure   PolyLineFigure              CompositeFigure


23/80
État de l’art                                           (1/2)

        n Programmation             logique floue   [Niere01]


          – Variantes d’implémentation


        n Analyses       statiques
          – Académiques [Korn99, Jackson99]
              • Efficacité spatiale et temporelle
          – Industrielles [ArgoUML, Rational]
              • Intégration aux outils de développement
24/80
État de l’art                                  (2/2)

        n Classe,   interface, héritage, instanciation
          – Définitions UML « précises »


        n Association,   agrégation, composition
          – Définitions UML « ambiguës »
          – Littérature : au moins 25 définitions
             • Peu de définitions constructives
             • Définitions constructives incomplètes
25/80
Objectifs

        n Définitions
                    consensuelles et
         constructives
          – Association, agrégation, composition


        n Algorithmes   d’analyses
          – Statiques
          – Dynamiques

26/80
Définitions

        n    A       B
                         Association
            – Indique que les instances de A envoient
              des messages aux instances de B
        n    A       B
                         Agrégation
            – Association définissant un tout (A) et une
              partie (B) (champ appartenant au tout)
        n    A       B
                         Composition
            – Agrégation dans laquelle la partie (B)
27/80         appartient exclusivement au tout (A)
Propriétés                            (1/2)

        n Multiplicité   : MU
          – Nombre d’instances min. et max.
            A        B          A    B    A       B




        n Site   d’invocation : SI
          – Site d’invocation des envois de message
            A        B          A    B




28/80
Propriétés                               (2/2)

        n Durée   de vie : DV
          – Dépendance entre les durées de vie des
            instances de la partie et du tout
            A       B




        n Exclusivité   : EX
          – Exclusivité des instances de la partie au tout
            A       B


29/80
Redéfinitions

        n Association
          – DV =? ∧ EX = indifférent ∧ MU = [0, +∞] ∧
            SI ∈ {variable, paramètre, champ, …}
        n Agrégation
          – DV =? ∧ EX = indifférent ∧ MU = [1, +∞] ∧
            SI ∈ {champ, …}
        n Composition
          – DV = + ∧ EX = vrai ∧ MU = [1, +∞] ∧ SI ∈
30/80       {champ, …}
Techniques, outils

        n Analyses   statiques : Introspector
          – Multiplicité, MU
          – Site d’invocation, SI


        n Analyses   dynamiques : Caffeine
          – Durée de vie, DV
          – Exclusivité, EX

31/80
Architecture                  (1/2)

        n Introspector
          – Classes, interfaces
          – Héritage, instanciation
          – Association, agrégation


        n Caffeine
          – Composition

32/80
Architecture   (2/2)




33/80
Architecture           (2/2)




          Analyses statiques
            et dynamiques
33/80
Architecture                                                                          (2/2)
                                  Frame                            Panel




                               DrawingEditor                  DrawingView




                                   Tool                           Drawing




                                  Handle                          Figure




                                                             AbstractFigure

          Analyses statiques
            et dynamiques
33/80        AttributeFigure   DecoratorFigure   PolyLineFigure             CompositeFigure
Plan

        n Contexte
          – Identification des choix de conception
        n Problèmes
          – Obtention de l’architecture d’un programme
          – Identification des choix de conception
        n Contributions
        n Évaluation,   perspectives
34/80
Choix de conception

        n Découverte   des choix de conception
          – Vaste problème  [Shull96]


          – Méthodologie spécifique à l’I.A.   [Tonella99]




        n Catalogue   de choix de conception



35/80
Patrons de conception

        n Erich
              Gamma et al. ; Patrons de
         conception ; Addison-Wesley, 1994   [Gamma94]




        n Ensemble   [Alexander77]


          – Nom
          – Problème
          – Solution
          – Compromis
36/80
Patrons de conception

        n Erich
              Gamma et al. ; Patrons de
         conception ; Addison-Wesley, 1994   [Gamma94]




        n Ensemble   [Alexander77]


          – Nom
          – Problème
          – Solution
          – Compromis
36/80
Patrons de conception

        n Erich
              Gamma et al. ; Patrons de
         conception ; Addison-Wesley, 1994   [Gamma94]




        n Ensemble   [Alexander77]


          – Nom
          – Problème
          – Solution
          – Compromis
36/80
Le patron de conception
        Composite – problème
        n Composer   des objets en une structure
         d’arbre pour représenter des hiérarchies
         tout–partie

        n Permettreau client de manipuler
         uniformément des objets et des
         compositions d’objets

37/80
Le patron de conception
        Composite – solution
        n Solutiond’un patron de conception
         = motif de conception qui décrit des
         micro-architectures récurrentes
                                       Ramification
                                                           1..n
              Client
                                     opération()


                                                                           ramifications


                             Feuille                    Branche


                       opération()                 ajouter(Partie)
                                                   enlever(Partie)
                                                   obtenirPartie(entier)
                                                                           Pour chaque ramifications
38/80                                              opération()
                                                                           ramification.opération()
Le patron de conception
        Composite – exemple
        n Micro-architecture                           similaire au motif
                                    Frame                            Panel




                                 DrawingEditor                  DrawingView




                                     Tool                           Drawing




                                    Handle                          Figure




                                                                AbstractFigure




39/80
               AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure
Le patron de conception
        Composite – exemple
        n Micro-architecture                                                                           similaire au motif
                              Frame                           Panel                      Frame                    Panel




                           DrawingEditor                  DrawingView


                                                                                  DrawingEditor               DrawingView


                               Tool                           Drawing




                                                                                          Tool                   Drawing
                              Handle                          Figure




                                                         AbstractFigure


                                                                                         Handle                  Figure


        AttributeFigure    DecoratorFigure   PolyLineFigure            CompositeFigure
                                                                                                                                      Figure


                                                                                                              AbstractFigure




39/80
                          AttributeFigure
                                      AttributeFigure                            DecoratorFigure PolyLineFigure PolyLineFigure
                                                                                 DecoratorFigure                    CompositeFigure            CompositeFigure
Le patron de conception
        Composite – exemple
        n Micro-architecture                                                                                        similaire au motif
                                Frame                                Panel                      Frame                                Panel

                                               Ramification
                                                                          1..n
            Client
                             DrawingEditor                       DrawingView
                                             opération()
                                                                                         DrawingEditor                        DrawingView

                                                                                                         ramifications
                                 Tool                                Drawing



                                 Feuille                              Branche
                                                                                                 Tool                           Drawing
                                Handle                               Figure
                          opération()                         ajouter(Partie)
                                                              enlever(Partie)
                                                              obtenirPartie(entier)                      Pour chaque ramifications
                                                              opération()                                ramification.opération()
                                                                AbstractFigure


                                                                                                Handle                           Figure


        AttributeFigure      DecoratorFigure        PolyLineFigure            CompositeFigure
                                                                                                                                              Figure


                                                                                                                             AbstractFigure




39/80
                           AttributeFigure
                                       AttributeFigure                                  DecoratorFigure PolyLineFigure PolyLineFigure
                                                                                        DecoratorFigure                    CompositeFigure             CompositeFigure
Frame                                             Panel




        Problème                                      DrawingEditor




                                                           Tool
                                                                                                        DrawingView




                                                                                                           Drawing




                                                          Handle                                            Figure




        Comment identifier                                                                              AbstractFigure




        dans l’architecture AttributeFigure           DecoratorFigure                PolyLineFigure                  CompositeFigure




        d’un programme des                                                                                                                                           Figure




                                                                                                    AttributeFigure               DecoratorFigure   PolyLineFigure            CompositeFigure




        micro-architectures
        similaires à des               Client
                                                                   Ramification


                                                               opération ()
                                                                                       1..n




                                                                                                                         ramifications



        motifs de conception                          Feuille


                                                opération ()
                                                                                    Branche


                                                                              ajouter (Partie)
                                                                              enlever (Partie)
                                                                              obtenirPartie (entier )
                                                                                                                       Pour chaque ramifications
                                                                              opération()



        pour expliquer les
                                                                                                                       ramification.opération ()




                                                                                          Composer des objets en une hiérarchie
40/80   choix de conception ?                                                             tout–partie qui permet au client de
                                                                                          manipuler uniformément des objets et
                                                                                          des compositions d'objets
Frame                                             Panel




        Problème                                      DrawingEditor




                                                           Tool
                                                                                                        DrawingView




                                                                                                           Drawing




                                                          Handle                                            Figure




        Comment identifier                                                                              AbstractFigure




        dans l’architecture AttributeFigure           DecoratorFigure                PolyLineFigure                  CompositeFigure




        d’un programme des                                                                                                                                           Figure




                                                                                                    AttributeFigure               DecoratorFigure   PolyLineFigure            CompositeFigure




        micro-architectures
        similaires à des               Client
                                                                   Ramification


                                                               opération ()
                                                                                       1..n




                                                                                                                         ramifications



        motifs de conception                          Feuille


                                                opération ()
                                                                                    Branche


                                                                              ajouter (Partie)
                                                                              enlever (Partie)
                                                                              obtenirPartie (entier )
                                                                                                                       Pour chaque ramifications
                                                                              opération()



        pour expliquer les
                                                                                                                       ramification.opération ()




                                                                                          Composer des objets en une hiérarchie
40/80   choix de conception ?                                                             tout–partie qui permet au client de
                                                                                          manipuler uniformément des objets et
                                                                                          des compositions d'objets
Frame                                             Panel




        Problème                                      DrawingEditor




                                                           Tool
                                                                                                        DrawingView




                                                                                                           Drawing




                                                          Handle                                            Figure




        Comment identifier                                                                              AbstractFigure




        dans l’architecture AttributeFigure           DecoratorFigure                PolyLineFigure                  CompositeFigure




        d’un programme des                                                                                                                                           Figure




                                                                                                    AttributeFigure               DecoratorFigure   PolyLineFigure            CompositeFigure




        micro-architectures
        similaires à des               Client
                                                                   Ramification


                                                               opération ()
                                                                                       1..n




                                                                                                                         ramifications



        motifs de conception                          Feuille


                                                opération ()
                                                                                    Branche


                                                                              ajouter (Partie)
                                                                              enlever (Partie)
                                                                              obtenirPartie (entier )
                                                                                                                       Pour chaque ramifications
                                                                              opération()



        pour expliquer les
                                                                                                                       ramification.opération ()




                                                                                          Composer des objets en une hiérarchie
40/80   choix de conception ?                                                             tout–partie qui permet au client de
                                                                                          manipuler uniformément des objets et
                                                                                          des compositions d'objets
Frame                                             Panel




        Problème                                      DrawingEditor




                                                           Tool
                                                                                                        DrawingView




                                                                                                           Drawing




                                                          Handle                                            Figure




        Comment identifier                                                                              AbstractFigure




        dans l’architecture AttributeFigure           DecoratorFigure                PolyLineFigure                  CompositeFigure




        d’un programme des                                                                                                                                           Figure




                                                                                                    AttributeFigure               DecoratorFigure   PolyLineFigure            CompositeFigure




        micro-architectures
        similaires à des               Client
                                                                   Ramification


                                                               opération ()
                                                                                       1..n




                                                                                                                         ramifications



        motifs de conception                          Feuille


                                                opération ()
                                                                                    Branche


                                                                              ajouter (Partie)
                                                                              enlever (Partie)
                                                                              obtenirPartie (entier )
                                                                                                                       Pour chaque ramifications
                                                                              opération()



        pour expliquer les
                                                                                                                       ramification.opération ()




                                                                                          Composer des objets en une hiérarchie
40/80   choix de conception ?                                                             tout–partie qui permet au client de
                                                                                          manipuler uniformément des objets et
                                                                                          des compositions d'objets
État de l’art                                           (1/2)

        n Programmation     logique     [Wuyts98]


          – Simplicité de mise en œuvre
          – Intégration à Visual Works
        n Programmation     par contraintes                [Rich90, Quilici97]


          – Représentation des motifs
          – Passage à l’échelle
        n Analyses   syntaxiques    [Alencar95, Brown96, Hedin97, Albin03]


          – Efficacité spatiale et temporelle
41/80
État de l’art                         (2/2)

        n Identification   des micro-architectures
          – Exactes
          – Similaires


        n Interactions   avec les mainteneurs



42/80
Objectifs

        n Représentation   des motifs
        n Pas de descriptions a priori des
          similarités recherchées
          – Rigoureuse → catalogue
          – Lointaine → justifications
        n Interaction avecle mainteneur
        n Passage à l’échelle
        n Solution uniforme
43/80
Proposition

        n Programmation     par contraintes    [Tsang93]


          – Représentation des motifs
          – Passage à l’échelle
          – Solution uniforme
         avec explications    [Jussien01]


          – Pas de description a priori des similarités
          – Identification guidée par le mainteneur

44/80
Problème de satisfaction de
        contraintes (PSC)           (1/6)
                                 [Montanari74]




        n Ensemble   〈V, C, D〉
          – Variables V = {v1, …, vn}
          – Contraintes C = {C1, …, Ce}
          – Domaines des variables D = {D1, …, Dn}


        n Solution
          – Résolution par propagation des contraintes

45/80
PSC                                         (2/6)

        n PSC   déduit de
         – Modèle du motif de conception
           • Participants → variables
           • Relations entre participants → contraintes
         – Modèle de l’architecture du programme
           • Classes du programme → domaine
           • Relations entre les classes du programme →
             sémantique effective des contraintes

46/80
Ramification
                                                                           1..n
                              Client
                                                     opération()



        PSC         (3/6)                    Feuille                    Branche
                                                                                           ramifications




                                       opération()                 ajouter(Partie)
                                                                   enlever(Partie)
                                                                   obtenirPartie(entier)   Pour chaque ramifications
                                                                   opération()             ramification.opération()




        n Motif   de conception Composite
          – Trois participants → trois variables
             • ramification
             • feuille
             • branche



47/80
Ramification
                                                                            1..n
                               Client
                                                      opération()



        PSC          (4/6)                    Feuille                    Branche
                                                                                            ramifications




                                        opération()                 ajouter(Partie)
                                                                    enlever(Partie)
                                                                    obtenirPartie(entier)   Pour chaque ramifications
                                                                    opération()             ramification.opération()




        n Motif   de conception Composite
          – Relations entre participants → contraintes
             •   branche < ramification
             •   feuille < ramification
             •   branche u ramification
             •   Différences deux-à-deux


48/80
Ramification
                                                                            1..n
                               Client
                                                      opération()



        PSC          (4/6)                    Feuille                    Branche
                                                                                            ramifications




                                        opération()                 ajouter(Partie)
                                                                    enlever(Partie)
                                                                    obtenirPartie(entier)   Pour chaque ramifications
                                                                    opération()             ramification.opération()




        n Motif   de conception Composite
          – Relations entre participants → contraintes
             •   branche < ramification
             •   feuille < ramification
             •   branche u ramification
             •   Différences deux-à-deux


48/80
Frame                              Panel




                                                         DrawingEditor                      DrawingView




        PSC                    (5/6)                         Tool                            Drawing




                                                            Handle                            Figure




                                                                                        AbstractFigure




                                       AttributeFigure   DecoratorFigure   PolyLineFigure              CompositeFigure




        n Architecture   du programme JHotDraw
          – Classes du programme → domaine
             • DrawingEditor
             • DrawingView
                                    Relations entre les
             • Tool               +
                                    classes, attributs
             • Drawing
             •…
49/80
Frame                              Panel




                                                         DrawingEditor                      DrawingView




        PSC                    (5/6)                         Tool                            Drawing




                                                            Handle                            Figure




                                                                                        AbstractFigure




                                       AttributeFigure   DecoratorFigure   PolyLineFigure              CompositeFigure




        n Architecture   du programme JHotDraw
          – Classes du programme → domaine
             • DrawingEditor
             • DrawingView
                                    Relations entre les
             • Tool               +
                                    classes, attributs
             • Drawing
             •…
49/80
PSC                                 (6/6)

        n Identificationdes micro-architectures
          similaires au motif de conception
          Composite

          V = {ramification, branche, feuille}
          C = {branche < ramification, feuille <
               ramification, branche u ramification}
          D = {〈DrawingEditor, Drawing…〉}
50/80
Frame                            Panel




        Solution                                                       (1/4)                                       DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                      ramification, branche u ramification}
51/80            D = {〈DrawingEditor, Drawing…〉}
Frame                            Panel




        Solution                                                       (1/4)                                       DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                      ramification, branche u ramification
                                               ramification}
51/80            D = {〈DrawingEditor, Drawing…〉}
Frame                            Panel




        Solution                                                       (1/4)                                       DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                      ramification, branche u ramification
                                               ramification}
51/80            D = {〈DrawingEditor, Drawing…〉}
Frame                            Panel




        Solution                                                       (1/4)                                       DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                      ramification, branche u ramification
                                               ramification}
51/80            D = {〈DrawingEditor, Drawing…〉}
Solution                             (2/4)

        n Explication   de contradiction
          – branche u ramification


        n Pas   de solution avec cette contrainte




52/80
Frame                            Panel




        Solution                                                       (3/4)                                       DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                      ramification, branche u ramification}
53/80            D = {〈DrawingEditor, Drawing…〉}
Frame                            Panel




        Solution                                                       (3/4)                                       DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                      branche
                      ramification, branche u ramification}
                      ramification
53/80            D = {〈DrawingEditor, Drawing…〉}
Frame                            Panel




        Solution                                                       (3/4)                                       DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                      branche
                      ramification, branche u ramification}
                      ramification
53/80            D = {〈DrawingEditor, Drawing…〉}
Frame                            Panel




        Solution                                                       (3/4)                                       DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                      branche
                      ramification, branche u ramification}
                      ramification
53/80            D = {〈DrawingEditor, Drawing…〉}
Frame                            Panel




        Solution                                                       (3/4)                                       DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                      branche
                      ramification, branche u ramification}
                      ramification
53/80            D = {〈DrawingEditor, Drawing…〉}
Frame                            Panel




        Solution                                                       (3/4)                                       DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                      branche
                      ramification, branche u ramification
                      ramification             ramification}
53/80            D = {〈DrawingEditor, Drawing…〉}
Solution                            (4/4)

        n Explication   de contradiction
          – branche < ramification
          – feuille < ramification
          – branche u ramification


        n Pas   de solution avec ces contraintes


54/80
Programmation par contraintes
        avec explications (PPCE)    (1/3)   [Jussien01]




        n Programmation    par contraintes
          – Opérations de retraits ou de restauration
            de valeurs des domaines


        n Explications
          – Sous-ensemble des opérations qui mène à
            une solution ou à une contradiction
          – Dynamicité de la résolution
55/80
PPCE                                     (2/3)

        n Solution
            ∃ opérations de retraits et de restauration
            des valeur des domaines toutes les
            contraintes soient satisfaites


        n Contradiction
          – Sous-ensemble des opérations qui mène à
            une contradiction
56/80     – Ensemble des explications
PPCE                             (3/3)

        n Relaxation   du problème

        n Relaxation   des contraintes




57/80
Relaxation du problème        [Petit02]   (1/2)

        n Retirer
                la contrainte entraînant une
         contradiction
          – branche u ramification


         V = {ramification, branche, feuille}
         C = {branche < ramification, feuille <
              ramification, branche u ramification}
         D = {〈DrawingEditor, Drawing…〉}
58/80
Relaxation du problème        [Petit02]   (1/2)

        n Retirer
                la contrainte entraînant une
         contradiction
          – branche u ramification


         V = {ramification, branche, feuille}
         C = {branche < ramification, feuille <
              ramification, branche u ramification}
         D = {〈DrawingEditor, Drawing…〉}
58/80
Relaxation du                                                                                                 Frame                            Panel




        problème (2/2)                                                                                             DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                      ramification, branche u ramification}
59/80            D = {〈DrawingEditor, Drawing…〉}
Relaxation du                                                                                                 Frame                            Panel




        problème (2/2)                                                                                             DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                      ramification, branche u ramification}
59/80            D = {〈DrawingEditor, Drawing…〉}
Relaxation du                                                                                                 Frame                            Panel




        problème (2/2)                                                                                             DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                      ramification, branche u ramification}
59/80            D = {〈DrawingEditor, Drawing…〉}
Relaxation des contraintes (1/3)

        n Remplacerune contrainte par un autre
         sémantiquement moins forte
          – branche u ramification
          – branche w ramification

         V = {ramification, branche, feuille}
         C = {branche < ramification, feuille <
              ramification, branche u ramification}
60/80    D = {〈DrawingEditor, Drawing…〉}
Relaxation des contraintes (1/3)

        n Remplacerune contrainte par un autre
         sémantiquement moins forte
          – branche u ramification   Composition
          – branche w ramification

         V = {ramification, branche, feuille}
         C = {branche < ramification, feuille <
              ramification, branche u ramification}
60/80    D = {〈DrawingEditor, Drawing…〉}
Relaxation des contraintes (1/3)

        n Remplacerune contrainte par un autre
         sémantiquement moins forte
          – branche u ramification   Composition
          – branche w ramification   Agrégation

         V = {ramification, branche, feuille}
         C = {branche < ramification, feuille <
              ramification, branche u ramification}
60/80    D = {〈DrawingEditor, Drawing…〉}
Relaxation des contraintes (1/3)

        n Remplacerune contrainte par un autre
         sémantiquement moins forte
          – branche u ramification   Composition
          – branche w ramification   Agrégation

         V = {ramification, branche, feuille}
         C = {branche < ramification, feuille <
              ramification, branche u ramification}
                                    w
60/80    D = {〈DrawingEditor, Drawing…〉}
Relaxation des contraintes (2/3)

        n Remplacerune contrainte par un autre
         sémantiquement différente
          – branche < ramification
          – branche < ramification
                    <

         V = {ramification, branche, feuille}
         C = {branche < ramification, feuille <
              ramification, branche u ramification}
61/80    D = {〈DrawingEditor, Drawing…〉}
Relaxation des contraintes (2/3)

        n Remplacerune contrainte par un autre
         sémantiquement différente
          – branche < ramification   Héritage direct
          – branche < ramification
                    <

         V = {ramification, branche, feuille}
         C = {branche < ramification, feuille <
              ramification, branche u ramification}
61/80    D = {〈DrawingEditor, Drawing…〉}
Relaxation des contraintes (2/3)

        n Remplacerune contrainte par un autre
         sémantiquement différente
          – branche < ramification   Héritage direct
          – branche < ramification
                    <                Héritage indirect

         V = {ramification, branche, feuille}
         C = {branche < ramification, feuille <
              ramification, branche u ramification}
61/80    D = {〈DrawingEditor, Drawing…〉}
Relaxation des contraintes (2/3)

        n Remplacerune contrainte par un autre
         sémantiquement différente
          – branche < ramification   Héritage direct
          – branche < ramification
                    <                Héritage indirect

         V = {ramification, branche, feuille}
         C = {branche < ramification, feuille <
                        <                     <
              ramification, branche u ramification}
61/80    D = {〈DrawingEditor, Drawing…〉}
Relaxation des                                                                                                Frame                            Panel




        contraintes (3/3)                                                                                          DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                      ramification, branche u ramification}
62/80            D = {〈DrawingEditor, Drawing…〉}
Relaxation des                                                                                                Frame                            Panel




        contraintes (3/3)                                                                                          DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                                <                     <
                      ramification, branche u ramification}
                                            w
62/80            D = {〈DrawingEditor, Drawing…〉}
Relaxation des                                                                                                Frame                            Panel




        contraintes (3/3)                                                                                          DrawingEditor                  DrawingView




                                                                                                                       Tool                           Drawing
                                  Ramification
                                                      1..n
        Client
                               opération ()


                                                                      ramifications
                                                                                                                      Handle                          Figure

                       Feuille                     Branche


                 opération()                  ajouter(Partie)
                                              enlever(Partie)
                                              obtenirPartie(entier)   Pour chaqueramifications                                                    AbstractFigure
                                              opération()
                                                                      ramification.opération()




                                                                                                 AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure




                 V = {ramification, branche, feuille}
                 C = {branche < ramification, feuille <
                                <                     <
                      ramification, branche u ramification}
                                            w
62/80            D = {〈DrawingEditor, Drawing…〉}
Technique, outils

        n Solveur   de contraintes : PtidejSolver
          – Interactif
          – Automatique (ê complexité)
                         !




        n Bibliothèque   de contraintes :
         PtidejLibrary
          – Héritage direct, indirect
          – Association, agrégation, composition
63/80
          – Utilisation, …
Choix de conception                     (1/2)

        n PtidejSolver,   PtidejLibrary
          – Identification des micro-architectures
            similaires à un motif de conception
          – Justifications des micro-architectures
            identifiées
          – Interaction avec les mainteneurs



64/80
Choix de conception   (2/2)




65/80
Choix de conception   (2/2)




          Programmation par
           contraintes avec
             explications
65/80
Choix de conception                                                                            (2/2)
                                                                                    Composer des objets en une hiérarchie
                                  Frame                            Panel            tout–partie qui permet au client de
                                                                                    manipuler uniformément des objets et
                                                                                    des compositions d'objets


                               DrawingEditor                  DrawingView




                                   Tool                           Drawing




                                  Handle                          Figure




          Programmation par                                  AbstractFigure


           contraintes avec
             explications
65/80        AttributeFigure   DecoratorFigure   PolyLineFigure             CompositeFigure
Plan

        n Contexte
          – Identification des choix de conception
        n Problèmes
          – Obtention de l’architecture d’un programme
          – Identification des choix de conception
        n Contributions
        n Évaluation,   perspectives
66/80
Un cadre pour la traçabilité des
        motifs de conception          (1/4)
        n Métamodélisation
          – PADL
        n Analyse   de programme
          – Introspector, Caffeine
        n Programmation     par contraintes
          – PtidejSolver, PtidejLibrary
        n Visualisation
          – PtidejUI
67/80
Un cadre pour la traçabilité des
        motifs de conception          (2/4)
        n Ptidej   (Pattern Trace Identification, Detection, and Enhancement in Java)   Utilise
                                                                                        Produit
                      PADL


          Architecture        Motifs de conception                        PtidejUI



          Introspector          PtidejSolver
            Caffeine            PtidejLibrary



68/80   Code source Java                                Micro-architectures identifiées
Un cadre pour la traçabilité des
        motifs de conception          (2/4)
        n Ptidej   (Pattern Trace Identification, Detection, and Enhancement in Java)   Utilise
                                                                                        Produit
                      PADL


          Architecture        Motifs de conception                        PtidejUI



          Introspector          PtidejSolver
            Caffeine            PtidejLibrary



68/80   Code source Java                                Micro-architectures identifiées
Un cadre pour la traçabilité des
        motifs de conception          (3/4)
        n Ptidej,   ~700 heures de développement
          – Java
             • 20 projets, 132 paquetages, 669 classes,
               72 interfaces, 79 330 lignes
          – Claire
             • 41 fichiers, 45 classes, 235 méthodes, 7 835
               lignes
          – Prolog
             • 6 fichiers, 76 prédicats, 524 lignes
69/80
Un cadre pour la traçabilité des
        motifs de conception          (4/4)


                                                                                                   Composer des objets en une hiérarchie
                                                                                                   tout–partie qui permet au client de
                                                                                                   manipuler uniformément des objets et
                                                                                                   des compositions d'objets

                                        Frame                            Panel                                           Frame                            Panel




                                     DrawingEditor                  DrawingView                                       DrawingEditor                  DrawingView




                                         Tool                           Drawing                                           Tool                           Drawing




                                        Handle                          Figure                                           Handle                          Figure




                                                                   AbstractFigure                                                                   AbstractFigure




70/80              AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure    AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure
Un cadre pour la traçabilité des
        motifs de conception          (4/4)
               Définitions
              Introspector
                                                                                                   Composer des objets en une hiérarchie
                Caffeine                                                                           tout–partie qui permet au client de
                                                                                                   manipuler uniformément des objets et
                                                                                                   des compositions d'objets

                                        Frame                            Panel                                           Frame                            Panel




                                     DrawingEditor                  DrawingView                                       DrawingEditor                  DrawingView




                                         Tool                           Drawing                                           Tool                           Drawing




                                        Handle                          Figure                                           Handle                          Figure




                                                                   AbstractFigure                                                                   AbstractFigure




70/80              AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure    AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure
Un cadre pour la traçabilité des
        motifs de conception          (4/4)
              PtidejSolver
               Définitions
              PtidejLibrary
              Introspector
                PtidejUI
                Caffeine                                                                            Composer des objets en une hiérarchie
                                                                                                    tout–partie qui permet au client de
                                                                                                    manipuler uniformément des objets et
                                                                                                    des compositions d'objets

                                         Frame                            Panel                                           Frame                            Panel




                                      DrawingEditor                  DrawingView                                       DrawingEditor                  DrawingView




                                          Tool                           Drawing                                           Tool                           Drawing




                                         Handle                          Figure                                           Handle                          Figure




                                                                    AbstractFigure                                                                   AbstractFigure




70/80               AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure    AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure
Un cadre pour la traçabilité des
        motifs de conception          (4/4)
              PtidejSolver
               Définitions
              PtidejLibrary
                 Eclipse
              Introspector
                PtidejUI
                Caffeine                                                                            Composer des objets en une hiérarchie
                                                                                                    tout–partie qui permet au client de
                                                                                                    manipuler uniformément des objets et
                                                                                                    des compositions d'objets

                                         Frame                            Panel                                           Frame                            Panel




                                      DrawingEditor                  DrawingView                                       DrawingEditor                  DrawingView




                                          Tool                           Drawing                                           Tool                           Drawing




                                         Handle                          Figure                                           Handle                          Figure




                                                                    AbstractFigure                                                                   AbstractFigure




70/80               AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure    AttributeFigure   DecoratorFigure   PolyLineFigure            CompositeFigure
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis
Phd Thesis

Contenu connexe

En vedette

L histoire d_enseignante_du_moyen_orient_
L histoire d_enseignante_du_moyen_orient_L histoire d_enseignante_du_moyen_orient_
L histoire d_enseignante_du_moyen_orient_smcla2011
 
Sociologia. las instituciones
Sociologia. las institucionesSociologia. las instituciones
Sociologia. las institucionesRafaelRN
 
Cómo queremos que sea el final de nuestra vida copia
Cómo queremos que sea el final de nuestra vida   copiaCómo queremos que sea el final de nuestra vida   copia
Cómo queremos que sea el final de nuestra vida copiaJeferzon Carbajal
 
Selleccinar diapositivas
Selleccinar  diapositivasSelleccinar  diapositivas
Selleccinar diapositivasissc
 
Master en asesoria de empresas
Master en asesoria de empresasMaster en asesoria de empresas
Master en asesoria de empresasCenproexFormacion
 
Jpc le nouveau dictionnairevvvvvvvvvvvvvvvvv
Jpc  le nouveau dictionnairevvvvvvvvvvvvvvvvvJpc  le nouveau dictionnairevvvvvvvvvvvvvvvvv
Jpc le nouveau dictionnairevvvvvvvvvvvvvvvvvDominique Pongi
 
Papier colloque-greigec-2012-verssion-ar fr
Papier colloque-greigec-2012-verssion-ar frPapier colloque-greigec-2012-verssion-ar fr
Papier colloque-greigec-2012-verssion-ar fressa1988
 
09 la-bonne-photo-au-bon-moment-avec-le-bon-angle
09 la-bonne-photo-au-bon-moment-avec-le-bon-angle09 la-bonne-photo-au-bon-moment-avec-le-bon-angle
09 la-bonne-photo-au-bon-moment-avec-le-bon-angleDominique Pongi
 
Códigos qr y la educación
Códigos qr y  la educaciónCódigos qr y  la educación
Códigos qr y la educaciónnicolerojasperry
 
Données et délivrabilité : anticiper et corriger
Données et délivrabilité : anticiper et corrigerDonnées et délivrabilité : anticiper et corriger
Données et délivrabilité : anticiper et corrigerNP6
 
Naphtal's_du_11_octobre_90
Naphtal's_du_11_octobre_90Naphtal's_du_11_octobre_90
Naphtal's_du_11_octobre_90bakoon
 
Comment utiliser les outils
Comment utiliser les outilsComment utiliser les outils
Comment utiliser les outilsGodinAlexandre
 
Les reseaux sociaux (Juin 2013)
Les reseaux sociaux (Juin 2013)Les reseaux sociaux (Juin 2013)
Les reseaux sociaux (Juin 2013)Club_Mac_93
 

En vedette (20)

Part 2
Part 2Part 2
Part 2
 
5eme festival de_randonnees_0
5eme festival de_randonnees_05eme festival de_randonnees_0
5eme festival de_randonnees_0
 
L histoire d_enseignante_du_moyen_orient_
L histoire d_enseignante_du_moyen_orient_L histoire d_enseignante_du_moyen_orient_
L histoire d_enseignante_du_moyen_orient_
 
Sociologia. las instituciones
Sociologia. las institucionesSociologia. las instituciones
Sociologia. las instituciones
 
Cómo queremos que sea el final de nuestra vida copia
Cómo queremos que sea el final de nuestra vida   copiaCómo queremos que sea el final de nuestra vida   copia
Cómo queremos que sea el final de nuestra vida copia
 
Selleccinar diapositivas
Selleccinar  diapositivasSelleccinar  diapositivas
Selleccinar diapositivas
 
Master en asesoria de empresas
Master en asesoria de empresasMaster en asesoria de empresas
Master en asesoria de empresas
 
Marre marre
Marre marreMarre marre
Marre marre
 
Jpc le nouveau dictionnairevvvvvvvvvvvvvvvvv
Jpc  le nouveau dictionnairevvvvvvvvvvvvvvvvvJpc  le nouveau dictionnairevvvvvvvvvvvvvvvvv
Jpc le nouveau dictionnairevvvvvvvvvvvvvvvvv
 
Papier colloque-greigec-2012-verssion-ar fr
Papier colloque-greigec-2012-verssion-ar frPapier colloque-greigec-2012-verssion-ar fr
Papier colloque-greigec-2012-verssion-ar fr
 
09 la-bonne-photo-au-bon-moment-avec-le-bon-angle
09 la-bonne-photo-au-bon-moment-avec-le-bon-angle09 la-bonne-photo-au-bon-moment-avec-le-bon-angle
09 la-bonne-photo-au-bon-moment-avec-le-bon-angle
 
Códigos qr y la educación
Códigos qr y  la educaciónCódigos qr y  la educación
Códigos qr y la educación
 
Données et délivrabilité : anticiper et corriger
Données et délivrabilité : anticiper et corrigerDonnées et délivrabilité : anticiper et corriger
Données et délivrabilité : anticiper et corriger
 
La lune1
La lune1La lune1
La lune1
 
JAVA
JAVAJAVA
JAVA
 
Naphtal's_du_11_octobre_90
Naphtal's_du_11_octobre_90Naphtal's_du_11_octobre_90
Naphtal's_du_11_octobre_90
 
Comment utiliser les outils
Comment utiliser les outilsComment utiliser les outils
Comment utiliser les outils
 
Cuadro informe de brunner
Cuadro informe de brunnerCuadro informe de brunner
Cuadro informe de brunner
 
Des trous partout
Des trous partoutDes trous partout
Des trous partout
 
Les reseaux sociaux (Juin 2013)
Les reseaux sociaux (Juin 2013)Les reseaux sociaux (Juin 2013)
Les reseaux sociaux (Juin 2013)
 

Similaire à Phd Thesis

Transmission
TransmissionTransmission
Transmissiontoumed
 
00001923-Dessin industriel part1.pdf
00001923-Dessin industriel part1.pdf00001923-Dessin industriel part1.pdf
00001923-Dessin industriel part1.pdfqh7ps6r4b8
 
Composition d'applications multi-modèles dirigée par la composition des inter...
Composition d'applications multi-modèles dirigée par la composition des inter...Composition d'applications multi-modèles dirigée par la composition des inter...
Composition d'applications multi-modèles dirigée par la composition des inter...Atelier IHM Polytech Nice Sophia
 
CSS3 Intel Webinar
CSS3 Intel WebinarCSS3 Intel Webinar
CSS3 Intel WebinarViniSketch
 
Algorithmique graphique
Algorithmique graphiqueAlgorithmique graphique
Algorithmique graphiqueTheYacine
 
Tour D Horizon Des Drawables
Tour D Horizon Des DrawablesTour D Horizon Des Drawables
Tour D Horizon Des DrawablesCyril Mottier
 

Similaire à Phd Thesis (10)

030225+seminar+gelo+diro.ppt
030225+seminar+gelo+diro.ppt030225+seminar+gelo+diro.ppt
030225+seminar+gelo+diro.ppt
 
Transmission
TransmissionTransmission
Transmission
 
00001923-Dessin industriel part1.pdf
00001923-Dessin industriel part1.pdf00001923-Dessin industriel part1.pdf
00001923-Dessin industriel part1.pdf
 
GeneralitesGUI1.pdf
GeneralitesGUI1.pdfGeneralitesGUI1.pdf
GeneralitesGUI1.pdf
 
Composition d'applications multi-modèles dirigée par la composition des inter...
Composition d'applications multi-modèles dirigée par la composition des inter...Composition d'applications multi-modèles dirigée par la composition des inter...
Composition d'applications multi-modèles dirigée par la composition des inter...
 
Revit TUTO IUT
Revit TUTO IUTRevit TUTO IUT
Revit TUTO IUT
 
CSS3 Intel Webinar
CSS3 Intel WebinarCSS3 Intel Webinar
CSS3 Intel Webinar
 
040423+seminar+info+uqam.ppt
040423+seminar+info+uqam.ppt040423+seminar+info+uqam.ppt
040423+seminar+info+uqam.ppt
 
Algorithmique graphique
Algorithmique graphiqueAlgorithmique graphique
Algorithmique graphique
 
Tour D Horizon Des Drawables
Tour D Horizon Des DrawablesTour D Horizon Des Drawables
Tour D Horizon Des Drawables
 

Plus de Yann-Gaël Guéhéneuc

Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Yann-Gaël Guéhéneuc
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Yann-Gaël Guéhéneuc
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Yann-Gaël Guéhéneuc
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Yann-Gaël Guéhéneuc
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Yann-Gaël Guéhéneuc
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...Yann-Gaël Guéhéneuc
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesYann-Gaël Guéhéneuc
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Yann-Gaël Guéhéneuc
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1Yann-Gaël Guéhéneuc
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6Yann-Gaël Guéhéneuc
 

Plus de Yann-Gaël Guéhéneuc (20)

Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its Consequences
 
Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
 
Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6
 
ICSOC'21
ICSOC'21ICSOC'21
ICSOC'21
 
Vissoft21.ppt
Vissoft21.pptVissoft21.ppt
Vissoft21.ppt
 
Service computation20.ppt
Service computation20.pptService computation20.ppt
Service computation20.ppt
 
Serp4 iot20.ppt
Serp4 iot20.pptSerp4 iot20.ppt
Serp4 iot20.ppt
 
Msr20.ppt
Msr20.pptMsr20.ppt
Msr20.ppt
 
Iwesep19.ppt
Iwesep19.pptIwesep19.ppt
Iwesep19.ppt
 
Icsoc20.ppt
Icsoc20.pptIcsoc20.ppt
Icsoc20.ppt
 
Icsoc18.ppt
Icsoc18.pptIcsoc18.ppt
Icsoc18.ppt
 

Phd Thesis

  • 1. Un cadre pour la traçabilité des motifs de conception Soutenance de thèse de doctorat Yann-Gaël Guéhéneuc École des Mines Object Technology de Nantes, France International, Inc., Canada
  • 2. Plan n Contexte – Identification des choix de conception n Problèmes – Obtention de l’architecture d’un programme – Identification des choix de conception n Contributions n Évaluation, perspectives 2/80
  • 3. Plan n Contexte – Identification des choix de conception n Problèmes – Obtention de l’architecture d’un programme – Identification des choix de conception n Contributions n Évaluation, perspectives 3/80
  • 4. Contexte (1/2) n Maintenance des programmes à objets – Rétro-conception – Compréhension – Traçabilité – Modification n Coûtshumains, temporels, financiers prépondérants [Sharon96, Takang96, Pressman01] 4/80
  • 5. Contexte (2/2) n Absence des développeurs originels – Roulement n Absence de documentation – Implémentation – Architecture – Choix de conception 5/80
  • 6. Scénario (1/8) n JHotDraw [Gamma98] – Programme de dessin vectoriel – 14 578 lignes de code Java – Figures • Carré, arrondi • Cercle, ellipse • Ligne, polygone 6/80 • Connexion, dessin à main levée
  • 7. Scénario (1/8) n JHotDraw [Gamma98] – Programme de dessin vectoriel – 14 578 lignes de code Java – Figures • Carré, arrondi • Cercle, ellipse • Ligne, polygone 6/80 • Connexion, dessin à main levée
  • 8. Scénario (2/8) n Ajoutde fonctionnalité – La forme triangle – Manipulation identique aux autres formes 7/80
  • 9. Scénario (2/8) n Ajoutde fonctionnalité – La forme triangle – Manipulation identique aux autres formes 7/80
  • 10. Scénario (3/8) n Implémentation n Architecture n Choix de conception 8/80
  • 11. Scénario (3/8) n Implémentation n Architecture n Choix de conception 8/80
  • 12. Scénario (3/8) n Implémentation n Architecture n Choix de conception 8/80
  • 13. Scénario (3/8) n Implémentation n Architecture n Choix de conception 8/80
  • 14. Scénario (3/8) n Implémentation n Architecture n Choix de conception 8/80
  • 15. Scénario (3/8) n Implémentation n Architecture n Choix de conception 8/80
  • 16. Scénario (3/8) n Implémentation n Architecture n Choix de conception 8/80
  • 17. Scénario (3/8) n Implémentation n Architecture n Choix de conception 8/80
  • 18. Scénario (3/8) n Implémentation n Architecture n Choix de conception 8/80
  • 19. Scénario (4/8) Frame Panel n Implémentation n Architecture DrawingEditor DrawingView n Choix de conception Tool Drawing Handle Figure AbstractFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure 9/80
  • 20. Scénario (5/8) Frame Panel n Implémentation n Architecture DrawingEditor DrawingView n Choix de conception Tool Drawing Handle Figure AbstractFigure Composer des objets en une hiérarchie tout–partie qui permet au client de manipuler uniformément des objets et AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure des compositions d'objets 10/80
  • 21. Scénario (6/8) Frame Panel n Choix de conception pour manipuler DrawingEditor DrawingView uniformément des Tool Drawing objets Handle Figure AbstractFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure 11/80
  • 22. Scénario (6/8) Frame Panel n Choix de conception pour manipuler DrawingEditor DrawingView uniformément des Tool Drawing objets Handle Figure AbstractFigure TriangleFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure 11/80
  • 23. Scénario (7/8) n Modification – Plus pertinente – Plus rapide 12/80
  • 24. Scénario (7/8) n Modification – Plus pertinente – Plus rapide 12/80
  • 25. Scénario (7/8) n Modification – Plus pertinente – Plus rapide 12/80
  • 26. Scénario (8/8) n Choix de conception – Facilitent la maintenance • Rétro-conception • Compréhension • Traçabilité • Modification – Diminuent les coûts 13/80
  • 27. Constat (1/2) n Développement des programmes : techniques et outils bien intégrés – Implémentation • Eclipse – Architecture • Rational Rose – Choix de conception • Patrons de conception [Gamma94] 14/80
  • 28. Constat (2/2) n Maintenance des programmes : techniques et outils déconnectés – Implémentation – Architecture – Choix de conception 15/80
  • 29. Objectifs (1/2) n Maintenance des programmes à objets – Rétro-conception – Compréhension – Traçabilité – Modification n Assistance semi-automatique – Obtention de l’architecture d’un programme 16/80 – Identification des choix de conception
  • 30. Objectifs (2/2) n Implémentation n Architecture Composer des objets en une hiérarchie n Choix de conception tout–partie qui permet au client de manipuler uniformément des objets et des compositions d'objets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure 17/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  • 31. Objectifs (2/2) n Implémentation n Architecture Composer des objets en une hiérarchie n Choix de conception tout–partie qui permet au client de manipuler uniformément des objets et des compositions d'objets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure 17/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  • 32. Objectifs (2/2) n Implémentation n Architecture Composer des objets en une hiérarchie n Choix de conception tout–partie qui permet au client de manipuler uniformément des objets et des compositions d'objets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure 17/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  • 33. Objectifs (2/2) n Implémentation n Architecture Composer des objets en une hiérarchie n Choix de conception tout–partie qui permet au client de manipuler uniformément des objets et des compositions d'objets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure 17/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  • 34. Objectifs (2/2) n Implémentation n Architecture Composer des objets en une hiérarchie n Choix de conception tout–partie qui permet au client de manipuler uniformément des objets et des compositions d'objets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure 17/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  • 35. Contributions (1/4) n Une suite d’outils intégrés, Ptidej – Techniques • Analyses statiques et dynamiques • Programmation par contraintes avec explications – Outils • Introspector, Caffeine • PtidejSolver, PtidejLibrary 18/80
  • 36. Contributions (2/4) n Implémentation n Architecture n Choix de conception 19/80
  • 37. Contributions (3/4) n Implémentation n Architecture n Choix de conception 20/80
  • 38. Contributions (4/4) n Implémentation n Architecture n Choix de conception 21/80
  • 39. Plan n Contexte – Identification des choix de conception n Problèmes – Obtention de l’architecture d’un programme – Identification des choix de conception n Contributions n Évaluation, perspectives 22/80
  • 40. Architecture d’un programme Frame Panel n UML [OMG03] • Classe DrawingEditor DrawingView • Interface • Héritage Tool Drawing • Instanciation • Association Handle Figure • Agrégation AbstractFigure • Composition AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure 23/80
  • 41. État de l’art (1/2) n Programmation logique floue [Niere01] – Variantes d’implémentation n Analyses statiques – Académiques [Korn99, Jackson99] • Efficacité spatiale et temporelle – Industrielles [ArgoUML, Rational] • Intégration aux outils de développement 24/80
  • 42. État de l’art (2/2) n Classe, interface, héritage, instanciation – Définitions UML « précises » n Association, agrégation, composition – Définitions UML « ambiguës » – Littérature : au moins 25 définitions • Peu de définitions constructives • Définitions constructives incomplètes 25/80
  • 43. Objectifs n Définitions consensuelles et constructives – Association, agrégation, composition n Algorithmes d’analyses – Statiques – Dynamiques 26/80
  • 44. Définitions n A B Association – Indique que les instances de A envoient des messages aux instances de B n A B Agrégation – Association définissant un tout (A) et une partie (B) (champ appartenant au tout) n A B Composition – Agrégation dans laquelle la partie (B) 27/80 appartient exclusivement au tout (A)
  • 45. Propriétés (1/2) n Multiplicité : MU – Nombre d’instances min. et max. A B A B A B n Site d’invocation : SI – Site d’invocation des envois de message A B A B 28/80
  • 46. Propriétés (2/2) n Durée de vie : DV – Dépendance entre les durées de vie des instances de la partie et du tout A B n Exclusivité : EX – Exclusivité des instances de la partie au tout A B 29/80
  • 47. Redéfinitions n Association – DV =? ∧ EX = indifférent ∧ MU = [0, +∞] ∧ SI ∈ {variable, paramètre, champ, …} n Agrégation – DV =? ∧ EX = indifférent ∧ MU = [1, +∞] ∧ SI ∈ {champ, …} n Composition – DV = + ∧ EX = vrai ∧ MU = [1, +∞] ∧ SI ∈ 30/80 {champ, …}
  • 48. Techniques, outils n Analyses statiques : Introspector – Multiplicité, MU – Site d’invocation, SI n Analyses dynamiques : Caffeine – Durée de vie, DV – Exclusivité, EX 31/80
  • 49. Architecture (1/2) n Introspector – Classes, interfaces – Héritage, instanciation – Association, agrégation n Caffeine – Composition 32/80
  • 50. Architecture (2/2) 33/80
  • 51. Architecture (2/2) Analyses statiques et dynamiques 33/80
  • 52. Architecture (2/2) Frame Panel DrawingEditor DrawingView Tool Drawing Handle Figure AbstractFigure Analyses statiques et dynamiques 33/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  • 53. Plan n Contexte – Identification des choix de conception n Problèmes – Obtention de l’architecture d’un programme – Identification des choix de conception n Contributions n Évaluation, perspectives 34/80
  • 54. Choix de conception n Découverte des choix de conception – Vaste problème [Shull96] – Méthodologie spécifique à l’I.A. [Tonella99] n Catalogue de choix de conception 35/80
  • 55. Patrons de conception n Erich Gamma et al. ; Patrons de conception ; Addison-Wesley, 1994 [Gamma94] n Ensemble [Alexander77] – Nom – Problème – Solution – Compromis 36/80
  • 56. Patrons de conception n Erich Gamma et al. ; Patrons de conception ; Addison-Wesley, 1994 [Gamma94] n Ensemble [Alexander77] – Nom – Problème – Solution – Compromis 36/80
  • 57. Patrons de conception n Erich Gamma et al. ; Patrons de conception ; Addison-Wesley, 1994 [Gamma94] n Ensemble [Alexander77] – Nom – Problème – Solution – Compromis 36/80
  • 58. Le patron de conception Composite – problème n Composer des objets en une structure d’arbre pour représenter des hiérarchies tout–partie n Permettreau client de manipuler uniformément des objets et des compositions d’objets 37/80
  • 59. Le patron de conception Composite – solution n Solutiond’un patron de conception = motif de conception qui décrit des micro-architectures récurrentes Ramification 1..n Client opération() ramifications Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaque ramifications 38/80 opération() ramification.opération()
  • 60. Le patron de conception Composite – exemple n Micro-architecture similaire au motif Frame Panel DrawingEditor DrawingView Tool Drawing Handle Figure AbstractFigure 39/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  • 61. Le patron de conception Composite – exemple n Micro-architecture similaire au motif Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure AbstractFigure Handle Figure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure Figure AbstractFigure 39/80 AttributeFigure AttributeFigure DecoratorFigure PolyLineFigure PolyLineFigure DecoratorFigure CompositeFigure CompositeFigure
  • 62. Le patron de conception Composite – exemple n Micro-architecture similaire au motif Frame Panel Frame Panel Ramification 1..n Client DrawingEditor DrawingView opération() DrawingEditor DrawingView ramifications Tool Drawing Feuille Branche Tool Drawing Handle Figure opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaque ramifications opération() ramification.opération() AbstractFigure Handle Figure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure Figure AbstractFigure 39/80 AttributeFigure AttributeFigure DecoratorFigure PolyLineFigure PolyLineFigure DecoratorFigure CompositeFigure CompositeFigure
  • 63. Frame Panel Problème DrawingEditor Tool DrawingView Drawing Handle Figure Comment identifier AbstractFigure dans l’architecture AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure d’un programme des Figure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure micro-architectures similaires à des Client Ramification opération () 1..n ramifications motifs de conception Feuille opération () Branche ajouter (Partie) enlever (Partie) obtenirPartie (entier ) Pour chaque ramifications opération() pour expliquer les ramification.opération () Composer des objets en une hiérarchie 40/80 choix de conception ? tout–partie qui permet au client de manipuler uniformément des objets et des compositions d'objets
  • 64. Frame Panel Problème DrawingEditor Tool DrawingView Drawing Handle Figure Comment identifier AbstractFigure dans l’architecture AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure d’un programme des Figure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure micro-architectures similaires à des Client Ramification opération () 1..n ramifications motifs de conception Feuille opération () Branche ajouter (Partie) enlever (Partie) obtenirPartie (entier ) Pour chaque ramifications opération() pour expliquer les ramification.opération () Composer des objets en une hiérarchie 40/80 choix de conception ? tout–partie qui permet au client de manipuler uniformément des objets et des compositions d'objets
  • 65. Frame Panel Problème DrawingEditor Tool DrawingView Drawing Handle Figure Comment identifier AbstractFigure dans l’architecture AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure d’un programme des Figure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure micro-architectures similaires à des Client Ramification opération () 1..n ramifications motifs de conception Feuille opération () Branche ajouter (Partie) enlever (Partie) obtenirPartie (entier ) Pour chaque ramifications opération() pour expliquer les ramification.opération () Composer des objets en une hiérarchie 40/80 choix de conception ? tout–partie qui permet au client de manipuler uniformément des objets et des compositions d'objets
  • 66. Frame Panel Problème DrawingEditor Tool DrawingView Drawing Handle Figure Comment identifier AbstractFigure dans l’architecture AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure d’un programme des Figure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure micro-architectures similaires à des Client Ramification opération () 1..n ramifications motifs de conception Feuille opération () Branche ajouter (Partie) enlever (Partie) obtenirPartie (entier ) Pour chaque ramifications opération() pour expliquer les ramification.opération () Composer des objets en une hiérarchie 40/80 choix de conception ? tout–partie qui permet au client de manipuler uniformément des objets et des compositions d'objets
  • 67. État de l’art (1/2) n Programmation logique [Wuyts98] – Simplicité de mise en œuvre – Intégration à Visual Works n Programmation par contraintes [Rich90, Quilici97] – Représentation des motifs – Passage à l’échelle n Analyses syntaxiques [Alencar95, Brown96, Hedin97, Albin03] – Efficacité spatiale et temporelle 41/80
  • 68. État de l’art (2/2) n Identification des micro-architectures – Exactes – Similaires n Interactions avec les mainteneurs 42/80
  • 69. Objectifs n Représentation des motifs n Pas de descriptions a priori des similarités recherchées – Rigoureuse → catalogue – Lointaine → justifications n Interaction avecle mainteneur n Passage à l’échelle n Solution uniforme 43/80
  • 70. Proposition n Programmation par contraintes [Tsang93] – Représentation des motifs – Passage à l’échelle – Solution uniforme avec explications [Jussien01] – Pas de description a priori des similarités – Identification guidée par le mainteneur 44/80
  • 71. Problème de satisfaction de contraintes (PSC) (1/6) [Montanari74] n Ensemble 〈V, C, D〉 – Variables V = {v1, …, vn} – Contraintes C = {C1, …, Ce} – Domaines des variables D = {D1, …, Dn} n Solution – Résolution par propagation des contraintes 45/80
  • 72. PSC (2/6) n PSC déduit de – Modèle du motif de conception • Participants → variables • Relations entre participants → contraintes – Modèle de l’architecture du programme • Classes du programme → domaine • Relations entre les classes du programme → sémantique effective des contraintes 46/80
  • 73. Ramification 1..n Client opération() PSC (3/6) Feuille Branche ramifications opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaque ramifications opération() ramification.opération() n Motif de conception Composite – Trois participants → trois variables • ramification • feuille • branche 47/80
  • 74. Ramification 1..n Client opération() PSC (4/6) Feuille Branche ramifications opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaque ramifications opération() ramification.opération() n Motif de conception Composite – Relations entre participants → contraintes • branche < ramification • feuille < ramification • branche u ramification • Différences deux-à-deux 48/80
  • 75. Ramification 1..n Client opération() PSC (4/6) Feuille Branche ramifications opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaque ramifications opération() ramification.opération() n Motif de conception Composite – Relations entre participants → contraintes • branche < ramification • feuille < ramification • branche u ramification • Différences deux-à-deux 48/80
  • 76. Frame Panel DrawingEditor DrawingView PSC (5/6) Tool Drawing Handle Figure AbstractFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure n Architecture du programme JHotDraw – Classes du programme → domaine • DrawingEditor • DrawingView Relations entre les • Tool + classes, attributs • Drawing •… 49/80
  • 77. Frame Panel DrawingEditor DrawingView PSC (5/6) Tool Drawing Handle Figure AbstractFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure n Architecture du programme JHotDraw – Classes du programme → domaine • DrawingEditor • DrawingView Relations entre les • Tool + classes, attributs • Drawing •… 49/80
  • 78. PSC (6/6) n Identificationdes micro-architectures similaires au motif de conception Composite V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} D = {〈DrawingEditor, Drawing…〉} 50/80
  • 79. Frame Panel Solution (1/4) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} 51/80 D = {〈DrawingEditor, Drawing…〉}
  • 80. Frame Panel Solution (1/4) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification ramification} 51/80 D = {〈DrawingEditor, Drawing…〉}
  • 81. Frame Panel Solution (1/4) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification ramification} 51/80 D = {〈DrawingEditor, Drawing…〉}
  • 82. Frame Panel Solution (1/4) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification ramification} 51/80 D = {〈DrawingEditor, Drawing…〉}
  • 83. Solution (2/4) n Explication de contradiction – branche u ramification n Pas de solution avec cette contrainte 52/80
  • 84. Frame Panel Solution (3/4) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} 53/80 D = {〈DrawingEditor, Drawing…〉}
  • 85. Frame Panel Solution (3/4) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < branche ramification, branche u ramification} ramification 53/80 D = {〈DrawingEditor, Drawing…〉}
  • 86. Frame Panel Solution (3/4) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < branche ramification, branche u ramification} ramification 53/80 D = {〈DrawingEditor, Drawing…〉}
  • 87. Frame Panel Solution (3/4) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < branche ramification, branche u ramification} ramification 53/80 D = {〈DrawingEditor, Drawing…〉}
  • 88. Frame Panel Solution (3/4) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < branche ramification, branche u ramification} ramification 53/80 D = {〈DrawingEditor, Drawing…〉}
  • 89. Frame Panel Solution (3/4) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < branche ramification, branche u ramification ramification ramification} 53/80 D = {〈DrawingEditor, Drawing…〉}
  • 90. Solution (4/4) n Explication de contradiction – branche < ramification – feuille < ramification – branche u ramification n Pas de solution avec ces contraintes 54/80
  • 91. Programmation par contraintes avec explications (PPCE) (1/3) [Jussien01] n Programmation par contraintes – Opérations de retraits ou de restauration de valeurs des domaines n Explications – Sous-ensemble des opérations qui mène à une solution ou à une contradiction – Dynamicité de la résolution 55/80
  • 92. PPCE (2/3) n Solution ∃ opérations de retraits et de restauration des valeur des domaines toutes les contraintes soient satisfaites n Contradiction – Sous-ensemble des opérations qui mène à une contradiction 56/80 – Ensemble des explications
  • 93. PPCE (3/3) n Relaxation du problème n Relaxation des contraintes 57/80
  • 94. Relaxation du problème [Petit02] (1/2) n Retirer la contrainte entraînant une contradiction – branche u ramification V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} D = {〈DrawingEditor, Drawing…〉} 58/80
  • 95. Relaxation du problème [Petit02] (1/2) n Retirer la contrainte entraînant une contradiction – branche u ramification V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} D = {〈DrawingEditor, Drawing…〉} 58/80
  • 96. Relaxation du Frame Panel problème (2/2) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} 59/80 D = {〈DrawingEditor, Drawing…〉}
  • 97. Relaxation du Frame Panel problème (2/2) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} 59/80 D = {〈DrawingEditor, Drawing…〉}
  • 98. Relaxation du Frame Panel problème (2/2) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} 59/80 D = {〈DrawingEditor, Drawing…〉}
  • 99. Relaxation des contraintes (1/3) n Remplacerune contrainte par un autre sémantiquement moins forte – branche u ramification – branche w ramification V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} 60/80 D = {〈DrawingEditor, Drawing…〉}
  • 100. Relaxation des contraintes (1/3) n Remplacerune contrainte par un autre sémantiquement moins forte – branche u ramification Composition – branche w ramification V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} 60/80 D = {〈DrawingEditor, Drawing…〉}
  • 101. Relaxation des contraintes (1/3) n Remplacerune contrainte par un autre sémantiquement moins forte – branche u ramification Composition – branche w ramification Agrégation V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} 60/80 D = {〈DrawingEditor, Drawing…〉}
  • 102. Relaxation des contraintes (1/3) n Remplacerune contrainte par un autre sémantiquement moins forte – branche u ramification Composition – branche w ramification Agrégation V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} w 60/80 D = {〈DrawingEditor, Drawing…〉}
  • 103. Relaxation des contraintes (2/3) n Remplacerune contrainte par un autre sémantiquement différente – branche < ramification – branche < ramification < V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} 61/80 D = {〈DrawingEditor, Drawing…〉}
  • 104. Relaxation des contraintes (2/3) n Remplacerune contrainte par un autre sémantiquement différente – branche < ramification Héritage direct – branche < ramification < V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} 61/80 D = {〈DrawingEditor, Drawing…〉}
  • 105. Relaxation des contraintes (2/3) n Remplacerune contrainte par un autre sémantiquement différente – branche < ramification Héritage direct – branche < ramification < Héritage indirect V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} 61/80 D = {〈DrawingEditor, Drawing…〉}
  • 106. Relaxation des contraintes (2/3) n Remplacerune contrainte par un autre sémantiquement différente – branche < ramification Héritage direct – branche < ramification < Héritage indirect V = {ramification, branche, feuille} C = {branche < ramification, feuille < < < ramification, branche u ramification} 61/80 D = {〈DrawingEditor, Drawing…〉}
  • 107. Relaxation des Frame Panel contraintes (3/3) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < ramification, branche u ramification} 62/80 D = {〈DrawingEditor, Drawing…〉}
  • 108. Relaxation des Frame Panel contraintes (3/3) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < < < ramification, branche u ramification} w 62/80 D = {〈DrawingEditor, Drawing…〉}
  • 109. Relaxation des Frame Panel contraintes (3/3) DrawingEditor DrawingView Tool Drawing Ramification 1..n Client opération () ramifications Handle Figure Feuille Branche opération() ajouter(Partie) enlever(Partie) obtenirPartie(entier) Pour chaqueramifications AbstractFigure opération() ramification.opération() AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure V = {ramification, branche, feuille} C = {branche < ramification, feuille < < < ramification, branche u ramification} w 62/80 D = {〈DrawingEditor, Drawing…〉}
  • 110. Technique, outils n Solveur de contraintes : PtidejSolver – Interactif – Automatique (ê complexité) ! n Bibliothèque de contraintes : PtidejLibrary – Héritage direct, indirect – Association, agrégation, composition 63/80 – Utilisation, …
  • 111. Choix de conception (1/2) n PtidejSolver, PtidejLibrary – Identification des micro-architectures similaires à un motif de conception – Justifications des micro-architectures identifiées – Interaction avec les mainteneurs 64/80
  • 112. Choix de conception (2/2) 65/80
  • 113. Choix de conception (2/2) Programmation par contraintes avec explications 65/80
  • 114. Choix de conception (2/2) Composer des objets en une hiérarchie Frame Panel tout–partie qui permet au client de manipuler uniformément des objets et des compositions d'objets DrawingEditor DrawingView Tool Drawing Handle Figure Programmation par AbstractFigure contraintes avec explications 65/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  • 115. Plan n Contexte – Identification des choix de conception n Problèmes – Obtention de l’architecture d’un programme – Identification des choix de conception n Contributions n Évaluation, perspectives 66/80
  • 116. Un cadre pour la traçabilité des motifs de conception (1/4) n Métamodélisation – PADL n Analyse de programme – Introspector, Caffeine n Programmation par contraintes – PtidejSolver, PtidejLibrary n Visualisation – PtidejUI 67/80
  • 117. Un cadre pour la traçabilité des motifs de conception (2/4) n Ptidej (Pattern Trace Identification, Detection, and Enhancement in Java) Utilise Produit PADL Architecture Motifs de conception PtidejUI Introspector PtidejSolver Caffeine PtidejLibrary 68/80 Code source Java Micro-architectures identifiées
  • 118. Un cadre pour la traçabilité des motifs de conception (2/4) n Ptidej (Pattern Trace Identification, Detection, and Enhancement in Java) Utilise Produit PADL Architecture Motifs de conception PtidejUI Introspector PtidejSolver Caffeine PtidejLibrary 68/80 Code source Java Micro-architectures identifiées
  • 119. Un cadre pour la traçabilité des motifs de conception (3/4) n Ptidej, ~700 heures de développement – Java • 20 projets, 132 paquetages, 669 classes, 72 interfaces, 79 330 lignes – Claire • 41 fichiers, 45 classes, 235 méthodes, 7 835 lignes – Prolog • 6 fichiers, 76 prédicats, 524 lignes 69/80
  • 120. Un cadre pour la traçabilité des motifs de conception (4/4) Composer des objets en une hiérarchie tout–partie qui permet au client de manipuler uniformément des objets et des compositions d'objets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure 70/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  • 121. Un cadre pour la traçabilité des motifs de conception (4/4) Définitions Introspector Composer des objets en une hiérarchie Caffeine tout–partie qui permet au client de manipuler uniformément des objets et des compositions d'objets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure 70/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  • 122. Un cadre pour la traçabilité des motifs de conception (4/4) PtidejSolver Définitions PtidejLibrary Introspector PtidejUI Caffeine Composer des objets en une hiérarchie tout–partie qui permet au client de manipuler uniformément des objets et des compositions d'objets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure 70/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  • 123. Un cadre pour la traçabilité des motifs de conception (4/4) PtidejSolver Définitions PtidejLibrary Eclipse Introspector PtidejUI Caffeine Composer des objets en une hiérarchie tout–partie qui permet au client de manipuler uniformément des objets et des compositions d'objets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure 70/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure