序列图教程 - 带示例的完整指南
已发表: 2017-01-27本序列图教程旨在帮助您更好地理解序列图; 解释您需要知道的一切,从如何绘制序列图到绘制序列图时应避免的常见错误。
交互图有 3 种类型; 序列图、通信图和时序图。 这些图用于说明系统内各部分之间的交互。 在这三者中,序列图因其简单而受到开发人员和读者的青睐。
在本序列图教程中,您将了解;
- 什么是序列图
- 序列图符号
- 序列图最佳实践
- 如何绘制序列图
- 序列图常见错误
- 序列图模板和示例
- 序列图 SlideShare 演示文稿
- 对序列图指南的反馈
什么是序列图?
开发人员常用的序列图对单个用例中的对象之间的交互进行建模。 它们说明了系统的不同部分如何相互交互以执行功能,以及执行特定用例时交互发生的顺序。
简而言之,序列图显示了系统的不同部分按“顺序”工作以完成某事。
显示系统的不同部分按“顺序”工作以完成某事。
序列图符号
序列图的结构方式是,它表示从顶部开始并逐渐下降以标记交互顺序的时间线。 每个对象都有一个列,它们之间交换的消息用箭头表示。
序列图各个部分的快速概述
生命线符号
序列图由这些生命线符号中的几个组成,这些符号应水平排列在图的顶部。 两条生命线符号不应相互重叠。 它们代表在序列期间在系统中相互交互的不同对象或部分。
当特定序列图由用例拥有时,使用带有参与者元素符号的生命线符号。
带有实体元素的生命线代表系统数据。 例如,在客户服务应用程序中,客户实体将管理与客户相关的所有数据。
带有边界元素的生命线表示系统中的系统边界/软件元素; 例如,用户界面屏幕、数据库网关或用户与之交互的菜单都是边界。
带有控制元素的生命线表示控制实体或管理者。 它组织和安排边界和实体之间的交互,并充当它们之间的中介。
激活条
激活栏是放置在生命线上的盒子。 它用于指示一个对象在两个对象之间的交互过程中是活动的(或实例化的)。 矩形的长度表示对象保持活动状态的持续时间。
在序列图中,当一个对象向另一个对象发送消息时,就会发生两个对象之间的交互。 在消息调用者(发送消息的对象)和消息接收者(接收消息的对象)的生命线上使用激活栏表示两者都是活动的/在消息交换期间被实例化。
消息箭头
从消息调用者到消息接收者的箭头指定序列图中的消息。 消息可以向任何方向流动; 从左到右、从右到左或返回到消息调用者本身。 虽然您可以在箭头上描述从一个对象发送到另一个对象的消息,但您可以使用不同的箭头指示发送或接收的消息类型。
消息箭头带有描述,称为消息签名。 此消息签名的格式如下。 除了 message_name 之外的所有部分都是可选的。
属性 = message_name(参数):return_type
- 同步消息
如激活条示例所示,当发送方等待接收方处理消息并返回后再继续处理另一条消息时,使用同步消息。 用于指示此类消息的箭头是实心的,如下所示。
- 异步消息
当消息调用者在向系统内的其他对象发送其他消息之前不等待接收者处理消息并返回时,使用异步消息。 用于显示此类消息的箭头是线箭头,如下例所示。
- 返回信息
返回消息用于指示消息接收者已完成对消息的处理并将控制权返回给消息调用者。 返回消息是可选的符号片段,因为由同步消息触发的激活栏始终意味着返回消息。
提示:您可以通过最小化返回消息的使用来避免使图表混乱,因为可以在初始消息箭头本身中指定返回值。
- 参与者创建消息
对象不一定在事件序列的整个持续时间内都存在。 可以根据正在发送的消息创建对象或参与者。
当您需要显示特定参与者在创建调用发送之前不存在时,可以使用丢弃的参与者框表示法。 如果创建的参与者在创建后立即执行某些操作,您应该在参与者框下方添加一个激活框。
- 参与者销毁消息
同样,不再需要的参与者也可以从序列图中删除。 这是通过在所述参与者的生命线末端添加一个“X”来完成的。
- 反身信息
当一个对象向自己发送消息时,它被称为自反消息。 它由一个消息箭头指示,该箭头在同一生命线处开始和结束,如下例所示。
评论
UML 图通常允许在所有 UML 图类型中注释注释。 注释对象是一个带有折叠角的矩形,如下所示。 注释可以用虚线链接到相关对象。
笔记: 查看序列图最佳实践以了解序列片段。
序列图最佳实践
- 管理与序列片段的复杂交互
序列片段表示为一个框,该框框住了序列图中对象之间的一段交互(如下面的示例所示)。
它用于以更结构化的方式显示复杂的交互,例如替代流和循环。 在片段的左上角坐着一个操作员。 这 - 片段运算符 - 指定它是什么类型的片段。
备择方案
当需要在两个或多个消息序列之间进行选择时,使用替代组合片段。 它对“if then else”逻辑进行建模。
替代片段由一个大矩形或一个框架表示; 它是通过在框架名称框(又名片段运算符)中提及“alt”来指定的。
为了显示两个或多个备选方案,然后使用虚线将较大的矩形划分为所谓的交互操作数,如上面的序列图示例所示。 每个操作数都有一个要测试的保护,它位于操作数的左上角。
选项
选项组合片段用于表示一个序列只有在某种条件下才会出现,否则该序列不会出现。 它模拟“if then”语句。
与替代片段类似,选项片段也用矩形框表示,其中“选择”放置在名称框内。
与替代片段不同,选项片段不分为两个或多个操作数。 选项的后卫放置在左上角。
(在序列图模板和示例部分中查找带有选项片段的示例序列图)。
循环
循环片段用于表示重复序列。 将单词“循环”放在名称框和框架左上角附近的保护条件中。
除了布尔测试之外,循环片段中的守卫还可以针对其他两个特殊条件进行测试。 这些是最小迭代次数(写为minint = [数字]和最大迭代次数(写为 maxint = [数字])。
如果它是最小迭代保护,循环必须执行不少于提到的数字,如果它是最大迭代保护,循环不能执行超过指定的数量。
(在下面的序列图模板和示例部分中找到循环片段的示例)
参考片段
您可以使用 ref 片段来管理大型序列图的大小。 它允许您在另一个图中重用一个序列图的一部分,或者换句话说,您可以使用 ref 片段在另一个图中引用图的一部分。
要指定参考片段,您必须在框架的名称框中提及“ref”以及在框架内引用的序列图的名称。
有关更多序列片段,请参阅超越序列图基础:第 1部分、第 2部分和第 3 部分。
- 绘制更小的序列图来捕捉用例的本质
与其用几个对象和消息组使您的序列图混乱,这会使读者感到困惑,不如画一些更小的序列图来恰当地解释您的系统所做的事情。 确保图表适合单页,并为解释性注释留出空间。
另外,不要绘制数十个序列图,而是找出场景中的共同点并专注于它。 如果代码具有表现力并且可以独立存在,那么首先就不需要绘制序列图。
如何绘制序列图
序列图表示单个用例中的场景或事件流。 序列图的消息流基于特定用例的叙述。
然后,在您开始绘制序列图或决定其中应包含哪些交互之前,您需要绘制用例图并准备好对特定用例的功能的全面描述。
从上面“创建新的在线图书馆帐户”的用例图示例中,我们将重点关注名为“创建新的用户帐户”的用例来绘制我们的序列图示例。
在绘制序列图之前,有必要确定创建新用户帐户所涉及的对象或参与者。 这些将是;
- 图书管理员
- 网上图书馆管理系统
- 用户凭据数据库
- 电子邮件系统
一旦确定了对象,就必须详细描述用例的作用。 从这个描述中,您可以很容易地找出一旦执行用例,上述对象之间将发生的交互(应该在序列图中进行)。
以下是在名为“创建新图书馆用户帐户”的用例中发生的步骤。
- 图书馆员请求系统创建一个新的在线图书馆帐户
- 图书馆员然后选择图书馆用户帐户类型
- 图书管理员输入用户的详细信息
- 使用用户凭据数据库检查用户的详细信息
- 新图书馆用户帐户已创建
- 然后将新帐户详细信息的摘要通过电子邮件发送给用户
从每个步骤中,您可以轻松地指定序列图中的对象之间应交换哪些消息。 一旦清楚了,您就可以开始绘制序列图了。
下面的序列图显示了在线图书馆管理系统中的对象如何相互交互以执行“创建新图书馆用户帐户”功能。
序列图常见错误
在绘制序列图时,设计人员往往会犯这些常见错误。 通过避免这些错误,您可以确保图表的质量。
- 添加太多细节。 这会使图表变得混乱,难以阅读。
- 与系统的接口、实际架构等相比,过时和过时的序列图是不相关的。 不要忘记更换或修改它们。
- 在用例文本和消息箭头之间不留空白; 这使得任何人都难以阅读图表。
- 没有仔细考虑消息箭头的来源。
请参阅序列图指南中详细解释的这些常见错误:绘制序列图时要避免的常见错误。
序列图示例和模板
以下是一些使用 Creately 绘制的序列图示例和模板。 使用 Creately 的在线工具在线创建序列图。 单击模板以在编辑器中打开它。
在线考试系统的序列图
在线考试系统——类图(UML)
学校管理系统的序列图示例
期权组合片段示例
循环序列示例
这里有更多序列图模板和示例,您可以立即对其进行编辑。
序列图教程 - SlideShare 演示
对序列图教程的反馈
这个序列图教程涵盖了你需要知道的关于序列图和绘制它们的所有内容。 如果您对序列图教程有任何建议或疑问,请随时发表评论。
更多图表教程
- 业务流程建模教程(BPM 指南解释功能)
- 终极流程图指南(带有示例的完整流程图教程)
- 用例图教程(示例指南)