Depuis un peu plus d’un an, j’ai découvert un outil, une librairie de représentation graphique GraphVIZ, qui sort de l’ordinaire. Je découvre des nouveaux usages, des cas d’utilisation un peu tous les jours. J’ai décidé d’écrire un article pour présenter cette libraire et vous montrer des cas d’utilisation.
De quoi s’agit il ?
GraphViz (diminutif de Graph Visualization Software) est un ensemble d’outils open source créés par les laboratoires de recherche d’AT&T qui manipulent des graphes définis à l’aide de scripts suivant le langage DOT. Cet ensemble fournit aussi des bibliothèques permettant l’intégration de ces outils dans diverses applications logicielles.
Graphviz est un logiciel libre distribué suivant la licence Common Public License. (wikipédia).
J’ai découvert la librairie graphique GraphVIZ par hasard, en utilisant un outil d’analyse de base de données SchemaSpy et un outil de modélisation textuel UML, PlantUML (FR).
Je vais expliquer, le fonctionnement de PlantUML et de GraphViz par la suite.
PlantUML est un projet Open Source qui permet de dessiner rapidement :
- des diagrammes de séquences,
- des diagrammes de cas d’utilisation,
- des diagrammes de classes,
- des diagrammes d’activités,
- des diagrammes de composants,
- des diagrammes d’états,
- des diagrammes de déploiement,
- des diagrammes d’objets.
A partir d’un texte simple , respectant des normes ou convention simple, on produit un diagramme UML.
Exemple :
@startuml
class Car
Driver – Car : drives >
Car *- Wheel : have 4 >
Car — Person : < owns
@enduml
Le résultat obtenu graphiquement

Il est possible de créer des diagrammes UML complexes. L’outil PlantUML permet d’illustrer un rapport, un dossier d’architecture sans avoir besoin d’une usine logicielle.
Les usages de graphVIZ.
La puissance de graphviz repose sur la création de Graphique à partir d’instructions textuelles. Le moteur de graphviz calcule la mise en forme, l’affichage des données dans une image. Le moteur construit le rendu, l’image.
Graphviz contient plusieurs moteurs de rendu, et plusieurs types de sortie possible. Il fonctionne à partir d’instruction textuelle. Nous avons de nombreuses API pour construire des fichiers d’instruction.
A partir d’un programme informatique, je décide de créer une représentation graphique d’un réseaux, d’un site web, d’un programme. Je décris textuellement ce que je souhaite voir, et le programme calcule une représentation graphique parlante.
Je vais illustrer trois cas d’utilisation.
- Le modèle objet d’un programme java play Framework.
J’analyse les liens entre les classes java, les dépendances.
Le but, c’est de faire une cartographie dynamique d’un projet web.
Spoon + Api Java
- Un diagramme de navigation d’un utilisateur sur un site web.
Je suis dans un type d’organigramme moins habituel. Dans ce cas, il s’agit de la navigation d’un utilisateur sur une application web. Nous avons l’action utilisateur et le nombre de clics souris depuis la page web .
Graphviz donne un visage à la navigation, aux fonctionnalités utilisés par un utilisateur.
Le but, c’est d’identifier des profils utilisateurs sur un site web, de visualiser les fonctionnalités utilisés et de simplifier la navigation des utilisateurs. Avec cet outil, il est possible de voir le profil des utilisateurs payants.
Elasticsearch + Api java
- Un modèle de base de données.
(Schema Spy + Api java)
L’outil SchemaSpy crée une représentation graphique d’une base de données, il permet de visualiser les tables, le contenu et les liens entre les tables.
A de nombreuses reprises, j’ai utilisé des bases de données , sans structures, sans documentation. Cet outil donne un visage à une base de données.
Les avantages et les limitations
Graphviz est un outil très puissant. Il fonctionne très bien avec un grand nombre d’objet. Il produit des images avec une très grande taille ( A3 et au dessus). L’outil dispose de très nombreux avantages, il est unique dans la puissance de calcul, dans la restitution des images. C’est un moteur de rendu très puissants.
Il est possible de construire des images très très grandes avec de très très nombreux liens. Il faut procéder au redimensionnement de l’image pour pouvoir l’imprimer. Très souvent nous n’avons besoin que d’un sous ensemble d’information. L’humain a du mal à comprendre des trop gros schéma et l’analyse complexe.
Ce qui manque, je trouve c’est une notion de filtre, dans l’outil de création des fichiers text fourni avec graphviz. Comment dire à l’outil de créer une représentation des liens les plus importants ? D’un autre coté, ce n’est pas le rôle de graphviz. Dès que l’on manipule graphviz, nous avons envie de donner du poids aux différent liens, et donc d’aller vers des bases de données graphique, tel que neo4j.
Graphviz est optimisée pour construire des représentations. Il le fait très bien. Ce qui est intéressant, c’est d’exploiter les coordonnées des objets dans l’espace 2D, pour construire des encore meilleurs solutions.



Ping: Techno : graphviz (la suite) | Un regard sur le cloud computing