搞通信的经常需要画消息序列图(Message Sequence Chart, MSC)。Windows下的Visio和Linux下的Dia能够画很好的MSC。但有时为了方便想画纯字符的MSC。我曾经用Python写过一个简单的工具来帮助实现这样的功能,工具的名字叫seqChart。
下图就是seqChart画的图(请用等宽字符字体察看,Monospaced Font)。
下面就是生成此图用到的命令
把命令序列保存为文件,然后执行下面的命令,即可生成图到文件中。
seqChart.py seqChart.input > seqChart.output
seqChart共有4条命令SND,RCV,STATE,LST,其中RCV和SND只是参数的顺序不同,可互换。发送接收消息的实体定义为Process,Process的数量可以是无限多。Process在图上出现的顺序即命令出现的顺序。命令的参数个数是固定的必备的。SND,RCV和STATE都是自解释的。LST不参与画图,只用来察看当前的命令序列产生的中间状态。
这4条命令的格式为
SND from-process to-process message
RCV dest-process from-process message
STATE process a-state
LST
为追求简单,seqChart没有考虑异常处理。
附代码: