• Like
Jcom02.ppt
Upcoming SlideShare
Loading in...5
×
Uploaded on

Meta-modeling, design patterns, detection, formalisation

Meta-modeling, design patterns, detection, formalisation

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
104
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
2
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