Université BADJI MOKHTAR ANNABA Faculté des sciences de l’ingéniorat Département d’informatique Préparé par : Bounab Samia CodeCity est un environnement intégré d’analyse logicielle, dans lequel les systèmes logiciels sont visualisés sous forme de villes 3D interactives et navigables. Il est programmé dans VisualWorks Smalltalk sur la plate-forme Moose , utilise OpenGL pour le rendu et s'exécute sur toutes les plates-formes majeures. les paquets sont des districts . les classes sont représentées par des bâtiments placés dans le district correspondant à leur paquet. la métrique de couplage entre les classes détermine la position des bâtiments, plus les bâtiments sont proches, plus le couplage entre ces bâtiments est grand. il permet de visualiser de manière intuitive le couplage entre les classes sans utiliser représentation traditionnelle à base de liens. la Classes bâtiments Package districts Système ville La forme et la couleur d’une bâtiment dépend des métriques associées à une classe. nombre d'attributs de la classe nombre de méthodes de la classe Couleur:nombre de lignes de code Classe C visualiser la quantité de fonctionnalités en fonction du volume du bâtiment. Une classe avec beaucoup de méthodes mais peu d’attributs est représentée par un grand bâtiment très fin (ressemblant à une antenne). une classe avec beaucoup d’attributs et peu de méthodes est représentée par un bâtiment assez petit et large (ressemblant à un parking). cette visualisation permet de révéler les grands écarts qui existent entre les classes et aide ainsi à bien comprendre la distribution des fonctionnalités du système. CH.ifa.draw.test.standard CH.ifa.draw.framework StandardDrawngViewTes FigureAttribute t Constatnt 1 attribut 60 Methodes 35 attributs 11 Methodes CH.ifa.draw.standard StandardDrawng View 25 attributs 85 Methodes CodeCity implémente également une analyse automatique des métriques du logiciel afin de détecter les problèmes de conception . Les classes pour lesquelles un problème de conception est détecté sont identifiées par une couleur correspondant au problème. Ainsi CodeCity propose une technique de visualisation nommée Disharmony Maps (en français la carte des problèmes de conception) de la ville procure un moyen simple pour se focaliser sur les classes potentiellement problématiques. CodeCity permet également de représenter le logiciel en utilisant les briques qui composent chaque bâtiment pour représenter les méthodes. De cette manière la carte des problèmes de conception peut être visualisée au niveau de la méthode et permet donc de localiser précisément les éventuels problèmes de conception. La technique de visualisation Timeline montre l’évolution d’une classe .elle repose sur la métaphore des bâtiments qui représente les classes comme méthodes composent. des comme les bâtiments briques et les qui le La couleur est utilisée pour repérer l’age des méthodes de jaune clair pour les méthodes récentes au bleu foncé pour les anciennes méthodes. ancienne récente La visualisation Timeline est très efficace pour montrer combien de méthodes sont définies dans les classes et combien sont ajoutées ou supprimées au cours des versions. Il est possible de détecter des motifs ; par exemple, un bâtiment (une classe) qui évolue et perd un nombre de plus en plus important de briques (méthodes) au cours des versions est une classe instable. autre exemple : quand un grand nombre de briques est soudainement ajouté d’une version la suivante, cela signifie que la classe prend plus d’importance au sein du système. Visualiser le Timeline de plusieurs classes en même temps permet de détecter les périodes de re-conception du logiciel On conclu que: la rétro-ingénierie est une technique permettant de comprendre un système existant en produisant des artefacts d’un niveau d’abstraction supérieur au code. La technique de visualisation(compréhension) permette de comprendre l’information lorsque celle-ci est représenté de manière concrète (graphiquement) plutôt que virtuelle ou théorique .Ainsi représenter graphiquement le logiciel est un bon moyen pour permettre une compréhension plus rapide et plus précise de la structuration du logiciel et de ses fonctionnalités.