SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Yann-Gaël Guéhéneuc
Group of Open and Distributed Systems, Experimental Software Engineering
Department of Informatics and Operations Research
University of Montreal
Des signatures numériques
pour améliorer la recherche
structurelle de patrons
Houari Sahraoui
{guehene,sahraouh}@iro.umontreal.ca
2005/10/03
2/??
Motivations
n Restructuration informée des
programmes
– Refactorings
n Motifs de conception (MC)
– Implantations souvent adaptées
– Opportunités de restructurations
3/??
Motivations
n MC définissent des rôles
n Occurrence d’un MC
– Combinaison de classes qui correspondent
aux rôles
– Micro-architecture du programme
n Identifier des MC
– Trouver toutes les combinaisons de
classes qui satisfont les rôles
– Tâche complexe, coûteuse
4/??
Recherche structurelle
n Programmation par contraintes avec
explications
n Coûteuse
n …
5/??
Exemple
n Identifier Abstract Factory dans un
programme de taille moyenne
– JREFACTORY (575 classes)
– 5 rôles (AbstractFactory, ConcreteFactory,
AbstractProduct, Product et Client)
– ~ 5755 = 6.28549E+13 combinaisons
possibles
6/??
Idée
n Réduire l’espace de recherche par des
heuristiques
n Une heuristiques efficaces
– Caractérisation quantitative des rôles dans
les MC
n …
7/??
Idée
n Approche déjà expérimentée
– Par exemple, [Antoniol et al., 98]
n Limitations des approches existantes
– Caractérisations quantitative manuelle
– Hypothèse forte que l’implantation est
conforme à la théorie
n Solution
– Caractérisation automatique à partir
d’occurrences de MC connues
8/??
Principes des signatures
numériques
n Utilisation d’attributs internes des classes
– Taille, héritage, couplage, cohésion
n Les valeurs des attributs internes ne sont pas
uniques
– Une classe peut jouer plus d’un rôle
– Un rôle peut être joué par plus d’une classe
n Les attributs internes sont utilisés pour
réduire l’espace de recherche
– Élimination de classes qui ne joue évidemment
pas un rôle
9/??
Construction des signatures
numériques
Repository
creation
Candidate rule
derivation
Rule
validation
10/??
Construction des signatures
numériques
n Création du référentiel
– Sources
• Études de la littérature (cf., [Bieman et al., 03])
• Outils maison pour l’identification [Guéhéneuc, 01]
• Travaux dans des cours gradués
– Structure
• <program><designmotif><occurrence><role>
Repository
creation
Candidate rule
derivation
Rule
validation
11/??
Construction des signatures
numériques
n Création du référentiel
Repository
creation
Candidate rule
derivation
Rule
validation
JHOTDRAW
v5.1
JREFACTORY
v2.6.24
JUNIT
v3.7
LEXI
v0.0.1α
NETBEANS
v1.0.x
QUICKUML
2001
Total
Nombre de classes 173 575 157 127 5812 224 7 068
Motif de conception Nombre de micro-architecturessimilaires
au motif de conception par programme
Nombre de
rôles
[GAM94]
Nombre de
classes jouant un
rôle par motif de
conception
UsineAbstraite 12 1 13 5 217
Adaptateur 1 17 8 26 4 230
Constructeur 2 1 1 4 4 24
Commande 1 1 1 3 5 67
Composite 1 1 2 4 4 107
Décorateur 1 1 2 4 64
Méthode Usine 3 1 4 4 67
Itérateur 1 5 6 5 30
Observateur 2 3 2 1 8 4 93
Prototype 2 2 3 32
Singleton 2 2 2 2 1 9 1 9
État 2 2 4 3 32
Stratégie 4 4 3 36
Méthode Patron 2 2 2 36
Visiteur 2 2 4 138
Total 93 55 1 182
12/??
Construction des signatures
numériques
n Création du référentiel
– Extraction des métriques pour chaque classes
Repository
creation
Candidate rule
derivation
Rule
validation
Acronymes Descriptions Références
NM Nombre de méthodes [LOR 94]
NMA Nombre de nouvelles méthodes [LOR 94]
NMI Nombre de méthodes héritées [LOR 94]
NMO Nombre de méthodes surchargées [LOR 94]
Size/complexité
WMC Poids du nombre de méthodes [CHI 93]
CLD Profondeur de la classe [TEG 95]
DIT Profondeur de l’arbre d’héritage [CHI 93]Filiation
NOC Nombre d’enfants [CHI 93]
C Connectivité [HIT 95]
Cohésion
LCOM5 Manque de cohésion des méthodes [BRI 97b]
ACMIC Imports classes-méthodes des ancêtres [BRI 97a]
CBO Couplage entre objets [CHI 93]Couplage
DCMEC Imports classes-méthodes des fils [BRI 97a]
13/??
Construction des signatures
numériques
n Inférence des règles candidates
– Rule learner, JRIP (outil Weka)
– Ensemble de données d’apprentissage (pour
chaque rôle): 4 × n cas
• n classes jouant le rôle
• 3 × n classes choisies aléatoirement
– Chaque cas
• <metrique1, metrique2, …, metriquem, rôle>
Repository
creation
Candidate rule
derivation
Rule
validation
14/??
Construction des signatures
numériques
n Inférence des règles candidates
– Forme des signatures
Rules for <Role>:
Signature1, confidence
…
Signaturek, confidence
où
Signature1: {metrique1 ∈ D11; … ; metricm ∈ Dm1}
Repository
creation
Candidate rule
derivation
Rule
validation
15/??
Construction des signatures
numériques
n Inférence des règles candidates
– Élimination des rôles sans un nombre significatif
d’occurrences (20 sur 55)
– Validation croisée
• Méthode leave-one-out
• Élimination des rôles avec un rappel inférieur à 75% (15
sur 35)
• Erreur pour les 20 rôles restant < 10%
Repository
creation
Candidate rule
derivation
Rule
validation
16/??
Construction des signatures
numériques
n Validation des règles
Repository
creation
Candidate rule
derivation
Rule
validation
Motif de conception Rôles Erreur (en %) Rappel (en %)
Itérateur Client 0,00 100,00
Observateur Sujet 0,00 100,00
Observateur Observateur 2,38 100,00
Méthode patron Classe Concrète 0,00 97,60
Prototype Prototype Concret 0,00 96,30
Décorateur Composant Concret 4,17 89,58
Visiteur Visiteur Concret 0,00 88,89
Stratégie Contexte 3,70 88,89
Visiteur Élément Concret 2,04 88,78
Singleton Singleton 8,33 87,50
Méthode Usine Créateur Concret 4,30 87,10
Méthode Usine Produit Concret 3,45 86,21
Adaptateur Cible 4,00 84,00
Composite Feuille 6,47 82,09
Décorateur Décorateur Concret 0,00 80,00
Itérateur Itérateur 0,00 80,00
Commande Receveur 6,67 80,00
État État Concret 6,67 80,00
Stratégie Stratégie Concrète 2,38 78,57
Commande Commande Concrète 3,23 77,42
17/??
Utilisation des signatures
numériques
n Identification structurelle par contraintes
– {V, C, D}
– Variables représentent les rôles d’un MC
– Domaines contiennent toutes les classes d’un
programme
n Signatures numériques réduisent les
domaines
n Signatures numériques réduisent le nombre
de combinaisons possibles
18/??
MC Composite
n Sans signatures
– S = Toutes les classes
– Variables
• client, Dcl = S
• component, Dcn = S
• composite, Dco = S
• leaf, Dle = S
– Contraintes
• association(client, component), héritage(component,
composite), héritage(component, leaf), composition(composite,
component)
n Avec signatures
– Scl, Scn, Sco et Sle ⊆ S
– Variables
• client, Dcl = Scl
• component, Dcn = Scn
• composite, Dco = Sco
• leaf, Dle = Sle
Scl, Scn, Sco, and Sle = Classes
avec des signatures similaires
à celles des quatre rôles
19/??
Composite DM
n Règle pour le rôle Leaf
• NMI = 26 ∧ DIT = 5, 23/67
• NMI = 25 ∧ NMO = 2, 45/67
• DIT = 3 ∧ NM = 12, 9/67
n Réduction de l’espace de recherche
Signatures numériques
Nombre de classes correspondant
à cette signature numérique
Réduction de l’espace de
recherche (en %)
NMI grand et DIT grand 20 69,00
NIM grand et NMO petit 7 89,15
DIT moyen et NM moyen 10 84,50
20/??
Types de règles
n Règles de « bon sens » qui confirment
l’intuition théorique des rôles
n Règles contraires au « bon sens » qui
vont à l’opposé de l’intuition, résultats
d’un manque de données
n Règles invérifiables par l’intuition et qui
demandent une étude plus poussée
21/??
Dernières nouvelles
n Études plus complètes des signatures
numériques
n Application à l’identification
d’occurrences approchées de MC
n …
22/??
Conclusion
n Caractérisation quantitative expérimentale
des rôles dans les motifs de conception
n Signatures numériques pour les rôles définies
par des métriques
n Signatures numériques utilisée pour
améliorer l’identification de motifs
n Réduction significative du temps et des
ressources nécessaires à l’identification
n Applicable à l’identification d’occurrences
approchées de motifs de conception
23/??
Travail futur (une p’tite blague)
23/??
Travail futur (une p’tite blague)
n Signatures numériques de composants
23/??
Travail futur (une p’tite blague)
n Signatures numériques de composants
n Signatures numériques de frameworks
23/??
Travail futur (une p’tite blague)
n Signatures numériques de composants
n Signatures numériques de frameworks
n Signatures numériques d’aspects
23/??
Travail futur (une p’tite blague)
n Signatures numériques de composants
n Signatures numériques de frameworks
n Signatures numériques d’aspects
n Signatures numériques de refactorings
23/??
Travail futur (une p’tite blague)
n Signatures numériques de composants
n Signatures numériques de frameworks
n Signatures numériques d’aspects
n Signatures numériques de refactorings
n Signatures numériques de services
23/??
Travail futur (une p’tite blague)
n Signatures numériques de composants
n Signatures numériques de frameworks
n Signatures numériques d’aspects
n Signatures numériques de refactorings
n Signatures numériques de services
n Signatures numériques de métriques
23/??
Travail futur (une p’tite blague)
n Signatures numériques de composants
n Signatures numériques de frameworks
n Signatures numériques d’aspects
n Signatures numériques de refactorings
n Signatures numériques de services
n Signatures numériques de métriques
n …
24/??
Données
n Précision dépend du référentiel
– P-MARt (Pattern-like Micro-Architecture Repository) est
un référentiel de micro-architectures similaires à
des motifs de conception
– P-MARt et les outils associés sont disponibles
gratuitement sous licence LPGL
S’il vous plaît, contribuez !
– Information, téléchargement et contributions à
http://www.iro.umontreal.ca/~labgelo/p-mart/

