Projet+com02.ppt

Yann-Gaël Guéhéneuc
Yann-Gaël GuéhéneucFull professor à Concordia University

Un méta-modèle pour coupler application et détection des design patterns

1
Un méta-modèle pour coupler
application et détection
des design patterns
Hervé Albin-Amiot
Pierre Cointe
Yann-Gaël Guéhéneuc
{albin, cointe, guehene}@emn.fr
École des Mines
de Nantes, France
Soft-Maint S.A.,
France
Object Technology
International Inc., Canada
2
2/17
Plan
n Le contexte
n Notre objectif
n Nos besoins
n Travaux connexes
n Notre solution : le méta-modèle PDL
n PDL : principe & mise en œuvre
n Questions ouvertes
3
3/17
Le contexte
Améliorer la qualité des développements
par objets en favorisant l’utilisation des
design patterns pour aider à :
– Implémenter
– Comprendre
– Documenter
Notre but est d’améliorer…
Les design patterns sont bien connus et éprouvés dans la recherche académique
comme dans l’industrie.
Les design patterns se situent à mi-chemin entre le code source et la conception
(micro-architectures).
Dans le reste de cette présentation, le GoF (Gamma et al.) est notre référence.
4
4/17
Notre objectif
n Fournir un assistant logiciel aidant à :
– L’implémentation
• Sélection
• Paramétrage
• Génération
– La compréhension et la documentation :
détection de formes exactes
Application
Deux phases principales pour l’implémentation :
• la sélection… ;
• l’application… Qui se décompose elle-même en :
• paramétrage… ;
• génération…
Une formes exacte = un design pattern tel que décrit dans le GoF. Une forme exacte
suit à la fois la structure du design pattern et aussi son intention, ses
collaborations, … telles que décrites dans le GoF.
En opposition avec une forme dégradée dans laquelle certaines caractéristiques
(rôles, relations, …) ne sont pas vérifiées. Par exemple, dans le design pattern
Composite, peut-être la relation d’héritage entre Component et Composite
n’est-elle pas vitale pour satisfaire l’intention du design pattern.
5
5/17
Nos besoins
n Formaliser les design patterns
n Décrire les design patterns en tant que :
– Entités de « première classe »
• Elles savent comment produire du code
• Elles savent identifier leurs propres
occurrences dans du code
– Entités manipulables
• Sur lesquelles on peut raisonner
• Que l’on peut adapter à un contexte spécifique
– Entités avec « traces »
Le GoF décrit 23 design patterns, mais ne les formalisent pas.
Nous devons formaliser pour pouvoir manipuler avec des outils ⇒ Décrire les
design patterns pour…
• comme des entités de première classes
• comme des entités manipulables
On veut obtenir des entités de premières classes : structure plus une touche de
comportement (commun à tous les design patterns et propre à un certain design
pattern). Il faut bien voir qu’un design pattern ce n’est pas seulement une structure,
c’est aussi un comportement.
On peut comparer cette approche avec la notion de classe dans un langage à
classes.
L’idée de modéliser les design patterns pour l’application et la détection permet
d’apporter une réponse au problème de la trace…
6
6/17
Travaux connexes
n Formalisation :
– LePUS [Eden 2000]
– Fragment Model [Florjin et al. 1997]
n Application
– [Budinsky et al. 1996]
n Détection
– [Wuyts 1998], [Antoniol et al. 1998]
Nos travaux sont à la frontière de différents travaux sur les design patterns :
positionnement difficile car on veut faire trois aspects…
Dans notre approche, nous cherchons à formaliser les design patterns pour
appliquer et détecter les design patterns.
La plupart des travaux connexes ne s’intéressent qu’à un seul aspect:
• formalisation :
• LePus : haut niveau d’abstraction de la formalisation, peu ou pas de
génération de code, pas de prise en comptes des idiomes de programmation
propre aux langages ;
•Modèle à fragments : granularité très (voire trop) fine, axé sur les
caractéristique du langage de programmation Smalltalk ;
• application :
• Budinskypropose un catalogue interactif en HTML des design patterns en
vue de la génération de code d’exemple, mais il n’y a pas de possibilité de
paramétrer le code générer pour l’insérer directement dans le code de
l’utilisateur, de plus la détection n’est pas prise en compte ;
• détection :
• Wuyts et Antoniol ne représentent que les design patterns structuraux, ils
ne proposent pas de réelle formalisation, ni de détection.
7
7/17
Notre solution :
le méta-modèle PDL
On utilise un méta-modèle pour formaliser les design patterns.
La technique de méta-modélisation est bien connue pour…
Un méta-modèle pour formaliser/décrire les design patterns…
Ce méta-modèle est un compromis entre les constituants pour décrire les design
patterns et pour décrire les langages de programmation cible, car on veut faire à la
fois de la formalisation, de l’application, et de la détection.
Le méta-modèle est très simple pour décrire les design patterns et le langage Java,
il peut/doit être adapté pour la génération d’autres langages.
8
8/17
PDL : principe
build() … build() …
Modèle abstraitComposite
Modèle concretComposite1
Code Composite 1 Code Composite n
Modèle concretComposite n
Code Composite 2
Modèle concretComposite2
Paramétrage
Méta-entité
Composite
Méta-entité
Proxy
Méta-entité
Observer
Méta-entité
générique Pattern
Décrivent
Spécialisation
RaffinementConstituants
Méta-modèle de patterns
Instanciation
‚
•
ƒ
„
build() …
Sélection
Paramétrage
Application
Les différentes étapes d’utilisation de notre méta-modèle, depuis la définition des
constituants, jusqu’à l’application.
(Voir l’article dans les actes, ou www.yann-
gael.gueheneuc.net/Work/Publications/)
9
9/17
PDL : mise en œuvre
Description
Traduction en un
modèle de pattern
Descriptions
informelles du [GoF]
Instance de PInterface
Instance de PClass
Instance de PAssoc
Instance de PDelegation
name() Instance de PMethod
Instance de Pattern
Légende
Exemple…
Et on a un catalogue d’autres design patterns…
10
10/17
PDL : mise en œuvre
Application
Button
paint()
Label
paint( )
Window
paint( )
addComponent(Component)
removeComponent(Component)
listComponent( )
Component
paint( )
*
components
Code source
Java, Claire
Paramétrage
Génération
11
11/17
PDL : mise en œuvre
Détection
Code source Java
Design pattern
détecté ?
Reconstruction
Comparaison
(arc consistance + algorithmes dédiés)
Source ou code octal (byte-codes)…
Représentation du code source à l’aide des constituants du méta-modèle…
Chaque design pattern est une entité de première classe et donc on peut lui
demander de se comparer avec quelque chose et donc dire si ils sont équivalents…
L’algorithme utilisé est AC-x + des algorithmes ad-hoc qui permettent d’augmenter
l’efficacité et la pertinence pour prendre en compte les idiomes de programmation.
L’algorithme est implémenté au niveau de la classe Pattern, et chaque design
pattern peut être étendu…
12
12/17
Quelques résultats expérimentaux
n Application
– Ptidej
n Détection sur plusieurs frameworks :
– java.awt.*
– JHotDraw
– JUnit
– PatternsBox
– Ptidej
C’est difficile de présenter des exemples d’application, car il est plus facile
d’utiliser l’outil…
Pour la détection, c’est plus facile de donner des résultats concrets…
13
13/17
Détection
java.awt.* 121 1 1 1
JHotDraw 155 1 1 0,3
JUnit 34 1 1 0,4
JEdit 248 1,4
PatternsBox 52 0,3
java.awt.* 121 0,2
JHotDraw 155 1 3 2 0,4
JUnit 34 1 1 0,2
JEdit 248 0,4
PatternsBox 52 0,3
java.awt.* 121 3 1,1
JHotDraw 155 2 2 1 1 0,5
JUnit 34
JEdit 248 0,1
PatternsBox 52 0,2
java.awt.* 121
JHotDraw 155 3 3 0,1
JUnit 34
JEdit 248 1 1 0,1
PatternsBox 52
java.awt.* 121 3,4
JHotDraw 155 2 2 3,2
JUnit 34 4 4 2,5
JEdit 248 3 3 13
PatternsBox 52 1 1 2,8
java.awt.* 121 3 3 0,7
JHotDraw 155 2 2 0,5
JUnit 34 0,4
JEdit 248 1
PatternsBox 52 1 1 0,5
610 29 28 2 3 5,8
Iterator
NOC
Composite
Decorator
Factory
Method
Existing
Observer
Singleton
Détection dans PatternsBox
Hits Missed False hits
Time
(sec.)
Design
patterns
Frameworks
Nous avons appliqué six design patterns très utilisés (nous pensons) sur cinq
frameworks. Les résultats sont donnés sur la dernière ligne…
Nous avons aussi appliqué nos algorithmes à tout les paquetages de Java (java.*)
et les temps sont restés linéaires.
Mais certains design pattern sont difficilement détectables, comme le design pattern
Façade.
14
14/17
Réalisation de l’objectif
n Décrire, appliquer et détecter les design
patterns
– Entités de première classe manipulables
n Nous avons un assistant aidant :
– L’implémentation
– La détection et la documentation de formes
exactes de design patterns
(Cet assistant est « relativement » simple)
Par rapport à notre objectif de départ, notre méta-modèle apporte une solution
satisfaisante…
15
15/17
Questions ouvertes 1/3
n Par rapport au contexte :
Améliorer la qualité des
développements par objets en
favorisant l’utilisation des design
patterns
Mais au cours de nos recherches, nous avons rencontrés de nombreux problèmes
pour lesquels nous n’avons pas de réponse définitive, encore …
16
16/17
Questions ouvertes 2/3
n Formalisation :
– Un unique méta-modèle est-il suffisant ?
– Comment représenter les compromis ?
n Application :
– Comment bien décrire le code source ?
– Est-ce qu’elle est toujours possible et
intéressante ?
Un unique méta-modèle : Nous pensons que non, nous cherchons à modéliser
l’intention des design patterns…
Compromis : Pour l’instant, seulement des solutions ad-hoc…
Source code : FAMIX + définitions sémantiquement opérationnelles des relations
d’association, d’agrégation, et de composition…
Possible/intéressante : avec le design patterns Façade, l’utilisateur perd plus de
temps à paramétrer qu’à écrire le code lui-même… Mais c’est quand même utile
pour la validation, la détection, …
17
17/17
Questions ouvertes 3/3
n Compréhension :
– Est-il possible de détecter les formes
exactes de n’importe quel design pattern ?
– Est-il possible de détecter les formes
approchées de n’importe quel design
pattern ?
Formes exactes : Non, mais cela reste une question ouverte…
Formes dégradées : Difficile, quel est le seuil de tolérance entre une forme
dégradée et quelque chose qui n’est pas un design pattern ?…

