Ahmed Sfayhi, Houari Sahraoui {sfayhiah,sahraouh}@iro.umontreal.ca What you See is what you Asked for: An Effort-based Transformation of Code Analysis Tasks into Interactive Visualization Scenarios Ahmed Sfayhi, Houari Sahraoui {sfayhiah,sahraouh}@iro.umontreal.ca
Problème La visualisation est une des soluton propos/ pour realiser les tache de comprehension du code du retro ingenieurie et de maintenance Pluseurs outils ont été propose pour resoudre different probleme
Problème Les outils existants sont développés pour des tâches spécifiques Il existe différentes manières d'utiliser ces outils L'effort dépend de la manière d’utilisation Comment Utiliser un outil avec le moins d'effort Paramétrer et utiliser un outil de visualisation Définir une tâche d'analyse
Proposition Un assistant de visualisation Trouver des relations entre : l’analyse du code source la visualisation interactive Approche de transformation de modèle: Entrées: la description des tâches d’analyse et la spécification de l'outil. Sortie: le scénario de visualisation. Transformation: optimisation de l’effort.
Proposition
Méta-modèle des tâches d’analyses
Primitives (description des tâches d’analyses) Basées sur la liste proposée par Amar et al. [2]
Méta-modèle des outils de visualisation
Méta-modèle des scénarios de visualisation
Interactions Inspirée de la taxonomie proposée par Shneiderman [15]
Transformation des primitives en des interactions Chaque primitives est réalisée: Dans différent outils de visualisations De plusieurs maniére Avec différentes configurations
Transformation des primitives en des interactions Possibilités de transformation de la primitive Filter Overview, Apply_automatic_filter, Tag Overview, Apply_automatic_filter, Block{Check_if, Tag} Overview, Block{Navigate, Zoom, Select, Check_if, Tag} Overview, Block{Select, Details_on_demand, Check_if, Tag} Change mapping, Overview,Block{Select, Check_if, Tag} …
Génération des Scénarios Transformation Données -> vues Buts -> scénarios Primitives d’analyses -> actions d’interaction Utilisation de la recherche heuristique (AG) Obtenir une solution qui minimise l'effort d'analyse (coût)
Schéma explicatif du fonctionnement de l'algorithme génétique (Wikipedia)
Génération de la population de base Probabilité de sélection proportionnelle au coût (appelé roulette)
Croisement La mutation se fait d une maniere aleatoire
Contraintes Action d'interaction n'est pas offert par l'outil de visualisation. Incompatibilité entre les actions d'interactions et des attributs graphiques. Fausse hypothèse sur des données Promouvoir les actions automatiques. Inadéquation entre les types des données et des attributs graphiques … Incompatibilité entre les actions : si on associe une metrique a un attribut graphique qu on ne peut voir que de pres comme par exemple une texture sur un cube avec des millier de cube a cote et qu on nous demande d evaluer cette metrique sans nous proposer l action zoom Fausse hypothese : utilisation de detail on demand alors que la metrique demande est mappe sur un attribut graphique visible
Inadéquation entre les types des données et des attributs graphiques Classement des attributs graphiques proposé par Mackinlay [13]
Fonction d'évaluation A chaque contrainte on associe un coût selon son importance. Ces contraintes permettent de définir le coût de chaque solution. La meilleur solution est celle qui viole le moins de contraintes Fitness fonction est la somme des cout de toute les contrainte violee
Évaluation Détection d'anomalie de conception: Détection de Blob Outil de visualisation : Verso est une classe qui monopolise tout le traitement d'un programme, tandis que d'autres classes encapsuler des données.
Description de la tâche de detection de Blob Goal(Blob detection, BlobSet, System) { achieve(Controler class detect, CDD, System) achieve(Data class verif, BlobSet , CDD) } Goal(Controler class detect, Cand, Scope) Filter(Scope, Cand, ishigh WMC and ininterval LOW MEDIUM LCOM5 and islow DIT) Goal(Data class verif, Found, Cand) for each(c, Cand) { Filter(System, Rel, iscalled(c)) Filter(Rel, RelData, islow WMC and islow DIT) Compute derived value(RelData, count, Num) if (ishigh Num) { operation (+, Found, Found, c)
Meilleur scénario généré Scenario( Data class verification) { For each(c in CC) Overview(Class) Apply automatic filter(Class , iscalled(c) ) Tag (REL,Result) Block(REL) Check if(color:blue and height:low) Select(Result) Tag(RelData,Result) } Overview(RelData) Do function(count, RelData, Num) Block Check if(Num,ishigh) Tag(Blob, c) } } } Scenario(Blob detection) { Run scenario(Controler class) Run scenario(Data class verification) } Scenario(Controler class) Overview(Class) Block(Class) Check if(Color:Red and Twist:0 to 45 and Height: Medium To High) Select(Result) Tag (CC, Result)
Résumé Nous avons proposé une approche qui permet de: Définir les tâches d’analyses et les scénarios de visualisations. Générer le meilleur scénario de visualisation pour une tâche d’analyse et un outil de visualisation donnés.
Travaux futures Considérer plus de composante de la visualisation (layout, …) Améliorer la définition de l’effort Réutiliser cette approche pour choisir l’outil le plus adapté à une tâche d’analyse donnée
?