Relief : une autre manière de gérer les projets Java

Par:
fredericmazue

mar, 10/07/2007 - 12:39

Jusqu’à présent la représentation visuelle des projets Java dans une IDE demeurait classique, en 2D, avec une hiérarchie bien connue. Aujourd’hui, Jean-Hugues de Raigniac propose avec son projet Relief de donner du volume aux projets Java dont la version 1.1 est disponible depuis quelques jours. Relief est un outil de conception reposant sur les librairies 3D pour afficher ses projets en 3D. Le projet est disponible en licence GPL.

Nous avons posé quelques à Jean-Hugues de Raigniac pour en savoir plus sur Relief.

Programmez : comment est né Relief ? Et quelle est sa finalité ?

Jean-Hugues de Raigniac : J'avais besoin d'outils d'analyse de code pour aborder de nouveaux projets. Je trouve UML trop rapidement distancé par le refactoring et, de toute façon, inapproprié pour analyser depuis le code : il sert en amont, à la conception, mais apporte peu en aval, lorsqu'il s'agit de comprendre un logiciel qui n'a pas été documenté. Des logiciels comme JDepend sont utiles mais trop complexes à mon goût dans leur sémantique. Avec le temps, l'idée m'est venue que la 3D pouvait servir à rendre Java plus "objet" en lui donnant une forme "concrète". Ma réflexion m'a amené à considérer 3 paramètres intuitifs : taille, poids et orbite et à leur donner un sens pour décrire les entités d'un projet Java (packages, classes, interfaces, champs et méthodes) et leurs liens de dépendances. L'objectif est de simplifier et d'accélérer la prise en main et la maintenance de projets.

Programmez : De quelle manière fonctionne Relief et avec quels IDE ?

Jean-Hugues de Raigniac : Pour le moment Relief est autonome et ne s'interface pas avec un IDE. Son utilisation commence par l'écriture d'un fichier de configuration xml décrivant les projets à analyser : chemin des sources, binaires, librairies et runtime Java utilisé pour chaque projet. Ce fichier sert à proposer le choix du projet à analyser lorsqu'on lance Relief ainsi que quelques options par défaut d'affichage.
Une fois l'analyse faite, une fenêtre de Relief se partage en 3 zones : des boutons pour appliquer des filtres sur la sélection, un arbre permettant de retrouver les entités par leur nom et une vue 3D décrivant la structure du projet. La première vue est la plus englobante : on voit tous les packages du projet. En double cliquant sur un package on ouvre une nouvelle fenêtre contenant toutes les classes et interfaces de celui-ci. En double cliquant encore une fois sur un de ces éléments on ouvre une nouvelle fenêtre révélant ses champs et méthodes. A chaque niveau, la taille d'une entité est déterminée par le nombre d'éléments qu'elle contient, son poids (profondeur) par son niveau de dépendance aux autres, et son orbite par son utilisation par les autres (plus elle est au centre, plus elle est utilisée). Un mur de fournisseurs et de clients affiche les relations avec le reste du projet, les classes du runtime et les librairies. Pour les fournisseurs, plus un élément est élevé dans le mur, plus il a de clients. Côté client c'est l'inverse.

Programmez : Au quotidien, comment Relief aide-t-il le développeur dans son travail, la gestion de ses projets ?

Jean-Hugues de Raigniac : Quand on découvre un projet on s'attache à comprendre comment des fonctionnalités sont implémentés, Relief facilite ce travail en montrant instantanément qui utilise telle ou telle entité dédiée. Par exemple, si des fichiers sont employés par un programme, ouvrir le package java.io dans une nouvelle fenêtre nous renseigne immédiatement sur les utilisateurs de la classe File. Si on veut plus de détail il suffit d'ouvrir cette dernière. Le refactoring est une part importante de l'utilisation de Relief. Les concepts de Relief étant généraux ils peuvent être étendus à tous les langages de programmation mais aussi à tous les niveaux d'un projet. En poussant la logique jusqu'au bout Relief peut se substituer aux diagrammes 2D et 3D utilisés actuellement.

Site : http://www.workingfrog.org/fr/index.html

François Tonic