Résumé·s
La compréhension de la structure d’un logiciel est une première étape importante dans la résolution de tâches d’analyse et de maintenance sur celui-ci. En plus des liens définis par la hiérarchie, il existe un autre type de liens entre les éléments du logiciel que nous appelons liens d’adjacence. Une compréhension complète d’un logiciel doit donc tenir compte de tous ces types de liens. Les outils de visualisation sont en général efficaces pour aider un développeur dans sa compréhension d’un logiciel en lui présentant l’information sous forme claire et concise. Cependant, la visualisation simultanée des liens hiérarchiques et d’adjacence peut donner lieu à beaucoup d’encombrement visuel, rendant ainsi ces visualisations peu efficaces pour fournir de l’information utile sur ces liens. Nous proposons dans ce mémoire un outil de visualisation 3D qui permet de représenter à la fois la structure hiérarchique d’un logiciel et les liens d’adjacence existant entre ses éléments. Notre outil utilise trois types de placements différents pour représenter
la hiérarchie. Chacun peut supporter l’affichage des liens d’adjacence de manière efficace. Pour représenter les liens d’adjacence, nous proposons une version 3D de la méthode des Hierarchical Edge Bundles. Nous utilisons également un algorithme métaheuristique pour améliorer le placement afin de réduire davantage l’encombrement visuel dans les liens d’adjacence. D’autre part, notre outil offre un ensemble de possibilités d’interaction permettant à un usager de naviguer à travers l’information offerte par notre visualisation. Nos contributions ont été évaluées avec succès sur des systèmes logiciels de grande taille.
Understanding the structure of software is an important first step in solving tasks of analysis and maintenance on it. However, in addition to the links defined by the hierarchy, there exists another type of links between elements of software that are called adjacency links. A complete understanding of software must take account of all these types of links. Visualization tools are generally effective in helping a developer in his understanding of software by presenting the information in a clear and concise manner. However, viewing these two types of links generate in general a lot of visual clutter, making these visualizations inefficient to provide useful information on these links. We propose in this M.Sc. thesis a 3D visualization tool that can represent both the hierarchical structure of an application and the adjacency relationships between its elements. Our tool uses three different types of layout to represent the hierarchy. Each layout can support efficiently the display of adjacency links. To represent adjacency links, we propose a 3D version of the Hierarchical Edge Bundles algorithm. We also use a metaheuristic algorithm to improve our layouts to further reduce visual clutter in the adjacency links. Moreover, our tool provides a set of interaction possibilities that allows a user to navigate through the information provided by our visualization. Our contributions have been evaluated successfully on large software systems.