软件工程序列图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.3 序列图的高级概念
10.3.1 创建与销毁对象
图中的对象并不一定需要在序列图的整个交互期间存活,对 象可以根据传递进来的消息创建或销毁。
创建:发送者发送一个实例化消息后实例化对象, 销毁:将对象销毁并回收其拥有的资源,销毁一 ObjectA
<<create>> 创建对象的操作中指定参数进行实例化; 个对象将导致对象的所有组成部分,而与之关联或 ObjectB 聚集的对象不会被销毁,但是其关联和聚集等关系 被随之销毁 ReturnMessage <<destroys>>
5: checkForChange(cash,price)
6: updateReserve(cash,price) 7: releaseSada(selection) 8: receive(change)
9: receiveSoda(selection)
零钱数量不对
案例分析-饮料销售机
:Customer :Front : Front :Register :Dispenser 1: accept(cash,select) 2: getCustomerInput(cash,select)
文件使用,为实现一个未来系统传递需求。
10.1 序列图的基本概念
10.1.2序列图的作用
在项目的需求阶段,分析师能通过提供一个更加正式层次的表
达,把用例带入下一层次。那种情况下,用例常常被细化为一
个或者更多的序列图。
组织的技术人员能发现,序列图在记录一个未来系统的行为应
该如何表现中,非常有用。在设计阶段,架构师和开发者能使 用图,挖掘出系统对象间的交互,这样充实整个系统设计。
案例分析-汽车和车钥匙
案例分析-汽车和车钥匙
:CarOwner :CarKey :Car 1: getButtonPress(b) 2: processKeyMaessage(b) 3: [b="lock"]lock()
4: [b="lock"]BlinkLights
5: [b="lock"]Beep
案例分析-产品入库
仓库管理员处理产品入库的工作流程:
仓库管理员通过库存管理子系统将生产的产品处理入库;
仓库管理员通过库存管理子系统中的产品入库界面获取产
品信息; 产品入库界面根据产品的编号将产品类实例化并请求该类 产品信息; 产品类实例化对象根据产品的编号加载产品信息并提供给 产品入库界面; 仓库管理员通过产品入库界面增加产品数目; 产品入库界面通过产品类实例化对象修改产品信息; 产品类实例化对象向产品入库界面返回修改信息; 产品入库界面向仓库管理员显示添加成功的信息。
③ 给出对象命名,但如果要区分同一个类的不同对象,则
应给对象命名,同一序列图中的几条生命线可以表示同 一个类的不同对象;应当给对象命名,以便区分不同的 两个对象;
④ 表示类的生命线可以与表示该类对象的生命线平行存在。
可以将表示类的生命线对象名设置为类的名称。
10.2 序列图的组成
主角(主动对象):
第10章 序列图
10.1 10.2 10.3 10.4 10.5 序列图的基本概念 序列图的组成 序列图的高级概念 序列图的创建概述 序列图的创建示例
交互图概念
用例图和类图及对象图是对静态结构的描述,期间没有 考虑系统各个环节之间的相互关系以及静态结构要素之 间的动态变化。
系统的动态模型作为一种交互视图,它描述执行系统功 能的各个角色之间相互传递消息的顺序关系。通过这种 动态视图实现了对静态视图结构的补充和完善,还可以 改善系统的静态结构。
10.1 序列图的基本概念
序列图的主要目的是定义事件序列,产生一些希望的输出。 重点不是消息本身,而是消息产生的顺序。 大多数序列图会表示一个系统的对象之间传递的什么消息, 以及它们发生的顺序。
序列图按照水平和垂直的维度传递信息:
①垂直维度从上而下表示消息/调用发生的时间序列 ②水平维度从左到右表示消息发送到的对象实例。
案例分析-饮料销售机
(2)钱币记录仪将负责: 从前端获取顾客输入信息(即选购的饮料种类和 现钞); 更新现钞存储; 找零钱。 (3)分配器将负责: 检查选购的饮料是否还有货; 分发一罐饮料。 请先描述其类图,再绘制其顺序图。
案例分析-饮料销售机
:Customer :Front : Front :Register :Dispenser 1: accept(cash,select) 2: getCustomerInput(cash,select) 3: checkAvailability(selection) 4: Availabie
交互:是指在具体语境中为实现某个目标的一组对象之间 进行交流的一组消息构成的行为及过程。
10.1 序列图的基本概念
UML的交互机制
① 系统动态行为建模:描述一组关联的相互作用的对象 间的动作序列和配合过程,包括这些对象间传递、接 受的消息描述系统某组行为动态;
② 系统控制过程建模:针对一个用例、业务过程、系统 过程或者是整个系统,描述消息在系统内是如何按照 时间顺序被发送、接受和处理的。
10.1 序列图的基本概念
序列图的示例
10.1 序列图的基本概念
10.1.2序列图的作用
序列图与类图相似,开发者一般认为序列图只对他们有意义。 然而,一个组织的业务人员会发现,序列图显示不同的业务 对象如何交互,对于交流当前业务如何进行很有用。除记录
组织的当前事件外,一个业务级的序列图能被当作一个需求
:Name
10.2 序列图的组成
10.2.3 激活
当一条消息被传递给对象的时候,它会触发该对象的某 个行为,这时就说该对象被激活了。
√
√
√
√ √
Βιβλιοθήκη Baidu
10.2 序列图的组成
10.2.4 消息
消息是对象之间的通信,它在传达信息的同时期望活动随之发 生; 在序列图中,消息被表示为从一个对象的生命线到另一个对象
[Condition2] [Condition1]
10.4 序列图的创建概述
10.4.1 创建序列图
创建注释 将注释链接到序列图相关模型(对象)
创建序列图中的对象
10.1 序列图的基本概念
序列图的作用体现在一下几个方面:
①
②
确认和丰富一个使用语境的逻辑表达;
有效描述如何分配各个类的职责以及各个类具有相 应职责的原因 把用例表达的需求,转化为进一步、更加正式层次 的精细表达。用例常常被细化为一个或者更多的序 列图;
③
10.2 序列图的组成
序列图的示例
10.2 序列图的组成
对象之间普通消息传递 对象自身消息传递 返回消息
对象之间过程调用 对象之间异步消息,发送消息后不管消息是否被 接受,继续进行下一步处理
10.2 序列图的组成
同步消息:表示发送者发出消息后等待接 收者响应这个消息。
异步消息:在这种消息中,发送者把控制 权转交给接收者,但不等待操作完成。
10.2 序列图的组成
3: checkForChange(cash,price) 4: returnCash(cash)
5: displayPrompt("Use Correct Change")
没有使用合适的零钱找不开
案例分析-在线股票经纪人系统
John Doe登录。 系统建立安全的通信。 系统显示投资组合信息。 John Doe输入买入订单,按市场价购买100份GE的股票。 系统验证购买资金是否充足。 系统显示带有估算成本的确认窗口。 John Doe确认买入。 系统下订单给证券交易所。 系统显示交易合同号。 John Doe注销。 系统建立非安全的通信。 系统显示再见窗口。 证券交易所报告交易结果。
5: updateReserve(cash,price) 6: checkForChange(cash) 7: receiveSoda(selection)
买到饮料
案例分析-饮料销售机
:Customer :Front : Front :Register :Dispenser 1: accept(cash,select)
10.3 序列图的高级概念
10.3.2 分支与从属流
有两种方式来修改顺序图的控制流:使用分支和使用从属 流。控制流的改变是由于不同的条件导致控制流走向不同 的道路: ① 分支允许控制流由一个点发出消息,走向不同的对象。 ② 从属流是指从一个点发出多个消息指向同一个对象不 同的生命线。
ObjectA ObjectB ObjectC
的生命线的水平实线箭头。如果消息从一个对象发向该对象自
身,箭头的开始位置和结束位置就可能位于同一条生命线上。 箭头通过消息名称及消息参数来标记。为了显示消息在整个交 互中的顺序,还可以用顺序号来标记消息箭头。序列图中通常 会省略顺序号,此时用箭头的物理位置来表示相对顺序。
10.2 序列图的组成
消息的3个部分
三种表示消息的方法
① 消息线本身 ② 消息线加消息编号 ③ 消息线加消息编号加消息名
案例分析-汽车和车钥匙
遥控锁车和开锁的钥匙-你可以用它打开后 备箱。如果你有这样一把锁,但你按下 “锁车”按钮时,会发生什么情况。汽车 自动上锁,闪动一下车灯并发出一声峰鸣, 告诉你它已经把车门上锁了。请先描述其 类图,再绘制其顺序图。
案例分析-饮料销售机
假设饮料销售机有3个部分:前端(front)、钱 币记录仪(register)(它负责收集顾客投的钱币) 以及分配器(dispenser)。 (1)前端负责: 接受顾客的选购和现钞; 显示诸如Out of selection(所选饮料已售完) 和Use correct change(使用合适零钱)的信息; 从记录仪接收找回的零钱并返还给顾客; 返还现钞; 从分配器接收一罐饮料并把它交给顾客。
作为交互的发起者,主角实例通常由序列图中的第一条(最
左侧)生命线来表示。如果在同一序列图中有多个主角实例, 就应尽量使它们位于最左侧或最右侧的生命线 。
10.2 序列图的组成
10.2.2 生命线
生命线是表示序列图中对象在一段时间内的存在,它是一条 时间线,出序列图的顶部延伸到底部,所用时间取决于交互 时间的长短 对象的存在时段包含对象在拥有控制线程时或被动对象在控 制线程通过时存在。当对象拥有控制线程时,对象被激活; 被动对象在线程通过时,被调用,称为活动
2: getCustomerInput(cash,select) 3: checkAvailability(selection) 4: Sole Out 5: returnCash(cash)
6: displayPrompt("Sole Out")
售完
案例分析-饮料销售机
:Customer :Front : Front :Register :Dispenser 1: accept(cash,select) 2: getCustomerInput(cash,select) 3: checkAvailability(selection) 4: Availabie
交互视图显示了跨越多个对象的系统控制流程,交互视 图可用两种图来表示:序列图和协作图
10.1 序列图的基本概念
10.1.1序列图的定义
序列图是对对象之间传递消息的时间顺序的可视化表示。 从一定程度上更加详细的描述了用例表达的需求,将用例 图转化为进一步、更加正式层次的精细表达(用例常常被 细化为一个或者更多的序列图 )。序列图的目的在于描 述系统中各个对象按照时间顺序的交互过程。
序列图的包含内容
1. 对象 2. 生命线 3. 激活 4. 消息
10.2 序列图的组成
10.2.1 对象
10.2 序列图的组成
序列图使用对象的方式
① 使用生命线来建立类与对象行为的模型。但是,一条生
命线通常表示某个类的所有对象;
② 可以不指定对象的类。通常,可以先用对象创建序列图,
随后再指定它们所属的类;
1. 消息发送者:发出消息的类元角色;
2. 消息接受者:接受消息的类元角色;
操作方法实现,接受信号被激活,活动结束后调用
者收回控制权,并可能接受返回值
对主动对象而言,操作调用导致调用事件,并触发
状态机转换
3. 活动:是调用、信号、发生者的局部操作或原始活 动,(创建或销毁)。
10.2 序列图的组成