Techno : GraphVIZ

Logo GraphvizDepuis 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 :

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
classes_003

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.

apprisk

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.

graph3

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.
Gestion risque bourse

Gestion risque bourse

(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.

A propos Duarte TERENCIO

Chef de projet et Architecte J2EE - Portail d'entreprise - Cloud computing Vous trouverez plus d'information sur la page "Me contacter"
Cet article, publié dans Organisation, Programmation, Techno, est tagué , , . Ajoutez ce permalien à vos favoris.

Un commentaire pour Techno : GraphVIZ

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

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s