Récemment, je cherchais une solution libre pour faire proprement et efficacement des diagrammes de séquence de message pour un rapport. Qui dit diagrammes dit généralement clicodrômes chronophages, ennuyeux, et où l’on passe perd son temps à peaufiner des détails cosmétiques.
Lorsque j’ai lu la documentation de mscgen (pour Message Sequence Chart GENerator) que je vais vous présenter ultérieurement, non seulement j’ai compris que j’avais affaire à une merveille respectueuse du principe KISS, mais qu’il existait également des possibilités d’interfaçage intéressantes.
Et le meilleur concurrent de la souris est…
… la combinaison d’un clavier et d’un langage efficace et simple à prendre en main, lisible et éditable à la fois par un humain et une machine! Pour vous montrer la puissance de mscgen, entrons directement dans la matière avec la source d’un petit exemple (qui est loin d’exploiter la totalité les fonctionnalités) qui illustre le mécanisme de retransmission sur rejet utilisé par le protocole LAPB:
msc { arcgradient = 10; tx[label="Transmitter"], rx[label="Receiver"]; tx => rx [label="(I,0)"]; tx -x rx [label="(I,1)"]; ...; tx => rx [label="(I,2)"]; rx => tx [label="(REJ,1)", textbgcolor="#FFAF5F"]; tx => rx [label="(I,1)"]; tx => rx [label="(I,2)"]; }
Ci dessous, on trouve le résultat associé à la source précédente
Mscgen vous permet de produire vos graphiques aux formats png, svg, eps ou ismap sous Windows et Linux (il est même dans le dépôt main de Debian). La source MSC peut être fournie via l’entrée standard ou par un fichier. Enfin, il est possible de modifier la police par défaut.
Le seul inconvénient de ce logiciel est qu’il n’est utilisable qu’en ligne de commande, au grand dam de nos amis Windowsiens. Je vous invite à consulter la page web du développeur pour consulter la documentation du langage MSC et vous faire une idée plus complète des possibilités offertes. Pour le téléchargement, les liens sont disponibles en bas de la page de documentation.
Intégration à des préprocesseurs
Le choix de créer un langage simple et exploitable à la fois par un humain et une machine a permet le développement facile de « préprocesseurs » et de générateurs de trace. L’exemple le plus pratique que j’ai en tête est pcap2msc qui permet de convertir un fichier PCAP (trace d’échanges réseau) en une source MSC. Le résultat du traitement n’est pas parfait, mais la correction est facile et le gain de temps par rapport à l’utilisation une solution graphique est non négligeable, surtout quand les échanges sont longs.
Lors de la phase de conception, de débuggage et de documentation d’un logiciel, on peut utiliser le langage MSC pour aider à journaliser et rendre facilement lisibles les communications entre différents composants/threads/processus/nœuds d’une application. Si j’ai un peu de temps libre, ou le besoin de réaliser un tel générateur, je vous tiendrai au courant en temps voulu.