Recommandé

Projet COM02.ppt par
Projet COM02.pptProjet COM02.ppt
Projet COM02.pptPtidej Team
383 vues17 diapositives
LMO02.ppt par
LMO02.pptLMO02.ppt
LMO02.pptPtidej Team
307 vues17 diapositives
Gestion des patrons de conception par
Gestion des patrons de conceptionGestion des patrons de conception
Gestion des patrons de conceptionlucas34990
2.1K vues45 diapositives
Gl slides-cours-1 par
Gl slides-cours-1Gl slides-cours-1
Gl slides-cours-1Sami Neili
1.6K vues63 diapositives
CM uml-concepts-avances par
CM uml-concepts-avancesCM uml-concepts-avances
CM uml-concepts-avancesYannick Prié (Enseignement)
947 vues29 diapositives
CM uml-intro par
CM uml-introCM uml-intro
CM uml-introYannick Prié (Enseignement)
1.7K vues30 diapositives

Contenu connexe

Tendances

U M L Analyse Et Conception Objet par
U M L Analyse Et Conception ObjetU M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetAmine Chkr
4.8K vues259 diapositives
cours algorithme et structure de données 1er année par
cours algorithme et structure de données 1er annéecours algorithme et structure de données 1er année
cours algorithme et structure de données 1er annéeMissaoui Abdelbaki
6.1K vues85 diapositives
Design Patterns par
Design PatternsDesign Patterns
Design PatternsKoffi Sani
773 vues50 diapositives
Introduction à Uml par
Introduction à UmlIntroduction à Uml
Introduction à UmlMireille Blay-Fornarino
3.1K vues107 diapositives
Cours Visual Basic.NET par
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NETAziz Darouichi
3.5K vues269 diapositives
CM uml-diag-dynamiques-interaction par
CM uml-diag-dynamiques-interactionCM uml-diag-dynamiques-interaction
CM uml-diag-dynamiques-interactionYannick Prié (Enseignement)
1.8K vues54 diapositives

