• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Jcom02.ppt
 

Jcom02.ppt

on

  • 239 views

Meta-modeling, design patterns, detection, formalisation

Meta-modeling, design patterns, detection, formalisation

Statistics

Views

Total Views
239
Views on SlideShare
229
Embed Views
10

Actions

Likes
0
Downloads
1
Comments
0

2 Embeds 10

http://www.ptidej.net 9
http://squirrel.polymtl.ca 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Jcom02.ppt Jcom02.ppt Presentation Transcript

    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • Notre solution : le méta-modèle PDL 7/17
    • 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
    • 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
    • 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
    • PDL : mise en œuvre Détection Design pattern détecté ? Comparaison (arc consistance + algorithmes dédiés) Reconstruction Code source Java 11/17
    • Quelques résultats expérimentaux  Application – Ptidej  Détection sur plusieurs frameworks : – java.awt.* – JHotDraw – JUnit – PatternsBox – Ptidej 12/17
    • 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
    • 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
    • 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
    • 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
    • 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