Contenu connexe

Similaire à Lmo05.ppt

Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 OverviewGregory Renard
 
Modélisation et simulation des réseaux L2 Info UKA 2024.pptx
Modélisation et simulation des réseaux L2 Info UKA 2024.pptxModélisation et simulation des réseaux L2 Info UKA 2024.pptx
Modélisation et simulation des réseaux L2 Info UKA 2024.pptxBernardKabuatila
 
Symfony CQRS and _event_sourcing
Symfony CQRS and _event_sourcingSymfony CQRS and _event_sourcing
Symfony CQRS and _event_sourcingSymfonyMu
 
XebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc Divad
XebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc DivadXebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc Divad
XebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc DivadPublicis Sapient Engineering
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) univalence
 
Présentation du projet c++ Gestion des étudiants
Présentation du projet c++ Gestion des étudiants Présentation du projet c++ Gestion des étudiants
Présentation du projet c++ Gestion des étudiants Saâd Zerhouni
 
DesignPatternsISI.pdf
DesignPatternsISI.pdfDesignPatternsISI.pdf
DesignPatternsISI.pdfandre543581
 
POO -- (programmation orienté objet).pdf
POO -- (programmation orienté objet).pdfPOO -- (programmation orienté objet).pdf
POO -- (programmation orienté objet).pdfhassanichaymae2903
 
