Vous voudrez probablement essayer graphviz comme ce que d'autres ont dit. Pour tester graphviz, vous pouvez visiter ce site Ajax/Graphviz .
Vous pouvez copier et coller ce simple code sur le site et voir le graphique généré
digraph {
a->b;
b->c;
c->d;
c->e;
}
Il y a plus de choses qui peuvent être jouées autour, essayez de chercher un tutoriel, j'ai eu le mien en format pdf titré Dessiner des graphiques avec des points (Emden Gansner et Eleftherios Koutsofios et Stephen North) daté du 26 janvier 2006 qui est très détaillé.
C'est juste un autre exemple pour montrer une variante du FSM.
digraph {
rankdir=TD;
node [shape=ellipse style=filled fillcolor=skyblue];
// States
0 [ label = "NEW", peripheries = 2 ];
00 [ label = "DELETED", peripheries = 2 ];
draft [ label = "draft (1)\n(authenticated user, editor)" ];
submitted [ label = "submitted (2)\n(authenticated user, editor)" ];
published [ label = "published (3)\n(authenticated user, editor)", peripheries=2 ];
rejected [ label = "rejected (4)\n(authenticated user, editor)" ];
// Transitions
0 -> draft [ label = "write_draft (write draft) (1)\n(authenticated user)" ];
draft -> submitted [ label = "submit_draft (submit draft) (2)\n(authenticated user)" ];
submitted -> published [ label = "publish_submission (published submitted) (3)\n(editor)" ];
submitted -> rejected [ label = "reject_submission (reject_submission) (4)\n(editor)" ];
rejected -> 00 [ label = "delete (Delete the article) (5)\n(editor)" ];
}