当前位置:首页 > 公众号精选 > C语言编程
[导读]软件设计时序图制作工具在软件设计过程中,经常会使用到时序图来表达模块之间的交互、信息传递的动态行为或者其他软件逻辑。时序图可以清晰地表达软件层面的设计,甚至毫不夸张说是“一图顶千言”。那么,抛出个直截了当的问题:画时序图的工具有哪些?哪个最好用?以下以EA(EnterpriseA...

软件设计时序图制作工具

在软件设计过程中,经常会使用到时序图来表达模块之间的交互、信息传递的动态行为或者其他软件逻辑。时序图可以清晰地表达软件层面的设计,甚至毫不夸张说是“一图顶千言”。

那么,抛出个直截了当的问题:画时序图的工具有哪些?哪个最好用?

以下以EA(Enterprise Architect)DrawIOPlantUML和Markdown里的mermaid来对比讲解。

首先看看他们的效果对比:

1. 效果对比

以下是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.

  1. EA

  2. DrawIO

  3. PlantUML

  4. mermaid


从上面的各个工具做出的图看,前面三个差别不大该有的图示效果都有,最后一个mermaid就没那么丰富了,只能做个简单的图示表达。

然而,这样也不能说明哪个是最好的,只能从中找出一个最适合你的。

为了更好说明各自的优缺点,先看看时序图里面有什么。

2. 时序图的组成

首先,想想你理解中的时序图是什么?里面有什么元素?

画两根竖线,然后通过几个箭头表示消息传递,仅此而已?

这个是时序图么?是,可以认为时序图,但不是那么标准。

那么,什么是标准?或者说有没有一个约定成俗的东西?

时序图不仅仅是给自己看的,也是向其他团队成员传递或表达信息的媒介,应该与别人有共同约定的符号或元素。

就像南方人跟北方人讲话,通用的普通话就很好,如果你讲的普通话夹杂很多粤语甚至潮汕话,你让东北人怎么听得懂。

时序图是可以基于UML的,UML是统一建模语言,里面很多元素是我们共同认为它表达某一种特别含义。

以下基于UML概念,讲讲时序图里面主要一些元素。

Lifeline

这个是时序图的最基本的东西

Lifeline是交互中的单个参与者(即生命线不能具有多重性)。Lifeline代表一个独特的可连接元素。

OMG UML 规范(UML Superstructure Specification, v2.1.1, p.489)指出:

Lifeline代表交互中的单个参与者。虽然零件和结构特征的多重性可能大于 1,但Lifeline仅代表一个交互实体。

这个很好理解,简单粗暴地说,就是一根竖下来的东西,代表一个独立的交互实体。

上图是EA常用的Lifeline图示,当然也有通过其他图标组合的Lifeline,例如这个

DrawIO上也能找到很多各种Lifeline

对于PlantUML,可以通过脚本指定,同样有很多种

下图示例Lifeline类型
Foo1actor
Foo2boundary
Foo3control
Foo4entity
Foo5database
Foo6collections

而mermaid就没有那么多类型的了,就只有很简单的。

Control/Boundary/Entity

Control 是一个原型对象,它为控制实体或管理器建模。控件组织和安排其他活动和元素,通常在分析(包括稳健性)、序列和通信图中。


Boundary是一种原型对象,它对某些系统Boundary进行建模,通常是用户界面屏幕。您还可以将Boundary创建为构造型类。在分析中使用Boundary元素来捕获用户交互、屏幕流和元素交互(或“协作”)。
在概念阶段使用Boundary来捕获用户在屏幕级别(或某些其他Boundary界面类型)与系统交互。它通常用于序列和稳健性(分析)图中。

Entity是一种原型对象,它对捕获系统中的信息或知识的存储或持久性机制进行建模。

通常情况下,Control/Boundary/Entity往往跟Lifeline一起使用(见文章开头的图)。

EA、DrawIO、PlantUML都有这些元素。

Message

这个很好理解,就是一根线一个箭头,加上一个文本描述。

Message表示元素之间的信息流或控制转换。
Message可用于时序图、序列图和通信图(但不包括交互概览图)以反映系统行为。
如果在类或分类器实例之间,关联的操作列表可用于指定事件。

Message分Synchronize和Asynchronize,前者对应的是黑实心箭头(下图右边的箭头),后者对应的是开放箭头(下图左边的箭头)。

对于EA,可以直接双击这个message箭头可以设置,里面的配置十分丰富

而DrawIO或其他工具,在设置属性等界面可以选择不同的箭头,而并没说明这是Synchronize还是Asynchronize。

对于PlantUML,是通过脚本设置不同的Message类型,如

  • Client ->> CreateAccount表示Asynchronize箭头;

  • CreateAccount -> CreateNewAccount表示Synchronize箭头。

另外,这两种不同的Message类型,会影响Lifeline的,很明显Synchronize会阻塞当前运行,而Asynchronize不会。

这个图上的block块,在EA上是自动根据Message类型显示的,不需要特殊处理,而DrawIO是需要在Lifeline上贴上一个长方形的,但是PlantUML上似乎没找到这个设置。

Fragment

组合Fragment反映了由交互操作符控制的交互(称为交互操作数)的一个或多个方面,相应的布尔条件称为交互约束。Fragment 显示为一个透明窗口,由每个操作数的水平线分隔。

下图说明了如何使用组合片段对简化的采购流程进行建模。Loop Fragment表示迭代购买数量未知的物品,之后收银员请求付款。
另一个Fragment代表支付选项,该Fragment被分割以显示现金和信用卡这两个操作数。在Fragment完成其跟踪后,收银员在满足付款要求的履行条件下向客户提供收据。

在EA上操作Fragment是非常方便的。

而在DrawIO上的话,有点古板,里面的线条或者边框都是普通图形组成的,如果有比较复杂的Fragment要画,是比较麻烦的。

对于PlantUML,它是有专门的语法对应这个Fragment的,例如下面这段脚本就可以翻译成以下图形:

@startuml
Alice -> Bob: Authentication Request
alt successful case
Bob -> Alice: Authentication Accepted
else some kind of failure
Bob -> Alice: Authentication Failure
group My own label
Alice -> Log : Log attack start
loop 1000 times
Alice -> Bob: DNS Attack
end
Alice -> Log : Log attack end
end
else Another type of failure
Bob -> Alice: Please repeat
end
@enduml

注释

这个没什么特殊的,不是很讲究,简单地理解就是在时序图上贴上一段文本内容,以辅助理解这个时序图。

3. 总结

工具/软件时序图功能总结评价
EA这个是基于UML概念设计用的,不仅仅是为了画图,而注重“设计”。里面的概念和功能非常强大,画时序图也非常友好,但是如果对EA陌生的话,入门会有些难度,相对DrawIO并非“所见所得”。
DrawIO画的图很好看,也很方便,就因为图是“画”出来的,所以,它是为了画图而画图,并没有太多内涵。如果画很复杂的图也是比较繁琐的。如果只是画些简单的图形,是不二选择。
PlantUMLUML概念比较丰富,但是颜色风格看个人喜好。如果喜欢Mark图而不是画图的,可以考虑。这个工具“画”图是通过脚本命令的,然后生成图片。经常使用文本编辑的环境,这个是比较好的。
mermaid非常简单,功能稀少,用于嵌入markdown的简单图示是个不错的选择
总体来说,如果仅仅是画时序图,我优先选EA,对于简单的而又好看点的,就选DrawIO。

注意:EA软件是要license的,而DrawIO是开源的。DrawIO有网页版、PC桌面版,也有vs code插件版。
PlantUML,我是用vs code插件来做的。mermaid的话,我用Typera markdown。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