Un cadre pour la traçabilité des motifs de conception             Soutenance de thèse de doctorat                 Yann-Gaë...
Plan       n Contexte         – Identification des choix de conception       n Problèmes         – Obtention de l’architec...
Plan       n Contexte         – Identification des choix de conception       n Problèmes         – Obtention de l’architec...
Contexte                                            (1/2)       n Maintenance   des programmes à objets         – Rétro-co...
Contexte                           (2/2)       n Absence   des développeurs originels         – Roulement       n Absence ...
Scénario                                   (1/8)       n JHotDraw [Gamma98]          – Programme de            dessin vect...
Scénario                                   (1/8)       n JHotDraw [Gamma98]          – Programme de            dessin vect...
Scénario                (2/8)       n Ajoutde        fonctionnalité         – La forme triangle         – Manipulation    ...
Scénario                (2/8)       n Ajoutde        fonctionnalité         – La forme triangle         – Manipulation    ...
Scénario (3/8)       n Implémentation       n Architecture       n Choix   de conception8/80
Scénario (3/8)       n Implémentation       n Architecture       n Choix   de conception8/80
Scénario (3/8)       n Implémentation       n Architecture       n Choix   de conception8/80
Scénario (3/8)       n Implémentation       n Architecture       n Choix   de conception8/80
Scénario (3/8)       n Implémentation       n Architecture       n Choix   de conception8/80
Scénario (3/8)       n Implémentation       n Architecture       n Choix   de conception8/80
Scénario (3/8)       n Implémentation       n Architecture       n Choix   de conception8/80
Scénario (3/8)       n Implémentation       n Architecture       n Choix   de conception8/80
Scénario (3/8)       n Implémentation       n Architecture       n Choix   de conception8/80
Scénario                                                                      (4/8)                                       ...
Scénario                                                                                            (5/8)                 ...
Scénario                                                                   (6/8)                                          ...
Scénario                                                                               (6/8)                              ...
Scénario              (7/8)        n Modification          – Plus pertinente          – Plus rapide12/80
Scénario              (7/8)        n Modification          – Plus pertinente          – Plus rapide12/80
Scénario              (7/8)        n Modification          – Plus pertinente          – Plus rapide12/80
Scénario                        (8/8)        n Choix   de conception          – Facilitent la maintenance            •   R...
Constat                                 (1/2)        n Développement  des programmes :         techniques et outils bien i...
Constat                             (2/2)        n Maintenance des programmes :         techniques et outils déconnectés  ...
Objectifs                             (1/2)        n Maintenance   des programmes à objets          – Rétro-conception    ...
Objectifs                                                                                                                 ...
Objectifs                                                                                                                 ...
Objectifs                                                                                                                 ...
Objectifs                                                                                                                 ...
Objectifs                                                                                                                 ...
Contributions                               (1/4)        n Une   suite d’outils intégrés, Ptidej          – Techniques    ...
Contributions                    (2/4)                        n Implémentation                        n Architecture      ...
Contributions                    (3/4)                        n Implémentation                        n Architecture      ...
Contributions                    (4/4)                        n Implémentation                        n Architecture      ...
Plan        n Contexte          – Identification des choix de conception        n Problèmes          – Obtention de l’arch...
Architecture d’un programme                                                    Frame                             Panel    ...
État de l’art                                           (1/2)        n Programmation             logique floue   [Niere01]...
État de l’art                                  (2/2)        n Classe,   interface, héritage, instanciation          – Défi...
Objectifs        n Définitions                    consensuelles et         constructives          – Association, agrégatio...
Définitions        n    A       B                         Association            – Indique que les instances de A envoient...
Propriétés                            (1/2)        n Multiplicité   : MU          – Nombre d’instances min. et max.       ...
Propriétés                               (2/2)        n Durée   de vie : DV          – Dépendance entre les durées de vie ...
Redéfinitions        n Association          – DV =? ∧ EX = indifférent ∧ MU = [0, +∞] ∧            SI ∈ {variable, paramèt...
Techniques, outils        n Analyses   statiques : Introspector          – Multiplicité, MU          – Site d’invocation, ...
Architecture                  (1/2)        n Introspector          – Classes, interfaces          – Héritage, instanciatio...
Architecture   (2/2)33/80
Architecture           (2/2)          Analyses statiques            et dynamiques33/80
Architecture                                                                          (2/2)                               ...
Plan        n Contexte          – Identification des choix de conception        n Problèmes          – Obtention de l’arch...
Choix de conception        n Découverte   des choix de conception          – Vaste problème  [Shull96]          – Méthodol...
Patrons de conception        n Erich              Gamma et al. ; Patrons de         conception ; Addison-Wesley, 1994   [G...
Patrons de conception        n Erich              Gamma et al. ; Patrons de         conception ; Addison-Wesley, 1994   [G...
Patrons de conception        n Erich              Gamma et al. ; Patrons de         conception ; Addison-Wesley, 1994   [G...
Le patron de conception        Composite – problème        n Composer   des objets en une structure         d’arbre pour r...
Le patron de conception        Composite – solution        n Solutiond’un patron de conception         = motif de concepti...
Le patron de conception        Composite – exemple        n Micro-architecture                           similaire au moti...
Le patron de conception        Composite – exemple        n Micro-architecture                                            ...
Le patron de conception        Composite – exemple        n Micro-architecture                                            ...
Frame                                             Panel        Problème                                      DrawingEditor...
Frame                                             Panel        Problème                                      DrawingEditor...
Frame                                             Panel        Problème                                      DrawingEditor...
Frame                                             Panel        Problème                                      DrawingEditor...
État de l’art                                           (1/2)        n Programmation     logique     [Wuyts98]          – ...
État de l’art                         (2/2)        n Identification   des micro-architectures          – Exactes          ...
Objectifs        n Représentation   des motifs        n Pas de descriptions a priori des          similarités recherchées ...
Proposition        n Programmation     par contraintes    [Tsang93]          – Représentation des motifs          – Passag...
Problème de satisfaction de        contraintes (PSC)           (1/6)                                 [Montanari74]        ...
PSC                                         (2/6)        n PSC   déduit de         – Modèle du motif de conception        ...
Ramification                                                                           1..n                              C...
Ramification                                                                            1..n                              ...
Ramification                                                                            1..n                              ...
Frame                              Panel                                                         DrawingEditor            ...
Frame                              Panel                                                         DrawingEditor            ...
PSC                                 (6/6)        n Identificationdes micro-architectures          similaires au motif de c...
Frame                            Panel        Solution                                                       (1/4)        ...
Frame                            Panel        Solution                                                       (1/4)        ...
Frame                            Panel        Solution                                                       (1/4)        ...
Frame                            Panel        Solution                                                       (1/4)        ...
Solution                             (2/4)        n Explication   de contradiction          – branche u ramification      ...
Frame                            Panel        Solution                                                       (3/4)        ...
Frame                            Panel        Solution                                                       (3/4)        ...
Frame                            Panel        Solution                                                       (3/4)        ...
Frame                            Panel        Solution                                                       (3/4)        ...
Frame                            Panel        Solution                                                       (3/4)        ...
Frame                            Panel        Solution                                                       (3/4)        ...
Solution                            (4/4)        n Explication   de contradiction          – branche < ramification       ...
Programmation par contraintes        avec explications (PPCE)    (1/3)   [Jussien01]        n Programmation    par contrai...
PPCE                                     (2/3)        n Solution            ∃ opérations de retraits et de restauration   ...
PPCE                             (3/3)        n Relaxation   du problème        n Relaxation   des contraintes57/80
Relaxation du problème        [Petit02]   (1/2)        n Retirer                la contrainte entraînant une         contr...
Relaxation du problème        [Petit02]   (1/2)        n Retirer                la contrainte entraînant une         contr...
Relaxation du                                                                                                 Frame       ...
Relaxation du                                                                                                 Frame       ...
Relaxation du                                                                                                 Frame       ...
Relaxation des contraintes (1/3)        n Remplacerune contrainte par un autre         sémantiquement moins forte         ...
Relaxation des contraintes (1/3)        n Remplacerune contrainte par un autre         sémantiquement moins forte         ...
Relaxation des contraintes (1/3)        n Remplacerune contrainte par un autre         sémantiquement moins forte         ...
Relaxation des contraintes (1/3)        n Remplacerune contrainte par un autre         sémantiquement moins forte         ...
Relaxation des contraintes (2/3)        n Remplacerune contrainte par un autre         sémantiquement différente          ...
Relaxation des contraintes (2/3)        n Remplacerune contrainte par un autre         sémantiquement différente          ...
Relaxation des contraintes (2/3)        n Remplacerune contrainte par un autre         sémantiquement différente          ...
Relaxation des contraintes (2/3)        n Remplacerune contrainte par un autre         sémantiquement différente          ...
Relaxation des                                                                                                Frame       ...
Relaxation des                                                                                                Frame       ...
Relaxation des                                                                                                Frame       ...
Technique, outils        n Solveur   de contraintes : PtidejSolver          – Interactif          – Automatique (ê complex...
Choix de conception                     (1/2)        n PtidejSolver,   PtidejLibrary          – Identification des micro-a...
Choix de conception   (2/2)65/80
Choix de conception   (2/2)          Programmation par           contraintes avec             explications65/80
Choix de conception                                                                            (2/2)                      ...
Plan        n Contexte          – Identification des choix de conception        n Problèmes          – Obtention de l’arch...
Un cadre pour la traçabilité des        motifs de conception          (1/4)        n Métamodélisation          – PADL     ...
Un cadre pour la traçabilité des        motifs de conception          (2/4)        n Ptidej   (Pattern Trace Identificatio...
Un cadre pour la traçabilité des        motifs de conception          (2/4)        n Ptidej   (Pattern Trace Identificatio...
Un cadre pour la traçabilité des        motifs de conception          (3/4)        n Ptidej,   ~700 heures de développemen...
Un cadre pour la traçabilité des        motifs de conception          (4/4)                                               ...
Un cadre pour la traçabilité des        motifs de conception          (4/4)               Définitions              Introsp...
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
Phd Thesis
Phd Thesis
Prochain SlideShare
Chargement dans…5
×

Phd Thesis

435 vues

Publié le

Publié dans : Divertissement et humour
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

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

Aucune remarque pour cette diapositive

Phd Thesis

  1. 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 Technologyde Nantes, France International, Inc., Canada
  2. 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, perspectives2/80
  3. 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, perspectives3/80
  4. 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. 5. Contexte (2/2) n Absence des développeurs originels – Roulement n Absence de documentation – Implémentation – Architecture – Choix de conception5/80
  6. 6. Scénario (1/8) n JHotDraw [Gamma98] – Programme de dessin vectoriel – 14 578 lignes de code Java – Figures • Carré, arrondi • Cercle, ellipse • Ligne, polygone6/80 • Connexion, dessin à main levée
  7. 7. Scénario (1/8) n JHotDraw [Gamma98] – Programme de dessin vectoriel – 14 578 lignes de code Java – Figures • Carré, arrondi • Cercle, ellipse • Ligne, polygone6/80 • Connexion, dessin à main levée
  8. 8. Scénario (2/8) n Ajoutde fonctionnalité – La forme triangle – Manipulation identique aux autres formes7/80
  9. 9. Scénario (2/8) n Ajoutde fonctionnalité – La forme triangle – Manipulation identique aux autres formes7/80
  10. 10. Scénario (3/8) n Implémentation n Architecture n Choix de conception8/80
  11. 11. Scénario (3/8) n Implémentation n Architecture n Choix de conception8/80
  12. 12. Scénario (3/8) n Implémentation n Architecture n Choix de conception8/80
  13. 13. Scénario (3/8) n Implémentation n Architecture n Choix de conception8/80
  14. 14. Scénario (3/8) n Implémentation n Architecture n Choix de conception8/80
  15. 15. Scénario (3/8) n Implémentation n Architecture n Choix de conception8/80
  16. 16. Scénario (3/8) n Implémentation n Architecture n Choix de conception8/80
  17. 17. Scénario (3/8) n Implémentation n Architecture n Choix de conception8/80
  18. 18. Scénario (3/8) n Implémentation n Architecture n Choix de conception8/80
  19. 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 CompositeFigure9/80
  20. 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 dobjets10/80
  21. 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 CompositeFigure11/80
  22. 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 CompositeFigure11/80
  23. 23. Scénario (7/8) n Modification – Plus pertinente – Plus rapide12/80
  24. 24. Scénario (7/8) n Modification – Plus pertinente – Plus rapide12/80
  25. 25. Scénario (7/8) n Modification – Plus pertinente – Plus rapide12/80
  26. 26. Scénario (8/8) n Choix de conception – Facilitent la maintenance • Rétro-conception • Compréhension • Traçabilité • Modification – Diminuent les coûts13/80
  27. 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. 28. Constat (2/2) n Maintenance des programmes : techniques et outils déconnectés – Implémentation – Architecture – Choix de conception15/80
  29. 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 programme16/80 – Identification des choix de conception
  30. 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 dobjets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure17/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  31. 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 dobjets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure17/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  32. 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 dobjets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure17/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  33. 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 dobjets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure17/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  34. 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 dobjets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure17/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  35. 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, PtidejLibrary18/80
  36. 36. Contributions (2/4) n Implémentation n Architecture n Choix de conception19/80
  37. 37. Contributions (3/4) n Implémentation n Architecture n Choix de conception20/80
  38. 38. Contributions (4/4) n Implémentation n Architecture n Choix de conception21/80
  39. 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, perspectives22/80
  40. 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 CompositeFigure23/80
  41. 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éveloppement24/80
  42. 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ètes25/80
  43. 43. Objectifs n Définitions consensuelles et constructives – Association, agrégation, composition n Algorithmes d’analyses – Statiques – Dynamiques26/80
  44. 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. 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 B28/80
  46. 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 B29/80
  47. 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. 48. Techniques, outils n Analyses statiques : Introspector – Multiplicité, MU – Site d’invocation, SI n Analyses dynamiques : Caffeine – Durée de vie, DV – Exclusivité, EX31/80
  49. 49. Architecture (1/2) n Introspector – Classes, interfaces – Héritage, instanciation – Association, agrégation n Caffeine – Composition32/80
  50. 50. Architecture (2/2)33/80
  51. 51. Architecture (2/2) Analyses statiques et dynamiques33/80
  52. 52. Architecture (2/2) Frame Panel DrawingEditor DrawingView Tool Drawing Handle Figure AbstractFigure Analyses statiques et dynamiques33/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  53. 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, perspectives34/80
  54. 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 conception35/80
  55. 55. Patrons de conception n Erich Gamma et al. ; Patrons de conception ; Addison-Wesley, 1994 [Gamma94] n Ensemble [Alexander77] – Nom – Problème – Solution – Compromis36/80
  56. 56. Patrons de conception n Erich Gamma et al. ; Patrons de conception ; Addison-Wesley, 1994 [Gamma94] n Ensemble [Alexander77] – Nom – Problème – Solution – Compromis36/80
  57. 57. Patrons de conception n Erich Gamma et al. ; Patrons de conception ; Addison-Wesley, 1994 [Gamma94] n Ensemble [Alexander77] – Nom – Problème – Solution – Compromis36/80
  58. 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’objets37/80
  59. 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 ramifications38/80 opération() ramification.opération()
  60. 60. Le patron de conception Composite – exemple n Micro-architecture similaire au motif Frame Panel DrawingEditor DrawingView Tool Drawing Handle Figure AbstractFigure39/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  61. 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 AbstractFigure39/80 AttributeFigure AttributeFigure DecoratorFigure PolyLineFigure PolyLineFigure DecoratorFigure CompositeFigure CompositeFigure
  62. 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 AbstractFigure39/80 AttributeFigure AttributeFigure DecoratorFigure PolyLineFigure PolyLineFigure DecoratorFigure CompositeFigure CompositeFigure
  63. 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érarchie40/80 choix de conception ? tout–partie qui permet au client de manipuler uniformément des objets et des compositions dobjets
  64. 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érarchie40/80 choix de conception ? tout–partie qui permet au client de manipuler uniformément des objets et des compositions dobjets
  65. 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érarchie40/80 choix de conception ? tout–partie qui permet au client de manipuler uniformément des objets et des compositions dobjets
  66. 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érarchie40/80 choix de conception ? tout–partie qui permet au client de manipuler uniformément des objets et des compositions dobjets
  67. 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 temporelle41/80
  68. 68. État de l’art (2/2) n Identification des micro-architectures – Exactes – Similaires n Interactions avec les mainteneurs42/80
  69. 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 uniforme43/80
  70. 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 mainteneur44/80
  71. 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 contraintes45/80
  72. 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 contraintes46/80
  73. 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 • branche47/80
  74. 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-à-deux48/80
  75. 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-à-deux48/80
  76. 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. 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. 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. 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. 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. 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. 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. 83. Solution (2/4) n Explication de contradiction – branche u ramification n Pas de solution avec cette contrainte52/80
  84. 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. 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} ramification53/80 D = {〈DrawingEditor, Drawing…〉}
  86. 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} ramification53/80 D = {〈DrawingEditor, Drawing…〉}
  87. 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} ramification53/80 D = {〈DrawingEditor, Drawing…〉}
  88. 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} ramification53/80 D = {〈DrawingEditor, Drawing…〉}
  89. 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. 90. Solution (4/4) n Explication de contradiction – branche < ramification – feuille < ramification – branche u ramification n Pas de solution avec ces contraintes54/80
  91. 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ésolution55/80
  92. 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 contradiction56/80 – Ensemble des explications
  93. 93. PPCE (3/3) n Relaxation du problème n Relaxation des contraintes57/80
  94. 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. 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. 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. 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. 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. 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. 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. 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. 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} w60/80 D = {〈DrawingEditor, Drawing…〉}
  103. 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. 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. 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. 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. 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. 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} w62/80 D = {〈DrawingEditor, Drawing…〉}
  109. 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} w62/80 D = {〈DrawingEditor, Drawing…〉}
  110. 110. Technique, outils n Solveur de contraintes : PtidejSolver – Interactif – Automatique (ê complexité) ! n Bibliothèque de contraintes : PtidejLibrary – Héritage direct, indirect – Association, agrégation, composition63/80 – Utilisation, …
  111. 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 mainteneurs64/80
  112. 112. Choix de conception (2/2)65/80
  113. 113. Choix de conception (2/2) Programmation par contraintes avec explications65/80
  114. 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 dobjets DrawingEditor DrawingView Tool Drawing Handle Figure Programmation par AbstractFigure contraintes avec explications65/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  115. 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, perspectives66/80
  116. 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 – PtidejUI67/80
  117. 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 PtidejLibrary68/80 Code source Java Micro-architectures identifiées
  118. 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 PtidejLibrary68/80 Code source Java Micro-architectures identifiées
  119. 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 lignes69/80
  120. 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 dobjets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure70/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure
  121. 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 dobjets Frame Panel Frame Panel DrawingEditor DrawingView DrawingEditor DrawingView Tool Drawing Tool Drawing Handle Figure Handle Figure AbstractFigure AbstractFigure70/80 AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure AttributeFigure DecoratorFigure PolyLineFigure CompositeFigure

×