软件工程 第五章:交互图
第五章:交互图概述动态模型用来描述系统的动态行为,分为状态模型和交互模型。交互图描述对象间的动态合作关系及合作过程中的行为次序。常用来描述一个用例的行为,显示该用例中所涉及的对象及它们间的消息传递情况。交互图有序列图和协作图两种形式。序列图主要用来描述对象之间信息交换时的时间顺序.协作图则用来描述系统对象之间如何协作共同完成系统功能的要求。它们在语义上是等价的。这意味着序列图和协同...
第五章:交互图
概述
- 动态模型用来描述系统的动态行为,分为状态模型和交互模型。
- 交互图描述对象间的动态合作关系及合作过程中的行为次序。常用来描述一个用例的行为,显示该用例中所涉及的对象及它们间的消息传递情况。
- 交互图有序列图和协作图两种形式。
序列图主要用来描述对象之间信息交换时的时间顺序.
协作图则用来描述系统对象之间如何协作共同完成系统功能的要求。 - 它们在语义上是等价的。这意味着序列图和协同图内部包含的信息是相同的。因此两图可以互相推导,可通过工具互相自动转换
- 交互图可以为软件系统的下列构成的对象的动态行为进行建模:类、接口、部件、节点
序列图
概述
- 定义:序列图是交互图的一种,它强调的是消息发送的时间的先后顺序
组成
(1)对象:序列图中所包含的每个对象用一个对象框(短式)表示,对象名需带下划线。
(2)生存线:对象框下画的一条垂直虚线,称为该对象的生存线,表示对象的生存时间。
(3)激活期:对象生存线上的一个细长方形框,表示该对象的激活时间段,即活动期间。
(4)消息:对象之间消息的发送和接收用两个 对象生存线(激活期)之间的消息箭头线。
消息
-
定义:对象间的互相合作与交流表现为一个对象以某种方式启动另一一个对象的活动。这种交流在UML中被定义为消息。消息相当于向目标对象发送了一条命令,此命令启动了目标对象的一个动作。
-
分类:消息的分类可以从两个角度区分:
一是从消息触发的动作来区分
二是从消息的过程控制流进行区分。 -
通过发送消息可以触发的动作有:
- 创建一个对象或释放对象
- 调用另一个对象的操作
- 调用本对象的操作
- 发送信息给另一个对象
- 返回值给调用者
- 消息可以分为四种控制流,分别是简单消息、异步消息、同步消息和返回消息。
1)简单消息
展示了控制如何从一个对象传递到另一个对象,但不描述任何通信的细节。
2)同步消息
是一种嵌套的控制流,通常用操作调用来实现。
3)异步消息
异步控制流,没有明显的返回信息回送给调用者。
4)返回消息
表示控制流从过程调用的返回。
建立序列图的过程
① 从用例中识别交互过程;
② 识别参与交互过程的对象;
③ 为每一个对象设置生命线,并确定对象的存在期限;
④ 从引发交互的初始消息开始,在对象生命线上依次画出交互的消息;
⑤ 如果需要,可以给消息增加时间约束,以及前置条件和后置条件。
例:
读者在借书时,先由馆员把读者编号输入给系统,系统返回读者的身份信息,以及读者的借阅信息。如果读者借书数量没有超过借书的上限,则把要借书的图书编号输入系统,系统登记借书信息,并返回借书成功信息,借书过程完成。
协作图
概述
定义:协作图是交互图的另一种表现形式,它在语义上和交互图是等价的
构成
包含三个:对象、连接、在此连接上传递的消息
- 连接:
- 连接(Link)被定义为对象之间的语义联系。连接是类之间的关联关系实例。在序列图中,两个对象之间有消息,意味着它们之间在语义上存在着联系,所以它们的对象之间存在着连接关系。
- 在协作图上,连接用对象之间相连的直线来表示; 连接可以有名字,它标在表示连接的直线上
建立协作图的过程
① 从用例中识别交互过程;
② 识别参与交互过程的对象;
③ 确定对象之间的链,以及链上的消息;
④ 从引发交互的初始消息开始,将随后每个消息附在相应的链上;
⑤ 如果需要,可以给消息增加时间约束,以及前置条件和后置条件。
对比
- 协作图VS序列图
- 序列图和协作图都属于交互图,用来描述对象之间的动态关系。
- 序列图和协作图在语义上是等价的,两者可以相互转换。
- 与序列图相比,通过编号来看消息的执行顺序比较困难,但协作图中对象间灵活的空间布局可以更方便地展示动态连接关系等有用信息。
- 序列图强调消息的时间顺序,协作图强调参与交互的对象的组织关系。
- 当行为比较简单时,交互图比较好;当行为比较复杂时,则应使用活动图。
- 如果想描述跨越多个用例的单个对象的行为,应当使用状态图。如果想描述跨越多个用例或多个线程的复杂行为,则应使用活动图。
变化
- 在UML2.0中,通信图实际上是以前版本的协作图
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)