Scala : programmation fonctionnelle
Scala : programmation fonctionnelleScala : programmation fonctionnelle
Scala : programmation fonctionnelleMICHRAFY MUSTAFA
 
Owf 2013 rii panorama leroy
Owf 2013 rii panorama leroyOwf 2013 rii panorama leroy
Owf 2013 rii panorama leroyPatrick MOREAU
 
Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Arnaud Auroux
 

Similaire à Lmo05.ppt (20)

Jcom02.ppt
Jcom02.pptJcom02.ppt
Jcom02.ppt
 
Visual Studio 2008 Overview
Visual Studio 2008 OverviewVisual Studio 2008 Overview
Visual Studio 2008 Overview
 
LMO05.ppt
LMO05.pptLMO05.ppt
LMO05.ppt
 
Modélisation et simulation des réseaux L2 Info UKA 2024.pptx
Modélisation et simulation des réseaux L2 Info UKA 2024.pptxModélisation et simulation des réseaux L2 Info UKA 2024.pptx
Modélisation et simulation des réseaux L2 Info UKA 2024.pptx
 
Symfony CQRS and _event_sourcing
Symfony CQRS and _event_sourcingSymfony CQRS and _event_sourcing
Symfony CQRS and _event_sourcing
 
XebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc Divad
XebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc DivadXebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc Divad
XebiCon'17 : Déploiement continu de modèle de Machine Learning - Loïc Divad
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
 
