1. École des Mines de Nantes
Détection et correction
automatique des défauts de
conception dans
les architectures à objets
Yann-Gaël Guéhéneuc
Informatique
Département informatique
École des Mines de Nantes – OTI
2. Environnement
n Équipe Objets, Composants et Modèles
– Langages à objets
– Génie logiciel + Méta-modélisation
– Composants, Aspects, Systèmes…
n Avec Hervé Albin-Amiot
n Sous la direction du Pr. Pierre Cointe
+ Équipe Contraintes
n En collaboration avec OTI : Object Technology
International Inc., Canada
2/23
3. Aujourd’hui
n Vulgariser sans simplifier…
– Une voiture !
n Détectionet correction
automatique des
défauts de conception dans les
architectures à objets
3/23
4. Détection et correction
automatique des défauts
de conception dans les
Architectures à objets architectures à objets
n Langages à objets « à classes »
– Une classe = un moule : la classe Voiture
– Un objet = une voiture : l’objet clio
– Une classe = un ensemble d’attributs : un
moteur et quatre roue s
– Une classe = un ensemble de méthodes :
avancer(), tourner()…
4/23
⇒ Des relations entre classes
5. Détection et correction
automatique des défauts
de conception dans les
Architectures à objets architectures à objets
n Un programme à objets
– Un ensemble de classes : Voiture, Moteur,
Roue, Volant , TrainDeRoues…
– Et leurs méthodes : avancer(),
faireAvancer(), tourner()…
(Et les relations correspondantes)
– Un ensemble d’objets communicants :
clio.moteur.faireAvancer(roueAG)
clio.moteur.faireAvancer(roueAD)
5/23 …
6. Détection et correction
automatique des défauts
de conception dans les
Architectures à objets architectures à objets
n Une représentation
Voiture
Voiture Moteur Roue
monMoteur:Moteur 1
roueAG:Roue ... ...
roueAD:Roue
avancer() avancer()
avancer() direction) faireAvancer(Roue uneRoue)
tourner(int tourner(int direction)
tourner(int direction)
4..5
6/23
7. Détection et correction
automatique des défauts
de conception dans les
Défauts de conception architectures à objets
n Problème
– Choix de conception
– Choix et nombre des classes
– Choix et nombre des relations
7/23
8. Détection et correction
automatique des défauts
de conception dans les
Défauts de conception architectures à objets
TrainDeRoues
1
...
tourner(int direction)
2 Roue
...
Voiture Moteur avancer()
1 tourner(int direction)
... ...
avancer()
tourner(int direction) faireAvancer(Roue uneRoue)
RoueAG RoueAD
1
... ...
... ...
1
8/23
9. Détection et correction
automatique des défauts
de conception dans les
Défauts de conception architectures à objets
n Solutions
– Patrons de conception
• Un nom
• Un problème
• Une solution
• Les conséquences
– « Anti-patrons »
– Défauts de conception
9/23
10. Détection et correction
automatique des défauts
de conception dans les
Défauts de conception architectures à objets
n Le patron de conception Composite
– Problème : composer des objets sous
forme d’arbre « tout – parties », de telle
sorte que le traitement du tout et des
parties soit uniforme
10/23
11. Détection et correction
automatique des défauts
de conception dans les
Défauts de conception architectures à objets
n Le patron de conception Composite
– Solution :
11/23
12. Détection et correction
automatique des défauts
de conception dans les
Défauts de conception architectures à objets
n Le patron de conception Composite
– Les conséquences :
• Défini des hiérarchies de primitives et de
composites
• Là où le client attend une primitive, il peut aussi
recevoir un composite
• Rend le client plus simple
• Rend l’ajout de primitives simple
• Peut rendre la conception trop générale
•…
12/23
13. Détection et correction
automatique des défauts
de conception dans les
Détection et correction architectures à objets
n Détecter et corriger ⇒ Modéliser !
n Modéliser les patrons
– Quoi modéliser ?
• Problème
• Solution
• Compromis
– Comment modéliser ?
13/23
• Méta-modélisation = un modèle de modèles
14. Détection et correction
automatique des défauts
de conception dans les
Détection et correction architectures à objets
n Modéliser la solution des patrons
– Classes
– Attributs
– Méthodes
⇒ Relations
n Dans les architectures à objets ?
– Pareil !
14/23
15. Détection et correction
automatique des défauts
de conception dans les
Détection et correction architectures à objets
n Notre méta-modèle
15/23
16. Détection et correction
automatique des défauts
de conception dans les
Détection et correction architectures à objets
n Après la modélisation ?
– Détection
– Génération
– Correction
16/23
17. Détection et correction
automatique des défauts
de conception dans les
Automatique architectures à objets
n Un modèle de patron sait
– Se détecter dans un modèle d’une
architecture à objets
• Arc consistance
– Se détecter sous forme dégradée
• Qu’est-ce qu’une forme dégradée ?
• Programmation par contraintes avec
explications
⇒ Outil Ptidej
17/23
18. Détection et correction
automatique des défauts
de conception dans les
Automatique architectures à objets
n Un modèle de patron sait
– Générer du code qui lui corresponde
• Java
• Claire
⇒ Outil PatternsBox (Hervé Albin-Amiot)
– Corriger un modèle d’architecture à objets
• Code ou modèle ?
⇒ Outil Ptidej + JavaXL (Hervé Albin-Amiot)
18/23
19. Détection et correction
automatique des défauts
de conception dans les
Automatique architectures à objets
Composite !
TrainDeRoues
1
...
tourner(int direction)
2 Roue
...
Voiture Moteur avancer()
1 tourner(int direction)
... ...
avancer()
tourner(int direction) faireAvancer(Roue uneRoue)
RoueAG RoueAD
1
... ...
... ...
1
19/23
20. Détection et correction
automatique des défauts
de conception dans les
Automatique architectures à objets
1
Voiture Moteur Direction
1 n
ensembleDirection:Direction ...
avancer() avancer()
faireAvancer(Roue uneRoue)
tourner(int direction) tourner(int direction)
Roue TrainDeRoues
... roues:Ensemble
avancer() avancer()
tourner(int direction) tourner(int direction)
RoueAG RoueAD
... ...
... ...
20/23
21. Travaux en cours
n Définitions des relations entre classes ?
n Affinagede la génération et de la
détection des relations entre classes
n Modélisation de l’exécution des
programmes
⇒ Caffeine (machine virtuelle + Prolog)
21/23
22. Travaux futurs
n Formalisationdes « anti-patrons » et
des défauts de conception
n Intégration
dans un environnement de
développement intégré/incrémental
n Mise à l’échelle + études de cas
22/23