Similaire à Projet+com02.ppt

Lmo02.ppt par
Lmo02.pptLmo02.ppt
Lmo02.pptYann-Gaël Guéhéneuc
30 vues17 diapositives
Jcom02.ppt par
Jcom02.pptJcom02.ppt
Jcom02.pptPtidej Team
919 vues17 diapositives
UML Part1-Introduction Mansouri par
UML Part1-Introduction MansouriUML Part1-Introduction Mansouri
UML Part1-Introduction MansouriMansouri Khalifa
1.9K vues60 diapositives
Introduction au Génie Logiciel par
Introduction au Génie LogicielIntroduction au Génie Logiciel
Introduction au Génie Logicielguest0032c8
8.3K vues34 diapositives
Cours Programmation Orientée Objet en C++ par
Cours Programmation Orientée Objet en C++Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Amina HAMEURLAINE
1.4K vues94 diapositives
cours-01-intro.pdf par
cours-01-intro.pdfcours-01-intro.pdf
cours-01-intro.pdfNihedBahria2
3 vues57 diapositives

Similaire à Projet+com02.ppt(20)

Introduction au Génie Logiciel par guest0032c8
Introduction au Génie LogicielIntroduction au Génie Logiciel
Introduction au Génie Logiciel
guest0032c88.3K vues
Cours Programmation Orientée Objet en C++ par Amina HAMEURLAINE
Cours Programmation Orientée Objet en C++Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++
Amina HAMEURLAINE1.4K vues
MEMO Pour débuter en formation à distance (FAD) par Cégep à distance
MEMO Pour débuter en formation à distance (FAD)MEMO Pour débuter en formation à distance (FAD)
MEMO Pour débuter en formation à distance (FAD)
Mockito - Design + tests par Brice Duteil par Normandy JUG
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
Normandy JUG996 vues
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007) par Ardesi Midi-Pyrénées
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
Réussir son analyse des besoins dans la conduite d'un projet informatique (2007)
AnalyseEtConceptionChapire1.pptx par houdaounaies
AnalyseEtConceptionChapire1.pptxAnalyseEtConceptionChapire1.pptx
AnalyseEtConceptionChapire1.pptx
houdaounaies10 vues
La Meta-programmation par Microsoft
La Meta-programmation La Meta-programmation
La Meta-programmation
Microsoft1.2K vues
Programmation linéniaire par Mohammed Zaoui
Programmation linéniaire Programmation linéniaire
Programmation linéniaire
Mohammed Zaoui14.7K vues
(Re) Cadrage en équipe agile (Intégrer Scrum et Design Thinking : REX) par Claire Morin
(Re) Cadrage en équipe agile (Intégrer Scrum et Design Thinking : REX)(Re) Cadrage en équipe agile (Intégrer Scrum et Design Thinking : REX)
(Re) Cadrage en équipe agile (Intégrer Scrum et Design Thinking : REX)
Claire Morin2K vues
Captronic grenoble 01102014 version presentee par Patrick MOREAU
Captronic grenoble 01102014 version presenteeCaptronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presentee
Patrick MOREAU2.4K vues

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