Initiation r
Initiation rInitiation r
Initiation r
 
Présentation du projet c++ Gestion des étudiants
Présentation du projet c++ Gestion des étudiants Présentation du projet c++ Gestion des étudiants
Présentation du projet c++ Gestion des étudiants
 
DesignPatternsISI.pdf
DesignPatternsISI.pdfDesignPatternsISI.pdf
DesignPatternsISI.pdf
 
Cours de c
Cours de cCours de c
Cours de c
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
Dijkstra kshortest
Dijkstra kshortestDijkstra kshortest
Dijkstra kshortest
 
Hug janvier 2016 -EDF
Hug   janvier 2016 -EDFHug   janvier 2016 -EDF
Hug janvier 2016 -EDF
 
POO -- (programmation orienté objet).pdf
POO -- (programmation orienté objet).pdfPOO -- (programmation orienté objet).pdf
POO -- (programmation orienté objet).pdf
 
Lmo02.ppt
Lmo02.pptLmo02.ppt
Lmo02.ppt
 
Scala : programmation fonctionnelle
Scala : programmation fonctionnelleScala : programmation fonctionnelle
Scala : programmation fonctionnelle
 
Owf 2013 rii panorama leroy
Owf 2013 rii panorama leroyOwf 2013 rii panorama leroy
Owf 2013 rii panorama leroy
 
Projet+com02.ppt
Projet+com02.pptProjet+com02.ppt
Projet+com02.ppt
 
Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8Réutilisation de code entre windows 8 et windows phone 8
Réutilisation de code entre windows 8 et windows phone 8
 

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

Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Yann-Gaël Guéhéneuc
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Yann-Gaël Guéhéneuc
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Yann-Gaël Guéhéneuc
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Yann-Gaël Guéhéneuc
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Yann-Gaël Guéhéneuc
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...Yann-Gaël Guéhéneuc
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesYann-Gaël Guéhéneuc
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Yann-Gaël Guéhéneuc
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1Yann-Gaël Guéhéneuc
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6Yann-Gaël Guéhéneuc
 

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

Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its Consequences
 
Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
 
Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6
 
