L’être humain est doté de capacités très développées pour visualiser des informations complexes, ce qui joue un rôle majeur dans ses processus cognitifs de compréhension et de mémorisation (reconnaissance rapide de motifs, couleurs, formes, etc.). Afin de diminuer grandement la charge cognitive nécessaire à la compréhension, il utilise des approches visuelles (ou graphiques) afin de mieux appréhender des notions abstraites ou pour représenter le monde qui l’entoure. En effet, l’être humain a plus d’efficacité à comprendre l’information lorsque celle-ci est représentée de manière concrète (c.-à-d. d’une façon graphique) plutôt que théorique ou virtuelle. Le rôle le plus important que la visualisation joue dans le raisonnement humain en général et plus particulièrement dans le progrès scientifique a été souligné aussi par les philosophes à travers les siècles [Has 01].
Gershon [Ger 94] définit la visualisation comme suit : « la visualisation est plus qu’une méthode de calcul. C’est le processus de transformation des informations en des formes visuelles, permettant leur observation et leur manipulation. La présentation graphique résultante permet de percevoir visuellement des fonctionnalités et des informations qui sont cachées dans les données, mais néanmoins avec l’exigence d’explorer et analyser ces données ». Il s’agit donc de fournir à l’utilisateur une compréhension qualitative du contenu de l’information.
La visualisation de l’information est définie comme l’usage de représentations graphiques et interactives supportées par l’ordinateur afin de représenter d’une façon efficace toute sorte d’informations (c.-à-d. des données souvent abstraites) à celui qui l’utilise. Ses représentations nécessitent de manipuler des objets graphiques avec leurs attributs (ou indices) visuels (tels que : forme, taille, position, couleur, mouvement, etc.) d’une manière interactive avec différents niveaux d’abstraction afin de produire des vues différentes pour la même information [And 02, Sol 06]. La visualisation d’information consiste à représenter les données sous forme graphique en utilisant au maximum les capacités de perception visuelle des utilisateurs et les différentes dimensions perceptuelles fournies par les représentations graphiques [Has 07]. Il s’agit d’afficher un maximum de données dans un espace restreint tout en conservant une bonne lisibilité pour qu’elles puissent être analysées. La représentation graphique permet de refléter les propriétés structurales des données par l’arrangement spatial des objets, ou encore de refléter les propriétés intrinsèques de ces données par les attributs visuels des objets graphiques.
La visualisation d’information nous permet: (1) d’exploiter les caractéristiques du système visuel humain pour faciliter la manipulation et l’interprétation de données variées, (2) de faciliter la découverte de connaissances grâce à des représentations visuelles issue d’une tâche d’analyse, et (3) de communiquer efficacement les informations à travers ces représentations.
Visualisation de logiciels
La visualisation de logiciels est une façon efficace de comprendre un système logiciel et d’explorer visuellement les informations extraites de celui-ci. Une de ses grandes forces est de pouvoir représenter sous des formes familières, souvent en utilisant des métaphores du monde réel, des données intangibles qui ne possèdent pas forcément une représentation naturelle. Les vues de visualisations produites permettent ainsi de tirer profit de la puissance du système de perception visuelle humaine afin d’accélérer le processus de compréhension [Die 07]. Dans ce contexte, de nombreux outils de visualisation ont été proposés ces dernières années. Ces outils représentent une aide précieuse lors du développement et maintenance en permettant aux développeurs d’élever le niveau d’abstraction ce qui facilite grandement la tâche de compréhension de logiciels de grandes tailles en présentant des informations relatives au code source sous forme claire et concise. Cependant, certains types d’information demeurent difficiles à représenter de manière efficace [Lan 05b, Lan 06]. Price [Pri 98], a défini la visualisation de logiciels d’une manière générale comme suit: « Software visualization is the use of the crafts of typography, graphic design, animation and cinematography with modern human-computer interaction and computer graphics technology to facilitate both the human understanding and effective use of computer software ». Que nous traduisons par : « La visualisation de logiciels est l’utilisation de l’art de la typographie, la conception graphique, l’animation et la cinématographie avec les techniques modernes d’interaction homme-machine et des outils graphiques afin de faciliter à la fois, la compréhension humaine et l’usage efficace des logiciels ».
La visualisation de logiciels ou de programmes (PV, Program Visualization) est largement utilisée dans l’industrie. C’est un domaine d’intérêt grandissant qui vise à réduire la complexité de maintenance des grands systèmes logiciels [Eic 98]. Elle est vue comme un procédé d’abstraction des concepts et d’entités logicielles (tels que : classes, aspects, packages et leurs dépendances ou relations) et de production d’une représentation concrète (graphique) et compréhensible. Cette représentation visuelle présente quelques propriétés (ou aspects) du logiciel. En général, la visualisation est exigée dont le but d’exprimer et de simplifier un concept abstrait ou un objet réel d’une manière que l’utilisateur de cette visualisation puisse comprendre facilement ce qu’il voit et puisse découvrir facilement, par exemple, les anomalies de conception et éventuellement les localiser en explorant simultanément le code source avec les diverses vues. C’est une question de représentation multidimensionnelle statique ou dynamique en utilisant des objets graphiques et des animations pour présenter les données, les entités logicielles du code source et leurs relations, etc. Comme le code source est une sorte d’informations, nous considérons la visualisation de logiciels comme une spécialisation de la visualisation d’information dont l’objectif est d’afficher approximativement tout type de données abstraites, par contre dans le domaine d’ingénierie des logiciels, la concentration est uniquement sur la visualisation des programmes [Die 07].
Selon la définition étroite de John T. Stasko [Sta 98], « la visualisation des programmes est le procédé d’obtention des vues tangibles (graphiques) du code source ou des structures de données sous une forme statique ou dynamique ». Selon une définition large de Stephan Diehl [Die 07], « C’est une visualisation d’artéfacts en relation avec le logiciel et son processus de développement en permettant une compréhension plus rapide et plus précise de ses fonctionnalités et ses diverses propriétés (c.-à-d. structure, comportement, évolution) ».
Les experts du domaine focalisent leurs recherches sur les techniques de représentations graphiques de diverses propriétés (ou aspects) du logiciel [Die 07] :
● La structure fait référence aux parties statiques et relations du logiciel, c.-à-d. celles qui peuvent être mesurées ou être inférées sans exécution. Cela inclut le code source, les structures de données, le graphe d’appel statique et l’organisation modulaire du logiciel.
● Le comportement fait référence à l’exécution du logiciel avec des données réelles et abstraites.
● L’évolution fait référence au processus de développement et en particulier au changement du code source pendant l’ajout de nouvelles fonctionnalités ou la correction des bogues.
Représentation graphique de concepts abstraits
Le premier problème rencontré pour représenter un logiciel est l’absence de forme concrète de ce dernier. Le code source n’a pas de forme si ce n’est que le texte qui le représente, ce qui rend sa représentation très difficile. De plus, le code a une sémantique qui existe uniquement dans le but d’être comprise par le programmeur et la machine et n’a pas de réalité en dehors de cet usage. Étant donné cette problématique, nous sommes obligés de choisir des formes arbitraires pour le représenter. Il est possible alors d’utiliser des formes déjà existantes ou de les emprunter à d’autres domaines [Die 07]. Les caractéristiques visuelles des éléments composant une représentation graphique sont la base de tout type de visualisation. Leur choix doit se faire à la fois dans un souci d’efficacité pour une meilleure compréhension; un souci d’efficacité en terme d’affichage par la machine et d’esthétisme pour l’analyste. La justesse de ces caractéristiques fait la différence entre les bons et les mauvais outils de visualisation [Die 07]. Un concept abstrait du programme est une connaissance conceptuelle à un haut niveau d’abstraction. La représentation des objets abstraits est difficile parce qu’elle ne concerne pas des objets tangibles qui ont déjà des représentations graphiques dans nos esprits. Cette représentation présente une construction logique plutôt qu’une construction physique. Une question se pose alors, comment transformer les entités logicielles et leurs relations en des représentations graphiques significatives ? Face à la diversité et au nombre grandissant de problèmes traités, les objets mathématiques (p. ex. les graphes, les automates, etc.) permettant un bon niveau d’abstraction sont devenus incontournables. La théorie des graphes permet de simplifier un problème donné pour mieux étudier les relations de ses éléments. Par exemple, un graphe est défini par un ensemble d’éléments appelés noeuds, un nœud est une abstraction sur un objet. Le domaine de visualisation ne peut être traité sans aborder les techniques d’interaction afin de permettre une exploitation réelle des vues produites. En effet, la perception est indissociable de l’action d’interaction ; l’être humain est capable d’extraire des informations d’une interface s’il peut agir directement et rapidement sur cette interface. L’interaction sera donc mise en avant dans les diverses approches de visualisation [Sol 06, Die 07]. La possibilité d’explorer rapidement un système logiciel de grande taille et de le quantifier, à l’aide des vues interactives, ou d’avoir la possibilité de comprendre sa forme, afin de découvrir rapidement ses entités et leurs dépendances, représente un critère important pour une meilleure compréhension durant la phase de maintenance [Lan 06, Die 07].
|
Table des matières
CHAPITRE 1 INTRODUCTION GENERALE
1.1 CONTEXTE DE RECHERCHE ET PROBLEMATIQUE
1.2 MOTIVATIONS
1.3 OBJECTIFS
1.4 ORGANISATION DU MEMOIRE
CHAPITRE 2 SEPARATION AVANCEE DES PREOCCUPATIONS
2.1 INTRODUCTION
2.1.1 SEPARATION AVANCEE DES PREOCCUPATIONS
2.1.2 PROBLEMES RECURRENTS ET IMPLICATIONS
2.1.3 PRINCIPALES APPROCHES ACTUELLES
2.2 L’APPROCHE ORIENTEE-ASPECTS
2.2.1 PRINCIPE ET CONCEPTS DE BASE
2.2.2 ASPECTJ, UNE IMPLEMENTATION REFERENCE
2.3 CONCLUSION
CHAPITRE 3 VISUALISATION DES PROGRAMMES ET PROGRAMMATION VISUELLE
3.1 INTRODUCTION
3.2 VISUALISATION DE LOGICIELS
3.2.1 REPRESENTATION GRAPHIQUE DE CONCEPTS ABSTRAITS
3.2.2 TECHNIQUES DE VISUALISATION
3.2.3 TRAVAUX CONNEXES
3.3 PROGRAMMATION VISUELLE
3.3.1 INTRODUCTION ET TERMINOLOGIE
3.3.2 AVANTAGES ET INCONVENIENTS
3.3.3 CLASSIFICATIONS
3.3.4 TRAVAUX CONNEXES
3.4 CONCLUSION
CHAPITRE 4 CONTRIBUTION À LA VISUALISATION 2D ET 3D
4.1 INTRODUCTION
4.2 VUE DETAILLEE DE L’APPROCHE
4.2.1 SYSTEME DE VISUALISATION 2D & 3D ORIENTEE-METRIQUES
4.2.2 PARAMETRES IMPORTANTS DE VISUALISATION
4.2.3 METRIQUES CONSIDEREES EN VISUALISATION
4.3 MISE EN ŒUVRE DE L’APPROCHE
4.3.1 VIZZASPECTJ-2D
4.3.2 VIZZASPECTJ-3D
4.4 CONCLUSION
CHAPITRE 5 VERS UNE METHODOLOGIE DE CODAGE HYBRIDE
5.1 INTRODUCTION
5.2 VUE DETAILLEE DE L’APPROCHE
5.2.1. VERS UNE APPROCHE HYBRIDE DE CODAGE
5.2.2. APPROCHE PROPOSEE
5.3 MISE EN ŒUVRE DE L’APPROCHE
5.3.1 ARCHITECTURE
5.3.2 IMPLEMENTATION
5.4 CONCLUSION
CHAPITRE 6 ÉVALUATION ET DISCUSSION
6.1 PROJETS SELECTIONNES POUR L’EVALUATION
6.2 ÉVALUATION DU SYSTEME DE VISUALISATION
6.2.1 ÉTUDE DE CAS SUR « VIZZASPECTJ-2D »
6.2.2 ÉTUDE DE CAS SUR « VIZZASPECTJ-3D »
6.2.3 DISCUSSION
6.3 ÉVALUATION DE L’APPROCHE HYBRIDE DE CODAGE « HM4AOP »
6.3.1 ÉTUDES DE CAS PRELIMINAIRES
6.3.2 EXPERIMENTATION DETAILLEE
6.4 CONCLUSION
CHAPITRE 7 CONCLUSION GENERALE