什么是顺序图顺序图(sequencediagram)是一种详细表示对
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.1 .1 概念与表示法
1、概述 定义 顺序图是一种表达对象(参与者)间交互的图,由一组对象 (参与者)及其间可发送的消息组成,强调消息之间的时间顺序。
由对象(参与者) 、消息、生命线和激活组成。
[对象名]:类名
从图中可以看出顺序图是二维 的,其中:垂直方向表示时间, 水平方向表示不同的对象或参与 者。
5、信号
对象之间的异步传送的消息的规格说明,该规格说明由一组参数描述。 从一个对象可以向另一个对象或对象的集合发送信号。例如消息广播。 发送者在发送信号时,要实例化其参数。 对于接收者来说,它收到的是一个事件。 在类图中,在类符号上用关键字<<signal>>声明信号。把参数说明为属性。信号 没有操作。 在类的描述模板中,要指定所能接收的信号。
从过程调用的返回
在控制的过程流中,可以省略返回箭头(暗示激活结束),假设每个调用在任 何消息后都有一个配对的返回,并可以把返回值标示在初始的箭头上。
枝状箭头
异步通讯,也就是没有控制嵌套。发送者发送消息后,并且立即继续执 行中的下一步。
对于非过程控制流(包括并发处理和异步消息),都应当显式地标出返回 (如果有的话)*。
4、消息
定义 消息是两个对象间的通讯,这样的通讯用于传输将产生的动作所需要 的信息。 一个消息会调用另一个对象的操作,调用本对象的操作,向另一个对象发 送一个信号,创建或者撤消一个对象(可以自己销毁自己),还可能向调用者 返回一个结果。 注意:消息与对消息的响应。 把消息表示为从一个对象生命线到另一个对象生命线的一个水平实线箭头, 即从源对象指向目标对象,以触发目标对象中的特定操作。对于对象到自身的 消息,箭头就从同一个对象符号开始和结束。 用消息(操作或信号)的名字及其参数值或者参数表达式标示箭头。
例题 银行系统的交易验证
创建
:交易
创建
:交易协调器
创建
信用:交易检查器
创建
担保:交易检查器
成功
全部做 完? 成功
返回有效性
全部做 完?
课后作业
1、 使用信用卡可以在AMT机上进行取款,针对一次取款,建立类 图、顺序图。注意ATM机是与银行连网的。 要求: (1)绘制一个类图(不要过于复杂) (2)绘制顺序图
正常地,时间维由上到下(根 据需要,也可以由下到上)。通 常只有时间顺序是重要的,但在 实时应用中时间轴是能度量的。
对象的水平顺序并不重要,相 应地生命线之间的顺序可以是任 意的。
可以把各种标签(例如,计时 约束,对活动中的行为描述等) 放在图的边缘或在它们标记的消 息的旁边。
2、对象生命线
把对象表示成称之为“生命线”的垂直虚线。 生命线代表一个对象在特定时间内的存在。 如果对象在图中所示的时间段内被创建或者 销毁,那么它的生命线就在适当的点开始或结 束。否则,生命线应当从图的顶部一直延续到 底部。 在生命线的顶部画对象符号。如果一个对象 在图中被创建,那么就把创建对象的箭头的头 部画在对象符号上。如果对象在图中被销毁, 那么用一个大的“X” 标记它的析构,该标记或 者放在引起析构的箭头处,或者放在从被销毁 的对象最终返回的箭头处(在自析构的情况 下)。
用途
帮助分析员对照检查每个用况中描述的用户需求,是否已经落实 到一些对象中去实现。提醒分析员去补充遗漏的对象类或操作。 帮助分析员发现哪些对象是主动对象 通过对一个特定的对象群体的动态方面建模,深刻地理解对象之 间的交互。
对象生命线表示扮演特定角色的对象。
表示示例
在生命线之间的箭头表示扮演这些角色的对象之间的通讯。
{c.receiveTimec.sendTime<1秒}
a:拿起话筒 b:发拨号声 c:*拨号 {时间少于30秒} 接通线路 创建
:会话
阵铃 拿起话筒
连接s与r 连接
连接
ຫໍສະໝຸດ Baidu
<1秒
用如下种类的箭头表示不同种类的通讯:
实箭头
过程调用或其它的嵌套控制流。在外层控制恢复之前,要完成整个嵌套序列。通常 把它用于普通的过程调用。 在某个主动对象发送信号并等待完成嵌套的行为序列时,也可以把它用于并发的主 动对象。
在图的顶部(第一个箭头之上)放置在转换 开始时就存在的对象,而在整个转换完成时仍 然存在的对象的生命线,要延伸超出最后一个 箭头。
生命线可以分裂成两条或更多条并发的生命 线,以表示条件性。这样的每一个生命线对应 于通讯中的一个条件分支。生命线可以在某个 后续点处合并。
3、激活
激活表示一个对象直接或者通过从属例 程执行一个行为的时期。它既表示了行 为执行的持续时间,也表示了活动和它 的调用者之间的控制关系。 用一个窄长的矩形表示激活,矩形顶 端和它的开始时刻对齐,末端和它的结 束时刻对齐。可以用文本标注被执行的 动作,依赖于整体风格,或者把标注放 在激活符号的旁边,或者放在图左边的 空白处。 在程序的控制流中,激活符号的顶端 画在进入的箭头的尖端(开始该动作的 那个箭头),底端画在返回的箭头的尾 部。 当一个对象处于激活期时,该对象能 够响应或发送消息,执行对象或活动。 当一个对象不处于激活期时,该对象 不做什么事情,但它是存在的,等待新 的消息激活它。
把分支画成从一个点出发的多个箭头,每个箭头由监护条件标示。依据监护条件 是否互斥,这个结构可以表达条件或者并发。
自身操作调用 消息箭头指向自己
在调用一个已激活的对象的操作情况下,第二 个激活符号画在第一个符号稍微靠右的位置,在视 觉上它们看起来像是叠起来一样。
打电话
s :打电话的人
:交换机
r :打电话的人
第5章 建立动态模型 5.1 顺序图 什么是顺序图
顺序图(sequence diagram)是一种详细表示对象之间以及对象与 系统外部的参与者之间动态联系的图形文档。 它详细而直观地表现了一组相互协作的对象在执行一个(或少量几 个)用况时的行为依赖关系,以及操作和消息的时序关系。
类图对对象之间的消息(交互情况)表达不够详细; 详细说明对消息的表达虽然详细,但不够直观; 顺序图既详细又直观,但通常只能表示少数几个对象之间的交互。
:客户机
创建 setAction(a,d,o)
:JDBC代理服务器 :事务
Setvalue(d,3.9)
Setvalue(a,”pm”)
已提交
销毁
在过程性代码的情况下,一个激活表示在一个对象中一个过程是活动的, 或者它的从属过程(可能在其它的对象中)是活动的持续时间。 换句话说,可以在一个特定的时间看到所有活动着的嵌套过程激活。
在很多情况下,转换时间是可以忽略的。 可以在图中使用一些标记,用于指示时间间隔,且约束可以附在其上。例 如,可以用消息名表示在计时表达式中的发送或接收消息的时间(如下图中的 “b.receiveTime – a.sendTime<1 sec.”)。
s :打电话的人
:交换机
r :打电话的人
{b.receiveTimea.sendTime<1秒}
通常消息箭头都画成水平的
这表示发送消息所需要的持续时间是“原子的”(也即,它与交互的粒度相比 是短暂的,并且在传送消息的中间不能发生任何事情)。这在很多计算机中都被假 设是正确的。 箭头可以向下倾斜 如果消息需要一段时间到达,且这中间可能发生某些事情(例如反向的消息), 那么使箭头头部在尾部下方。 消息分支
{b.receiveTimea.sendTime<1秒}
{c.receiveTimec.sendTime<1秒}
a:拿起话筒 b:发拨号声 c:*拨号 {时间少于30秒} 接通线路 创建
:会话
阵铃 拿起话筒
连接s与r 连接
连接
<1秒
问题:时间超过30秒的情况没说明
会话对象没有说明计费等情况
对象的创建与销毁
■ 决定消息将怎样或以什么样的序列,在满足请求所必须的对象之间传递。 通过参与者或首先发出消息的对象,看它需要哪些其它对象为它提供服务,它 向哪些对象提供信息或发布命令。追踪到新的对象,进一步做这种模拟,直到找出 与当前语境有关的全部对象。 如果一个对象操作在某个执行点上应该向另一个对象发消息,则从这一点向后 者画一条带箭头的水平直线,并在旁边注明被引用的操作名。用适当的箭头线区别 各种消息。 ■在每一类对象下方的生命线上,按当前的用况使用该对象操作的先后次序排列各 个代表操作执行的棒形条。 ■ 两个对象的操作执行如果属于同一个控制流,则接收者操作的执行应在发送者 发出消息之后开始,并在发送者结束之前结束。不同控制流之间的消息有可能在接 收者的某个操作执行过程中到达。 ■在系统边界以外,可对相应对象所执行的功能以及时间或空间约束进行描述。 ■如果需要可视化消息的嵌套,用嵌套激活符号. ■如果需要可视化实际计算发生时的时间点,则用约束修饰每个对象的生命线。
通常用信号对异常情况建模。
《signal》 abc a1 a2 a3 QW 《send》 xyz
moveto()
5.1.2
建立顺序图
一个单独的顺序图最好只显示一个控制流(建议尽量少用迭代和分 支)。因为一个完整的控制流肯定是复杂的,所以将一个大的流分为几部 分放在不同的图中是合理的。
步骤:
■ 按照当前协作的意图,详细地审阅有关材料(有关的用况或协作),设置交互 的语境(系统的一次执行,或者一组对象(包括参与者)之间的协作)。 ■通过识别对象在交互中扮演的角色,在顺序图的上部列出与某个(些)用况有 关的一组对象(给出其类名)。并为每个对象或参与者设置生命线。通常把发起 交互的对象放在左边。 ■对于那些在交互期间创建和撤销的对象,在适当的时刻设置它们的生命线,用 消息显式地指明它们的创建和撤销。