GSEE 


G
eneric 
Software  
Exploration 
Environnement

Jean-Marie.Favre


last update: 19 november 2002


Current status

GSEE is currently a (set of) prototype(s). Good enough to use it on large software and to explore new exciting ideas. However, as is, it is not easy to use since it is developed on a "feature-on-demand" basis. This summer a group of 3 students (Laurence Estrabeaut, Alexandre Roux, Florence Whimet, worked on a component-based framework implementing a few functions of GSEE in a JavaBean approach, leading to GSEEBean, is one part of the GSEE environment and this bundle can be delivered separately. 

GSEEBean  is shortly described in the paper submitted to CSMR'2003. 

GSEE is described in various paper, in particular in IWPC'2001 and in CSMR'2002. Other papers describe the use of in different context including industrial settings. 

GSEE is free and available on request, but unfortunately no support is available. Anyway, feel free to contact me : jmfavre@imag.fr  

 


Related Publications

The following collection of papers constitutes the main source of information about GSEE.


Page under construction...

If you need more information, please contact me
Si vous voulez plus d'information, n'hésitez pas à me contacter : jmfavre@imag.fr
Si quiere mas informacion, contacteme

Se habla castellano,  you can also try in english
Différents autres articles sont écrits ou en cours de préparation.

transparents


GSEE : Les besoins


L'environnement GSEE a été conçu pour répondre aux besoins suivants qui le différencie des outils d'exploration traditionnels :

GSEE : L'approche

Plutot que de fournir un outil général essayant de répondre à tout les besoins, notre approche est basée sur les techniques modernes de dévelopement logiciels, entre autre sur l'approche composant. Plus concrètement il s'agit de proposer un environnement formé de :

GSEE : Les résultats

GSEE étant indépendant de la source de données il peut être utilisé dans de très nombreux contextes (autre que l'exploration du logiciel). Pour montrer l'intérêt de l'approche nous avons développé ou intégré différentes sources de données. Intégrer une nouvelle source peut se faire dans certains cas en quelques minutes. Ci-dessous, à titre d'illustration nous montrons comment visualiser différents aspects de logiciels java.

Exemples d'exploration de logiciels java

Exemple 1: visualisation de hiérarchies de classes

A titre d'exemple voici ci-dessous une image montrant plus de 700 classes java provenant des paquetages "java.awt" et "java.swing" (les classes graphiques de java). Cette image est entièrement spécifiée par les paramètres apparaissant sur l'écran : Différentes opérations permettent de modifier l'image, d'obtenir des informations supplémentaires sur les noeuds, etc.
Le rendu est similaire à l'excellent outil CodeCrawler. Grace à GSEE et à l'encapsulation de visualisateur de graphe Grappa/Dot, 4 lignes seulement sont suffisantes pour obtenir un résultat similaire (CodeCrawler propose néanmoins d'autres fonctions plein d'autres fonctions d'exploration très très intéressantes, you have to look at it).


 
 

Exemple 2: visualisation de la structure de paquetages

Ci-dessous la technique des cartes arborescentes (tree-maps) est utilisée pour afficher plusieurs milliers de classes java, l'imbrication des boites correspondant aux différents paquetages, la surface de chaque rectangle correspondant à la taille de la classe. On voit très facilement que la librairie standard (java.*) représente une partie plus petite que la librairies (javax.*), et de plus que les paquetages javax.swing.text et javax.swing.plaf représente une part significative du jdk (ces paquetages sont "fermés" sur la figure et appaissent donc en blanc).


 
 

Exemple 3: visualisation des dépendances entre paquetages java

La figure ci-dessous présente l'un des outils de démonstration associé au framework GSEE. Il s'agit d'un interpreteur d'un mini langage fonctionnel permettant d'évaluer des expressions. Il peut donc servir à la fois de langage de requête mais aussi d'outil de visualisation. Le resultat d'une expression est à la fois visualisé sous forme textuelle (dans la fenêtre historique en haut) et sous forme graphique (dans la fenêtre du bas). Dans l'exemple ci-dessous, un session complète est montrée. La première ligne consiste à charger un composant d'analyse (ici le composant JAssistant). Les lignes suivantes permettent de définir de nouvelles fonctions et de les tester interactivement. Par exemple la fonction "use" est définie entre deux paquetages comme étant la synthèse de la relation d'héritage entre classes. Autrement dit un paquetage utilise ("use"à un autre, si au moins une classe dans le premier hérite d'au moins une classe dans le deuxième. On aurait pu bien évidemment donner une autre définition. Celle-ci permet simplement de voir comment la relation d'héritage "traverse" les différents paquetages. La dernière ligne montre pour le paquetage "java.lang.reflect" le graphe correspondant. Comme on peut le voir les paquetages centraux de java sont tous connectés les uns aux autres!

Gràce au framework GSEE cet outil de démonstration ne fait que 60 lignes de code. Aucune ligne de code n'est spécifique à Java. C'est le chargement du composant adavid.jar (première ligne) qui fait que l'on peut utiliser cette source d'information. Autrement dit, en quelques minutes ont peut intégrer de nouvelles sources de données et les explorer, même si l'on ne connait pas la structure de ces sources. Dans ce cas il est nécessaire d'explorer le modèle de logiciel lui même (le composant que l'on vient d'integrer dynamiquement). GSEE permet cette exploration avec le même outil, comme cela est montré ci-dessous.

Exploration du (méta) modèle

Dans la figure ci-dessous, le modèle (ou méta modèle, tout dépend à quel niveau l'on se place) du logiciel lui même est exploré, avec exactement le même outil. On peut explorer aussi le méta-méta modèle mais ca c'est secret pour l'instant.