ICSOC'21 par
ICSOC'21ICSOC'21
ICSOC'21Yann-Gaël Guéhéneuc
191 vues62 diapositives
Vissoft21.ppt par
Vissoft21.pptVissoft21.ppt
Vissoft21.pptYann-Gaël Guéhéneuc
1.2K vues15 diapositives
Service computation20.ppt par
Service computation20.pptService computation20.ppt
Service computation20.pptYann-Gaël Guéhéneuc
54 vues36 diapositives
Serp4 iot20.ppt par
Serp4 iot20.pptSerp4 iot20.ppt
Serp4 iot20.pptYann-Gaël Guéhéneuc
55 vues39 diapositives
Msr20.ppt par
Msr20.pptMsr20.ppt
Msr20.pptYann-Gaël Guéhéneuc
50 vues10 diapositives
Iwesep19.ppt par
Iwesep19.pptIwesep19.ppt
Iwesep19.pptYann-Gaël Guéhéneuc
45 vues15 diapositives

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

Projet+com02.ppt

  • 1. 1 Un méta-modèle pour coupler application et détection des design patterns Hervé Albin-Amiot Pierre Cointe Yann-Gaël Guéhéneuc {albin, cointe, guehene}@emn.fr École des Mines de Nantes, France Soft-Maint S.A., France Object Technology International Inc., Canada
  • 2. 2 2/17 Plan n Le contexte n Notre objectif n Nos besoins n Travaux connexes n Notre solution : le méta-modèle PDL n PDL : principe & mise en œuvre n Questions ouvertes
  • 3. 3 3/17 Le contexte Améliorer la qualité des développements par objets en favorisant l’utilisation des design patterns pour aider à : – Implémenter – Comprendre – Documenter Notre but est d’améliorer… Les design patterns sont bien connus et éprouvés dans la recherche académique comme dans l’industrie. Les design patterns se situent à mi-chemin entre le code source et la conception (micro-architectures). Dans le reste de cette présentation, le GoF (Gamma et al.) est notre référence.
  • 4. 4 4/17 Notre objectif n Fournir un assistant logiciel aidant à : – L’implémentation • Sélection • Paramétrage • Génération – La compréhension et la documentation : détection de formes exactes Application Deux phases principales pour l’implémentation : • la sélection… ; • l’application… Qui se décompose elle-même en : • paramétrage… ; • génération… Une formes exacte = un design pattern tel que décrit dans le GoF. Une forme exacte suit à la fois la structure du design pattern et aussi son intention, ses collaborations, … telles que décrites dans le GoF. En opposition avec une forme dégradée dans laquelle certaines caractéristiques (rôles, relations, …) ne sont pas vérifiées. Par exemple, dans le design pattern Composite, peut-être la relation d’héritage entre Component et Composite n’est-elle pas vitale pour satisfaire l’intention du design pattern.
  • 5. 5 5/17 Nos besoins n Formaliser les design patterns n Décrire les design patterns en tant que : – Entités de « première classe » • Elles savent comment produire du code • Elles savent identifier leurs propres occurrences dans du code – Entités manipulables • Sur lesquelles on peut raisonner • Que l’on peut adapter à un contexte spécifique – Entités avec « traces » Le GoF décrit 23 design patterns, mais ne les formalisent pas. Nous devons formaliser pour pouvoir manipuler avec des outils ⇒ Décrire les design patterns pour… • comme des entités de première classes • comme des entités manipulables On veut obtenir des entités de premières classes : structure plus une touche de comportement (commun à tous les design patterns et propre à un certain design pattern). Il faut bien voir qu’un design pattern ce n’est pas seulement une structure, c’est aussi un comportement. On peut comparer cette approche avec la notion de classe dans un langage à classes. L’idée de modéliser les design patterns pour l’application et la détection permet d’apporter une réponse au problème de la trace…
  • 6. 6 6/17 Travaux connexes n Formalisation : – LePUS [Eden 2000] – Fragment Model [Florjin et al. 1997] n Application – [Budinsky et al. 1996] n Détection – [Wuyts 1998], [Antoniol et al. 1998] Nos travaux sont à la frontière de différents travaux sur les design patterns : positionnement difficile car on veut faire trois aspects… Dans notre approche, nous cherchons à formaliser les design patterns pour appliquer et détecter les design patterns. La plupart des travaux connexes ne s’intéressent qu’à un seul aspect: • formalisation : • LePus : haut niveau d’abstraction de la formalisation, peu ou pas de génération de code, pas de prise en comptes des idiomes de programmation propre aux langages ; •Modèle à fragments : granularité très (voire trop) fine, axé sur les caractéristique du langage de programmation Smalltalk ; • application : • Budinskypropose un catalogue interactif en HTML des design patterns en vue de la génération de code d’exemple, mais il n’y a pas de possibilité de paramétrer le code générer pour l’insérer directement dans le code de l’utilisateur, de plus la détection n’est pas prise en compte ; • détection : • Wuyts et Antoniol ne représentent que les design patterns structuraux, ils ne proposent pas de réelle formalisation, ni de détection.
  • 7. 7 7/17 Notre solution : le méta-modèle PDL On utilise un méta-modèle pour formaliser les design patterns. La technique de méta-modélisation est bien connue pour… Un méta-modèle pour formaliser/décrire les design patterns… Ce méta-modèle est un compromis entre les constituants pour décrire les design patterns et pour décrire les langages de programmation cible, car on veut faire à la fois de la formalisation, de l’application, et de la détection. Le méta-modèle est très simple pour décrire les design patterns et le langage Java, il peut/doit être adapté pour la génération d’autres langages.
  • 8. 8 8/17 PDL : principe build() … build() … Modèle abstraitComposite Modèle concretComposite1 Code Composite 1 Code Composite n Modèle concretComposite n Code Composite 2 Modèle concretComposite2 Paramétrage Méta-entité Composite Méta-entité Proxy Méta-entité Observer Méta-entité générique Pattern Décrivent Spécialisation RaffinementConstituants Méta-modèle de patterns Instanciation ‚ • ƒ „ build() … Sélection Paramétrage Application Les différentes étapes d’utilisation de notre méta-modèle, depuis la définition des constituants, jusqu’à l’application. (Voir l’article dans les actes, ou www.yann- gael.gueheneuc.net/Work/Publications/)
  • 9. 9 9/17 PDL : mise en œuvre Description Traduction en un modèle de pattern Descriptions informelles du [GoF] Instance de PInterface Instance de PClass Instance de PAssoc Instance de PDelegation name() Instance de PMethod Instance de Pattern Légende Exemple… Et on a un catalogue d’autres design patterns…
  • 10. 10 10/17 PDL : mise en œuvre Application Button paint() Label paint( ) Window paint( ) addComponent(Component) removeComponent(Component) listComponent( ) Component paint( ) * components Code source Java, Claire Paramétrage Génération
  • 11. 11 11/17 PDL : mise en œuvre Détection Code source Java Design pattern détecté ? Reconstruction Comparaison (arc consistance + algorithmes dédiés) Source ou code octal (byte-codes)… Représentation du code source à l’aide des constituants du méta-modèle… Chaque design pattern est une entité de première classe et donc on peut lui demander de se comparer avec quelque chose et donc dire si ils sont équivalents… L’algorithme utilisé est AC-x + des algorithmes ad-hoc qui permettent d’augmenter l’efficacité et la pertinence pour prendre en compte les idiomes de programmation. L’algorithme est implémenté au niveau de la classe Pattern, et chaque design pattern peut être étendu…
  • 12. 12 12/17 Quelques résultats expérimentaux n Application – Ptidej n Détection sur plusieurs frameworks : – java.awt.* – JHotDraw – JUnit – PatternsBox – Ptidej C’est difficile de présenter des exemples d’application, car il est plus facile d’utiliser l’outil… Pour la détection, c’est plus facile de donner des résultats concrets…
  • 13. 13 13/17 Détection java.awt.* 121 1 1 1 JHotDraw 155 1 1 0,3 JUnit 34 1 1 0,4 JEdit 248 1,4 PatternsBox 52 0,3 java.awt.* 121 0,2 JHotDraw 155 1 3 2 0,4 JUnit 34 1 1 0,2 JEdit 248 0,4 PatternsBox 52 0,3 java.awt.* 121 3 1,1 JHotDraw 155 2 2 1 1 0,5 JUnit 34 JEdit 248 0,1 PatternsBox 52 0,2 java.awt.* 121 JHotDraw 155 3 3 0,1 JUnit 34 JEdit 248 1 1 0,1 PatternsBox 52 java.awt.* 121 3,4 JHotDraw 155 2 2 3,2 JUnit 34 4 4 2,5 JEdit 248 3 3 13 PatternsBox 52 1 1 2,8 java.awt.* 121 3 3 0,7 JHotDraw 155 2 2 0,5 JUnit 34 0,4 JEdit 248 1 PatternsBox 52 1 1 0,5 610 29 28 2 3 5,8 Iterator NOC Composite Decorator Factory Method Existing Observer Singleton Détection dans PatternsBox Hits Missed False hits Time (sec.) Design patterns Frameworks Nous avons appliqué six design patterns très utilisés (nous pensons) sur cinq frameworks. Les résultats sont donnés sur la dernière ligne… Nous avons aussi appliqué nos algorithmes à tout les paquetages de Java (java.*) et les temps sont restés linéaires. Mais certains design pattern sont difficilement détectables, comme le design pattern Façade.
  • 14. 14 14/17 Réalisation de l’objectif n Décrire, appliquer et détecter les design patterns – Entités de première classe manipulables n Nous avons un assistant aidant : – L’implémentation – La détection et la documentation de formes exactes de design patterns (Cet assistant est « relativement » simple) Par rapport à notre objectif de départ, notre méta-modèle apporte une solution satisfaisante…
  • 15. 15 15/17 Questions ouvertes 1/3 n Par rapport au contexte : Améliorer la qualité des développements par objets en favorisant l’utilisation des design patterns Mais au cours de nos recherches, nous avons rencontrés de nombreux problèmes pour lesquels nous n’avons pas de réponse définitive, encore …
  • 16. 16 16/17 Questions ouvertes 2/3 n Formalisation : – Un unique méta-modèle est-il suffisant ? – Comment représenter les compromis ? n Application : – Comment bien décrire le code source ? – Est-ce qu’elle est toujours possible et intéressante ? Un unique méta-modèle : Nous pensons que non, nous cherchons à modéliser l’intention des design patterns… Compromis : Pour l’instant, seulement des solutions ad-hoc… Source code : FAMIX + définitions sémantiquement opérationnelles des relations d’association, d’agrégation, et de composition… Possible/intéressante : avec le design patterns Façade, l’utilisateur perd plus de temps à paramétrer qu’à écrire le code lui-même… Mais c’est quand même utile pour la validation, la détection, …
  • 17. 17 17/17 Questions ouvertes 3/3 n Compréhension : – Est-il possible de détecter les formes exactes de n’importe quel design pattern ? – Est-il possible de détecter les formes approchées de n’importe quel design pattern ? Formes exactes : Non, mais cela reste une question ouverte… Formes dégradées : Difficile, quel est le seuil de tolérance entre une forme dégradée et quelque chose qui n’est pas un design pattern ?…