软件设计时序图制作工具
在软件设计过程中,经常会使用到时序图来表达模块之间的交互、信息传递的动态行为或者其他软件逻辑。时序图可以清晰第表达软件层面的设计,甚至毫不夸张说是“一图顶千言”。
那么,抛出个直截了当的问题:画时序图的工具有哪些最好用strong>
以下以EA(Enterprise Architect)、DrawIO、PlantUML和Markdown里的mermaid来对比讲解。
首先看看他们的效果对比:
效果对比
以下是EA(Enterprise Architect)、DrawIO、PlantUML和Markdown里的mermaid的时序图最终效果对比。
这几个图都是表示创建一个账户(Create Account)的实例。
This Sequence Diagram shows the Objects involved in the creation of a new account. The Account Object is displayed lower down in the diagram because it doesn’t exist at the beginning of the sequence but is created as a result of the message.
-
EA
-
PlantUML
这个是时序图么可以认为时序图,但不是那么标准。
那么,什么是标准说有没有一个约定成俗的东西p>
时序图不仅仅是给自己看的,也是向其他团队成员传递或表达信息的媒介,应该与别人有共同约定的符 或元素。
就像南方人跟北方人讲话,通用的普通话就很好,如果你讲的普通话夹杂很多粤语甚至潮汕话,你让东北人怎么听得懂。
时序图是可以基于UML的,UML是统一建模语言,里面很多元素是我们共同认为它表达某一种特别含义。
以下基于UML概念,讲讲时序图里面主要一些元素。
Lifeline
这个是时序图的最基本的东西
DrawIO上也能找到很多各种Lifeline
而mermaid就没有那么多类型的了,就只有很简单的。
Control/Boundary/Entity
Boundary是一种原型对象,它对某些系统Boundary进行建模,通常是用户界面屏幕。 您还可以将Boundary创建为构造型类。 在分析中使用Boundary元素来捕获用户交互、屏幕流和元素交互(或“协作”)。
在概念阶段使用Boundary来捕获用户在屏幕级别(或某些其他Boundary界面类型)与系统交互。 它通常用于序列和稳健性(分析)图中。Message表示元素之间的信息流或控制转换。
Message可用于时序图、序列图和通信图(但不包括交互概览图)以反映系统行为。
如果在类或分类器实例之间,关联的操作列表可用于指定事件。Message分Synchronize和Asynchronize,前者对应的是黑实心箭头(下图右边的箭头),后者对应的是开放箭头(下图左边的箭头)。
而DrawIO或其他工具,在设置属性等界面可以选择不同的箭头,而并没说明这是Synchronize还是Asynchronize。
这个图上的block块,在EA上是自动根据Message类型显示的,不需要特殊处理,而DrawIO是需要在Lifeline上贴上一个长方形的,但是PlantUML上似乎没找到这个设置。
Fragment
在EA上操作Fragment是非常方便的。
而在DrawIO上的话,有点古板,里面的线条或者边框都是普通图形组成的,如果有比较复杂的Fragment要画,是比较麻烦的。
注释
这个没什么特殊的,不是很讲究,简单地理解就是在时序图上贴上一段文本内容,以辅助理解这个时序图。
总结
工具/软件 时序图功能总结评价 EA 这个是基于UML概念设计用的,不仅仅是为了画图,而注重“设计”。里面的概念和功能非常强大,画时序图也非常友好,但是如果对EA陌生的话,入门会有些难度,相对DrawIO并非“所见所得”。 DrawIO 画的图很好看,也很方便,就因为图是“画”出来的,所以,它是为了画图而画图,并没有太多内涵。如果画很复杂的图也是比较繁琐的。如果只是画些简单的图形,是不二选择。 PlantUML mermaid 非常简单,功能稀少,用于嵌入markdown的简单图示是个不错的选择 总体来说,如果仅仅是画时序图,我优先选EA,对于简单的而又好看点的,就选DrawIO。
注意:EA软件是要license的,而DrawIO是开源的。DrawIO有 页版、PC桌面版,也有vs code插件版。
PlantUML,我是用vs code插件来做的。 mermaid的话,我用Typera markdown。这些软件工具大家都可以按名称搜索找到下载并尝试使用。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!