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
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
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
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