ICSOC'21
ICSOC'21ICSOC'21
ICSOC'21
 
Vissoft21.ppt
Vissoft21.pptVissoft21.ppt
Vissoft21.ppt
 
Service computation20.ppt
Service computation20.pptService computation20.ppt
Service computation20.ppt
 
Serp4 iot20.ppt
Serp4 iot20.pptSerp4 iot20.ppt
Serp4 iot20.ppt
 
Msr20.ppt
Msr20.pptMsr20.ppt
Msr20.ppt
 
Iwesep19.ppt
Iwesep19.pptIwesep19.ppt
Iwesep19.ppt
 
Icsoc20.ppt
Icsoc20.pptIcsoc20.ppt
Icsoc20.ppt
 
Icsoc18.ppt
Icsoc18.pptIcsoc18.ppt
Icsoc18.ppt
 

Lmo05.ppt

  • 1. Yann-Gaël Guéhéneuc Group of Open and Distributed Systems, Experimental Software Engineering Department of Informatics and Operations Research University of Montreal Des signatures numériques pour améliorer la recherche structurelle de patrons Houari Sahraoui {guehene,sahraouh}@iro.umontreal.ca 2005/10/03
  • 2. 2/?? Motivations n Restructuration informée des programmes – Refactorings n Motifs de conception (MC) – Implantations souvent adaptées – Opportunités de restructurations
  • 3. 3/?? Motivations n MC définissent des rôles n Occurrence d’un MC – Combinaison de classes qui correspondent aux rôles – Micro-architecture du programme n Identifier des MC – Trouver toutes les combinaisons de classes qui satisfont les rôles – Tâche complexe, coûteuse
  • 4. 4/?? Recherche structurelle n Programmation par contraintes avec explications n Coûteuse n …
  • 5. 5/?? Exemple n Identifier Abstract Factory dans un programme de taille moyenne – JREFACTORY (575 classes) – 5 rôles (AbstractFactory, ConcreteFactory, AbstractProduct, Product et Client) – ~ 5755 = 6.28549E+13 combinaisons possibles
  • 6. 6/?? Idée n Réduire l’espace de recherche par des heuristiques n Une heuristiques efficaces – Caractérisation quantitative des rôles dans les MC n …
  • 7. 7/?? Idée n Approche déjà expérimentée – Par exemple, [Antoniol et al., 98] n Limitations des approches existantes – Caractérisations quantitative manuelle – Hypothèse forte que l’implantation est conforme à la théorie n Solution – Caractérisation automatique à partir d’occurrences de MC connues
  • 8. 8/?? Principes des signatures numériques n Utilisation d’attributs internes des classes – Taille, héritage, couplage, cohésion n Les valeurs des attributs internes ne sont pas uniques – Une classe peut jouer plus d’un rôle – Un rôle peut être joué par plus d’une classe n Les attributs internes sont utilisés pour réduire l’espace de recherche – Élimination de classes qui ne joue évidemment pas un rôle
  • 10. 10/?? Construction des signatures numériques n Création du référentiel – Sources • Études de la littérature (cf., [Bieman et al., 03]) • Outils maison pour l’identification [Guéhéneuc, 01] • Travaux dans des cours gradués – Structure • <program><designmotif><occurrence><role> Repository creation Candidate rule derivation Rule validation
  • 11. 11/?? Construction des signatures numériques n Création du référentiel Repository creation Candidate rule derivation Rule validation JHOTDRAW v5.1 JREFACTORY v2.6.24 JUNIT v3.7 LEXI v0.0.1α NETBEANS v1.0.x QUICKUML 2001 Total Nombre de classes 173 575 157 127 5812 224 7 068 Motif de conception Nombre de micro-architecturessimilaires au motif de conception par programme Nombre de rôles [GAM94] Nombre de classes jouant un rôle par motif de conception UsineAbstraite 12 1 13 5 217 Adaptateur 1 17 8 26 4 230 Constructeur 2 1 1 4 4 24 Commande 1 1 1 3 5 67 Composite 1 1 2 4 4 107 Décorateur 1 1 2 4 64 Méthode Usine 3 1 4 4 67 Itérateur 1 5 6 5 30 Observateur 2 3 2 1 8 4 93 Prototype 2 2 3 32 Singleton 2 2 2 2 1 9 1 9 État 2 2 4 3 32 Stratégie 4 4 3 36 Méthode Patron 2 2 2 36 Visiteur 2 2 4 138 Total 93 55 1 182
  • 12. 12/?? Construction des signatures numériques n Création du référentiel – Extraction des métriques pour chaque classes Repository creation Candidate rule derivation Rule validation Acronymes Descriptions Références NM Nombre de méthodes [LOR 94] NMA Nombre de nouvelles méthodes [LOR 94] NMI Nombre de méthodes héritées [LOR 94] NMO Nombre de méthodes surchargées [LOR 94] Size/complexité WMC Poids du nombre de méthodes [CHI 93] CLD Profondeur de la classe [TEG 95] DIT Profondeur de l’arbre d’héritage [CHI 93]Filiation NOC Nombre d’enfants [CHI 93] C Connectivité [HIT 95] Cohésion LCOM5 Manque de cohésion des méthodes [BRI 97b] ACMIC Imports classes-méthodes des ancêtres [BRI 97a] CBO Couplage entre objets [CHI 93]Couplage DCMEC Imports classes-méthodes des fils [BRI 97a]
  • 13. 13/?? Construction des signatures numériques n Inférence des règles candidates – Rule learner, JRIP (outil Weka) – Ensemble de données d’apprentissage (pour chaque rôle): 4 × n cas • n classes jouant le rôle • 3 × n classes choisies aléatoirement – Chaque cas • <metrique1, metrique2, …, metriquem, rôle> Repository creation Candidate rule derivation Rule validation
  • 14. 14/?? Construction des signatures numériques n Inférence des règles candidates – Forme des signatures Rules for <Role>: Signature1, confidence … Signaturek, confidence où Signature1: {metrique1 ∈ D11; … ; metricm ∈ Dm1} Repository creation Candidate rule derivation Rule validation
  • 15. 15/?? Construction des signatures numériques n Inférence des règles candidates – Élimination des rôles sans un nombre significatif d’occurrences (20 sur 55) – Validation croisée • Méthode leave-one-out • Élimination des rôles avec un rappel inférieur à 75% (15 sur 35) • Erreur pour les 20 rôles restant < 10% Repository creation Candidate rule derivation Rule validation
  • 16. 16/?? Construction des signatures numériques n Validation des règles Repository creation Candidate rule derivation Rule validation Motif de conception Rôles Erreur (en %) Rappel (en %) Itérateur Client 0,00 100,00 Observateur Sujet 0,00 100,00 Observateur Observateur 2,38 100,00 Méthode patron Classe Concrète 0,00 97,60 Prototype Prototype Concret 0,00 96,30 Décorateur Composant Concret 4,17 89,58 Visiteur Visiteur Concret 0,00 88,89 Stratégie Contexte 3,70 88,89 Visiteur Élément Concret 2,04 88,78 Singleton Singleton 8,33 87,50 Méthode Usine Créateur Concret 4,30 87,10 Méthode Usine Produit Concret 3,45 86,21 Adaptateur Cible 4,00 84,00 Composite Feuille 6,47 82,09 Décorateur Décorateur Concret 0,00 80,00 Itérateur Itérateur 0,00 80,00 Commande Receveur 6,67 80,00 État État Concret 6,67 80,00 Stratégie Stratégie Concrète 2,38 78,57 Commande Commande Concrète 3,23 77,42
  • 17. 17/?? Utilisation des signatures numériques n Identification structurelle par contraintes – {V, C, D} – Variables représentent les rôles d’un MC – Domaines contiennent toutes les classes d’un programme n Signatures numériques réduisent les domaines n Signatures numériques réduisent le nombre de combinaisons possibles
  • 18. 18/?? MC Composite n Sans signatures – S = Toutes les classes – Variables • client, Dcl = S • component, Dcn = S • composite, Dco = S • leaf, Dle = S – Contraintes • association(client, component), héritage(component, composite), héritage(component, leaf), composition(composite, component) n Avec signatures – Scl, Scn, Sco et Sle ⊆ S – Variables • client, Dcl = Scl • component, Dcn = Scn • composite, Dco = Sco • leaf, Dle = Sle Scl, Scn, Sco, and Sle = Classes avec des signatures similaires à celles des quatre rôles
  • 19. 19/?? Composite DM n Règle pour le rôle Leaf • NMI = 26 ∧ DIT = 5, 23/67 • NMI = 25 ∧ NMO = 2, 45/67 • DIT = 3 ∧ NM = 12, 9/67 n Réduction de l’espace de recherche Signatures numériques Nombre de classes correspondant à cette signature numérique Réduction de l’espace de recherche (en %) NMI grand et DIT grand 20 69,00 NIM grand et NMO petit 7 89,15 DIT moyen et NM moyen 10 84,50
  • 20. 20/?? Types de règles n Règles de « bon sens » qui confirment l’intuition théorique des rôles n Règles contraires au « bon sens » qui vont à l’opposé de l’intuition, résultats d’un manque de données n Règles invérifiables par l’intuition et qui demandent une étude plus poussée
  • 21. 21/?? Dernières nouvelles n Études plus complètes des signatures numériques n Application à l’identification d’occurrences approchées de MC n …
  • 22. 22/?? Conclusion n Caractérisation quantitative expérimentale des rôles dans les motifs de conception n Signatures numériques pour les rôles définies par des métriques n Signatures numériques utilisée pour améliorer l’identification de motifs n Réduction significative du temps et des ressources nécessaires à l’identification n Applicable à l’identification d’occurrences approchées de motifs de conception
  • 23. 23/?? Travail futur (une p’tite blague)
  • 24. 23/?? Travail futur (une p’tite blague) n Signatures numériques de composants
  • 25. 23/?? Travail futur (une p’tite blague) n Signatures numériques de composants n Signatures numériques de frameworks
  • 26. 23/?? Travail futur (une p’tite blague) n Signatures numériques de composants n Signatures numériques de frameworks n Signatures numériques d’aspects
  • 27. 23/?? Travail futur (une p’tite blague) n Signatures numériques de composants n Signatures numériques de frameworks n Signatures numériques d’aspects n Signatures numériques de refactorings
  • 28. 23/?? Travail futur (une p’tite blague) n Signatures numériques de composants n Signatures numériques de frameworks n Signatures numériques d’aspects n Signatures numériques de refactorings n Signatures numériques de services
  • 29. 23/?? Travail futur (une p’tite blague) n Signatures numériques de composants n Signatures numériques de frameworks n Signatures numériques d’aspects n Signatures numériques de refactorings n Signatures numériques de services n Signatures numériques de métriques
  • 30. 23/?? Travail futur (une p’tite blague) n Signatures numériques de composants n Signatures numériques de frameworks n Signatures numériques d’aspects n Signatures numériques de refactorings n Signatures numériques de services n Signatures numériques de métriques n …
  • 31. 24/?? Données n Précision dépend du référentiel – P-MARt (Pattern-like Micro-Architecture Repository) est un référentiel de micro-architectures similaires à des motifs de conception – P-MARt et les outils associés sont disponibles gratuitement sous licence LPGL S’il vous plaît, contribuez ! – Information, téléchargement et contributions à http://www.iro.umontreal.ca/~labgelo/p-mart/