Your SlideShare is downloading. ×
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Jcom02.ppt
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Jcom02.ppt

151

Published on

Meta-modeling, design patterns, detection, formalisation

Meta-modeling, design patterns, detection, formalisation

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
151
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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 Soft-Maint S.A., France École des Mines de Nantes, France Object Technology International Inc., Canada
  • 2. Plan  Le contexte  Notre objectif  Nos besoins  Travaux connexes  Notre solution : le méta-modèle PDL  PDL : principe & mise en œuvre  Questions ouvertes 2/17
  • 3. Le contexte Améliorer la qualité des développements par objets en favorisant l’utilisation des design patterns pour aider à : – Implémenter – Comprendre – Documenter 3/17
  • 4. Notre objectif  Fournir un assistant logiciel aidant à : – L’implémentation • Sélection • Paramétrage • Génération Application – La compréhension et la documentation : détection de formes exactes 4/17
  • 5. Nos besoins  Formaliser les design patterns  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 » 5/17
  • 6. Travaux connexes  Formalisation : – LePUS [Eden 2000] – Fragment Model [Florjin et al. 1997]  Application – [Budinsky et al. 1996]  Détection – [Wuyts 1998], [Antoniol et al. 1998] 6/17
  • 7. Notre solution : le méta-modèle PDL 7/17
  • 8. PDL : principe Méta-modèle de patterns Méta-entité générique Pattern Décrivent Spécialisation Méta-entité Observer Constituants Raffinement   Méta-entité Composite Instanciation Méta-entité Proxy  Sélection Modèle abstrait Composite Paramétrage Modèle concret Composite 1 build() Code Composite 1 8/17   Modèle concret Composite 2 build() Code Composite 2  Paramétrage Modèle concret Composite n build()  Code Composite n Application
  • 9. PDL : mise en œuvre Description Descriptions informelles du [GoF] Traduction en un modèle de pattern Légende Instance de Pattern Instance de PInterface Instance de PClass Instance de PAssoc Instance de PDelegation 9/17 name() Instance de PMethod
  • 10. PDL : mise en œuvre Application Component components paint( ) Button paint() * Label paint( ) Window paint( ) addComponent(Component) removeComponent(Component) listComponent( ) Paramétrage Génération 10/17 Code source Java, Claire
  • 11. PDL : mise en œuvre Détection Design pattern détecté ? Comparaison (arc consistance + algorithmes dédiés) Reconstruction Code source Java 11/17
  • 12. Quelques résultats expérimentaux  Application – Ptidej  Détection sur plusieurs frameworks : – java.awt.* – JHotDraw – JUnit – PatternsBox – Ptidej 12/17
  • 13. Détection Détection dans PatternsBox Design patterns Frameworks NOC Existing Hits Missed False hits Time (sec.) java.awt.* JHotDraw Composite JUnit JEdit PatternsBox 121 1 1 1 155 1 1 0,3 34 1 1 0,4 0,3 121 0,2 155 1 3 JUnit 34 1 1 JEdit 248 0,4 PatternsBox 52 0,3 java.aw t.* 121 3 JHotDraw 155 2 JUnit 34 JEdit 248 0,1 PatternsBox 52 0,2 java.aw t.* 121 JHotDraw Iterator 52 JHotDraw Factory Method 1,4 java.aw t.* Decorator 248 155 2 0,4 0,2 1,1 2 1 1 0,5 3 3 0,1 1 1 0,1 248 PatternsBox 52 java.aw t.* 121 JHotDraw 155 2 2 3,2 JUnit 34 4 4 2,5 JEdit 248 3 3 13 PatternsBox 52 1 1 2,8 java.aw t.* 121 3 3 0,7 JHotDraw Singleton 34 JEdit Observer JUnit 155 2 2 0,5 3,4 34 JEdit 13/17 JUnit 248 0,4 PatternsBox 52 1 1 610 29 28 1 0,5 2 3 5,8
  • 14. Réalisation de l’objectif  Décrire, appliquer et détecter les design patterns – Entités de première classe manipulables  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) 14/17
  • 15. Questions ouvertes  Par rapport au contexte : Améliorer la qualité des développements par objets en favorisant l’utilisation des design patterns 15/17 1/3
  • 16. Questions ouvertes  Formalisation 2/3 : – Un unique méta-modèle est-il suffisant ? – Comment représenter les compromis ?  Application : – Comment bien décrire le code source ? – Est-ce qu’elle est toujours possible et intéressante ? 16/17
  • 17. Questions ouvertes  Compréhension 3/3 : – 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 ? 17/17

×