Méthodes de visualisation de correspondances et de similarité

Méthodes de visualisation de correspondances et de similarité

Visualisation des correspondances 

Confrontation des sources La visualisation de correspondances par confrontation des sources est proposée par la plupart des outils de recherche de similitudes. Elle consiste à afficher les différents extraits de code source correspondant à la similitude trouvée afin de permettre à l’utilisateur de juger de la pertinence du clone trouvé. Ces extraits peuvent être concaténés dans un fichier texte ou bien visualisés par l’intermédiaire d’une interface graphique. Une telle interface graphique peut se présenter sous la forme de deux zones d’affichage défilantes avec la possibilité d’aligner un exemplaire de correspondance avec un autre, ce qui permet de prendre également connaissance du contexte environnant de chaque exemplaire de clone.

Pour une meilleure lisibilité, les exemplaires d’une même correspondance peuvent être marqués par une même couleur. Les sous-zones correspondantes ainsi que les fossés pour des clones non-exacts peuvent également être mis en valeur. Il est possible d’utiliser une application dédiée de visualisation ou bien une sortie HTML, comme cela est l’usage pour les outils de recherche de similitudes uniquement disponibles sous la forme de services Web [76, 94, 95].

Ce procédé de visualisation de similarité, s’il permet d’évaluer précisément la qualité de chaque correspondance, ne peut être utilisé efficacement pour une vue d’ensemble de la nature des similarités trouvées au sein d’un projet ou de plusieurs projets de taille conséquente : des méthodes de visualisation plus globales (dotplot ou visualisation de matrice de similarité) doivent être employées. D’autre part, si chaque correspondance comprend de multiples exemplaires, la visualisation simultanée de tous ces exemplaires peut s’avérer difficile. 

Graphe de zones de correspondances

L’utilisation de graphes de zones de correspondances (également désigné par dotplot) est un moyen assez populaire de visualisation de correspondances. Il s’agit de représenter dans un plan à deux dimensions les emplacements des correspondances par des points. Concrètement si l’on souhaite représenter les clones entre deux ensembles d’unité de code P et Q, nous convenons d’un ordre pour les différentes unités : P = {p1, p2, · · · , pn} et Q = {q1, q2, · · · , qm}. Ces différentes unités sont concaténées et divisées en autant de portions que l’axe des abscisses (pour P) ou l’axe des ordonnées (pour Q) contient de pixels.

LIRE AUSSI :  La période de retour du risque de défaillance d’un aménagement hydrologique

Ainsi chaque pixel représente une zone de code de taille identique et des pixels contigus représentent des zones de code contigües. Les pixels de coordonnées correspondant à une paire de zones de code mises en correspondances sont marqués pour représenter la similarité. En pratique les unités de code analysées pour les abcisses et les ordonnées sont les mêmes (P = Q) ce qui permet l’obtention d’un graphe symétrique avec une diagonale marquée (les zones de code sont similaires avec ellemêmes). Il est envisageable de moduler la nuance du pixel en fonction du degré de similarité de la paire de zones symbolisée par le pixel. Un graphe explorable avec modification interactive d’échelle pourrait être également intéressant. 

Graphe d’appels factorisé

Le graphe d’appels factorisé d’un ensemble de projets peut être obtenu par l’application de la méthode de factorisation décrite au chapitre 7. Au cours de cet algorithme, chaque fonction des projets analysés est découpée en une séquence d’appels de fonction : les fonctions appelées  Fig. 14.1 – Visualisation de correspondances avec confrontation des sources avec Plade (cf annexe B.4) peuvent être des fonctions réelles du code source ou alors des fonctions synthétisées créées à partir de la factorisation d’une séquence de lexèmes primitifs partagée par plusieurs fonctions.

Le graphe d’appels factorisé est donc un graphe d’appels classique augmenté par les fonctions factorisées. Il permet ainsi de visualiser des portions de code partagées. Le graphe d’appels factorisé, dans sa forme exhaustive ne présente pas un intérêt immédiat pour une visualisation par un humain : le nombre de fonctions externalisées par factorisation et le nombre de liens d’appel peuvent être potentiellement assez élevés ce qui rend l’exploration du graphe difficile. Cependant des critères de filtrage peuvent être envisagés afin d’explorer certains types de similarité.

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *