本文以生动有趣的实例,如赤壁之战、餐馆就餐和ATM取款等场景,深入浅出地讲解顺序图的构建方法与应用场景。通过分析对象之间的时序关系,帮助读者掌握UML顺序图的设计技巧,让复杂的系统交互变得一目了然,易于理解。无论是需求分析还是系统设计,顺序图都是不可或缺的工具。
顺序图概述
顺序图是一种用于描述系统中对象之间交互的时序关系的图表,通常用于UML(统一建模语言)中。顺序图通过显示消息的顺序和交互的顺序,帮助理解系统行为和对象之间的关系。
顺序图的主要组成部分
-
对象和参与者:
- 在顺序图的顶部列出参与者(如用户、系统等)和对象,通常以矩形框表示。
- 对象的命名方式不是强制的,尽可能的让阅读的人理解即可,可以用这种命名方式 “对象:类” 来表示。对象的左右顺序尽量遵循两个原则:把交互频繁的对象尽可能的靠拢;把初始化整个交互活动的对象放置在最左端。
对象的命名,一般格式为:对象名:类名,如「 李四:客户 」。
-
生命线:
- 每个对象下方有一条垂直的虚线,表示该对象的生命周期。
-
消息:
- 消息通过箭头表示对象之间的交互,箭头的方向表示消息的流向。消息可以是方法调用、返回值、信号等。
- 同步消息 – 发送者把消息传递给接收者后停止活动,等待接收者放弃或者返回,箭头实线
- 异步消息 – 发送者把消息传递给接收者后不等待仍然进行自己的活动,此时接收者和发送者是并发工作的,箭头实线只有半边
- 返回消息 – 过程调用后的返回响应,箭头虚线
- 自关联消息 – 表示方法的自身调用或者一个对象内的一个方法调用另外一个方法
消息线上方的文字,则是注明传递的消息或执行的动作,一般用动宾短语。
-
激活框:
- 当一个对象在处理消息时,可以在其生命线上绘制一个矩形框,表示该对象处于活跃状态。
- 在生命线上用小矩形表示,表示在这个时间段内对象将执行相应的操作,小矩形之外的为 “ 去激活 ”(Deactivation),指对象处于空闲状态, 在等待消息激活这个对象
顺序图特点
- 任何复杂的交互其实都是可以分解为自己与自己、自己与别人、别人与别人的对各简单交互。
- 顺序图其实就是以图形的方式将复杂的交互按时间顺序分解。
- 顺序图基本语法很简单,有角色(对象)、生命线、激活框、消息、返回值。
- 顺序图的读法是由上到下、由左到右。
顺序图的用途
- 需求分析:帮助团队理解功能需求和用户交互流程。
- 系统设计:可视化不同对象之间的交互,便于设计和实现系统架构。
- 文档记录:作为系统设计文档的一部分,用于解释系统的运行过程。
顺序图案例分析
假设我们以QQ音乐的“播放歌曲”功能为例,顺序图可以展示用户、应用程序和音乐库之间的交互过程:
- 用户点击播放按钮。
- 应用程序向音乐库请求歌曲信息。
- 音乐库返回歌曲信息给应用程序。
- 应用程序开始播放歌曲并显示播放界面。
这种图形化的描述有助于在开发过程中更好地理解对象之间的交互流程。
画图三步走
定目标、找对象、列消息三步走
1)定目标,指定用例或业务目标展开分析
2)找对象,找出参与实现目标的对象/角色
3)列消息,按时间顺序列出对象的交互消息
小技巧
1)给交互消息加序号,方便阅读沟通
2)触发交互的对象画在最左,交互频繁的走近些
实验实训
实验一:赤壁之战的时序图(绘图技能实践)
实验二:餐馆就餐系统时序图(绘图技能实践)
实验三:客户在ATM机上取款顺序图
下面是一个客户在ATM机上取款工作流。
- 客户选择取款功能选项。
- 系统提示插入IC卡。
- 客户插入IC卡后,系统提示用户输入密码。
- 客户输入自己的密码。
- 系统检查用户密码是否正确。
- 如果密码正确;则系统显示用户账户上的剩余金额,并提示用户输入想要提取的金额。
- 用户输入提取金额后,系统检查输入数据的合法性。
- 在获取用户输入的正确金额后,系统开始一个事条处理,减少账户上的余额,并输出相应的现金。
从该工作流中分析求出所涉及到的对象,并用顺序图描述这个过程。