.

作者 : 万境绝尘

转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/17927131

.

动态图概念 : 从静态图中抽取瞬间值的变化描述系统随时间变化的行为, 动态图包括交互图活动图状态图, 这篇博客研究交互图 包括时序图协作图;

-- 时序图 : 显示对象之间的关系, 强调对象之间消息的时间顺序, 显示对象之间的交互;

-- 协作图 : 描述对象之间的交互关系;

一. 时序图 (Sequence Diagram)

1.时序图的概念

时序图定义 : 描述了对象之间传递消息的时间顺序, 用来表示用例中的行为顺序, 是强调消息时间顺序的交互图;

时序图描述的事物: 时序图描述系统中类和类之间的交互, 将这些交互建模成消息交换, 时序图描述了类以及类之间的交换完成的期望行为的消息, 时序图中每条消息都代表了类的一个操作 或者 引起状态机改变的触发事件;

时序图表示 : 参与交互的对象在时序图顶端水平排列, 每个对象的底端绘制了一条垂直虚线, 对象A像对象B发送消息, 用一条带箭头的实线表示, 该实线起始于对象A底部的虚线, 终止于对象B底部的虚线; 实线箭头水平放置, 越靠近顶端越早被发送.

时序图轨迹 : 时序图提供了随时间推移的, 清晰的 可视化的轨迹;

2. 时序图组成

时序图组成 : 时序图包括四个元素 对象(Object), 生命线(Lifeline), 激活(Activation), 消息(Message);

(1) 对象(Object)

对象 : 时序图中的对象在交互中扮演的角色就是对象;

对象的符号 : 时序图中的对象与对象图中的表示方法一样, 使用矩形将对象名称包含起来, 并且对象名称下有下划线;

对象创建时机 : 对象可以在交互开始的时候创建, 也可以在交互过程中进行创建;

-- 处于顶部 : 如果对象的位置在时序图顶部, 说明在交互开始的时候对象就已经存在了;

-- 不在顶部 : 如果对象的位置不在顶部, 那么对象在交互过程中创建的;

(2) 生命线(Lifeline)

生命线 : 生命线是一条垂直的虚线, 这条虚线表示对象的存在, 在时序图中, 每个对象的底部都有生命线;

生命线作用 : 生命线是一个时间线, 从时序图顶部一直到底部都存在, 其长度取决于交互的时间;

对象的生命线 : 对象与生命线结合在一起就是对象的生命线, 这个概念包含对象图标 以及 对象下面的生命线图标 如上图;

(3) 激活(Activation)

激活(Activation) : 代表时序图中对象执行一项操作的时期, 激活期可以理解为语义中 {} 中的内容, 表示该对象被占用以完成某个任务;

去激活(Deactivation) : 指对象处于空闲状态, 在等待消息激活这个对象;

激活的表示 : 当对象处于激活时期, 生命线可以拓宽为矩形, 这个矩形条成为激活条;

激活去激活的时机 :

-- 激活 : 对象激活是在激活条的顶部激活;

-- 去激活 : 激活条的底部去激活, 通常发生在一个消息离开对象生命线;

(4) 消息

消息概念 : 定义 交互协作交换信息 的类, 对 对象之间的 通信内容 建模;

消息动作 :

-- 动作种类 : 消息允许在实体间传递信息 (传递参数), 允许实体请求其它服务, 对象之间通过 发送 和 接收 消息 进行通信;

-- 产生结果 : 消息可以触发操作, 唤起信号, 或使目标对象创建 或 销毁;

消息的异步和同步通信 :

-- 异步通信 : 消息是信号的时候, 发送信号之后, 等待对方触发相应方法, 这是明确的 命名的 对象间的异步通信;

-- 同步通信 : 直接调用对象的方法, 执行方法返回结果, 这种具有返回控制机制的操作是同步通信;

时序图和协作图中消息的区别 : 时序图中的消息强调顺序, 协作图中的消息强调交换消息的对象间的关系;

消息类型 :

--  : 两个对象间绘制消息;

--  : 两个对象之间的过程调用;

--  : 两个对象之间的异步消息;

--  : 过程调用中返回的消息;

--  : 绘制反身消息;

3. 时序图示例

示例简介 :

-- 使用场景 : 汽车租赁公司;

-- 使用的对象 : Customer (客户), Worker (工作人员), Order (请求), Record (记录), Car (汽车);

-- 工作流程 : ① 客户 向 工人 提出租车要求, ② 工人 检查 请求, ③ 客户 付款, ④ 工人 填写 记录, ⑤ 工人 取车;

时序图 :

4. 对象的创建和撤销

对象位置 :

-- 顶部 : 时序图中对象的默认位置是在时序图顶部, 这表明对象在交互开始之间就已经存在;

-- 中间 : 如果对象在时序图中间部分, 说明对象时在交互过程中创建的;

交互过程中创建对象的方法 :

-- 消息指向对象 : 消息是构造方法, 箭头指向对象所代表的的矩形;

-- 消息指向激活条 : 消息是构造方法, 箭头指向对象下面的激活条;

撤销对象 : 如果想要在时序图中撤销一个对象, 因为如果同时有几个对象, 如果不进行特殊操作其生命周期将会一样长;

-- 效果图 : 下图中将 Customer 和 Order 对象撤消了, 因为它们基本没有参与后期的交互;

5. 时序图建模技术

时序图使用时机 : 对动态行为建模, 强调时间展开信息的次序的时候, 使用时序图;

时序图管理策略 :

-- 单一控制流 : 一个单独的时序图只能显示一个控制流;

-- 多个时序图 : 完整的控制流很复杂, 可以绘制多个时序图, 一个主干时序图, 多个分支时序图, 使用包对这些时序图进行管理;

时序图建模策略 :

-- 设置交互语境 : 交互所在的环境, 包括哪些对象, 属于什么系统, 子系统, 相关的操作 类 用例等;

-- 对象排列顺序 : 根据对象重要性, 从左到右排列在时序图中;

-- 对象生命线 : 对象通常存在于交互的整个过程, 也可以在交互过程中被创建和撤销;

-- 消息排列 : 引发交互信息之后, 消息按照时间顺序从上向下画出, 先发出的消息 在 后发出的消息上面;

-- 激活期设置 : 可以将实际操作发生的 时间点 消息 明确的显示出来;

-- 时间空间约束 : 每个消息都可以附加合适的时间 和 空间约束;

-- 前置后置条件 : 每条消息可以附加 前置 或 后置 条件;

6. Rational Rose 时序图 操作

(1) 创建时序图

新建时序图 : 在 视图浏览器 中 右键点击 Logical View (逻辑视图), 选择 New(新建) -> Sequence Diagram(时序图);

(2) 添加对象

添加对象 : 时序图中有两种对象, 一种是参与者Actor, 一种是普通的对象;

-- 参与者对象 : 在类图中创建一个对象, 将其 Stereotype 修改为 Actor, 就变成了参与者, 然后在 视图浏览器中将这个元素拖到时序图中即可;

-- 普通对象 : 直接在 时序图中 点击  按钮, 在界面中创建对象;

-- 两种对象效果 :

设置对象属性 : 双击对象, 在弹出的 General 对话框中修改对象属性;

-- Name : 对象名称, 不输入也可以;

-- Document : 描述对象的文档;

设置对象持续性 :

-- 持续 (Persistent) : 对象保存在数据库 或 其它形式的永久存储体中;

-- 静态 (Static) : 对象保存在内存中知道程序终止;

-- 临时 (Transient) : 短时间内保存在内存中;

(3) 添加消息

消息作用 : 消息用两个对象生命线之间的箭头表示, 一个对象可以通过消息请求另一个对象执行某个操作;

增加消息 :

-- 发送消息 : 将  从发送消息对象的生命线 拖到 接收消息对象的生命线上;

-- 显示取消编号和激活条 : 菜单栏 Tools -> Options -> Diagram 选项卡, Sequence numbering 是消消息编号 , Focus of control 显示激活条;

.

二. 协作图 (Collaboration Diagram)

1. 协作图概念

协作图 : 协作图是 一种 类图, 包含 类元角色关联角色, 不仅仅是 类元 和 关联;

-- 强调 : 强调参与交互的 各个对象的结构信息 和 组织;

协作图建模对象 : 对有交互的对象 和 这些对象之间的关系建模, 不参与交互的对象及它们的关系忽略;

协作图内容 : 协作图中表现了 类操作中用到的参数, 布局变量, 操作中的永久链;

对象图扩展 : 协作图可以看做对象图的扩展, 该图展示了对象之间的关联, 显示出了对象间的消息传递;

2. 协作图内容

(1) 对象(Object)

对象 : 代表协作图 交互 中的主体, 和时序图中对象的概念类似;

协作图 和 时序图中对象区别 : 协作图中对象无法 创建 和 撤销, 因此 对象在协作图的位置没有限制;

(2) 链(Link)

.

链的表示 : 链的符号 和 对象图中 链所用的符号是一样的, 用来连接两个类角色的实线;

--  : 创建对象之间的通信路径;

--  : 显示对象可以调用自己的属性;

--  : 在两个对象之间 或 一个对象本身增加消息;

--  : 在两个对象之间 或 一个对象本身 从反方向增加消息;

--  : 显示两个对象之间的信息流;

--  : 在反方向显示两个对象之间的信息流;

路径构造性 : 对象之间的连接 可以由 链末尾 附加的 路径构造型表示;

-- 添加方式 : 双击链, 选择 visibility属性即可;

(3) 消息 (Message)

消息概念 : 对象间通过链接发送的就是消息;

-- 消息传递方向 : 对象之间的箭头表明对象间交换的消息流, 一个对象发出消息, 链指向的对象接收消息, 链用于实现消息传输;

-- 消息标识 : 消息流标有消息的序列号 和 对象间发送的消息名称;

-- 消息结果 : 每条消息否会触发接收对象的一系列操作;

消息序号 : 协作图 与 时序图 中的 消息类型 是一样的, 为了表明消息顺序, 需要为消息添加序号;

3. 协作图示例

示例简介 : 汽车租赁流程;

-- 涉及到的对象 : Customer (客户), Order (订单), Worker (工人), Record (记录), Car (汽车);

-- 流程简介 : 客户 写好 订单, 工人 核对 订单, 核对后 订单 存在, 允许 客户 取车, 工人 填写 记录, 并将车 取出;

4. 协作图建模策略

协作图使用场景 : 对系统动态行为建模, 按组织对控制流建模使用协作图;

协作图管理策略 :

-- 单个协作图 : 单个协作图 只能 显示一个控制流;

-- 多个协作图 : 描述复杂系统的时候, 需要许多协作图共同描述, 一些图是主干协作图, 还有许多分支路径的控制流的协作图, 使用包管理这些协作图;

协作图的建模策略 :

-- 设置语境 : 设置 协作图所在的环境 , 如 系统, 子系统, 类, 操作, 用例 或 用例脚本;

-- 对象顶点 : 识别对象在协作图中扮演的角色, 协作图中, 对象是图的顶点;

-- 变化修改 : 每个对象最初都会设置初始值, 如果期间对象发生了变化, 修改的方式是 : 协作图中放置一个复制对象, 更新复制对象, 同过后造型 become copy 连接二者;

-- 确定链接顺序 : 先确定关联链接, 哪些对象相互链接; 在确定消息链接, 路径构造型等 表示对象间如何连接;

-- 消息顺序 : 从引起交互的消息开始编号, 将编号信息 和 描述信息 附到链接上, 描述了对象之间的传递次序;

-- 时间空间约束 : 可以为每个消息附加 时间 和 空间 上的约束;

-- 前置后置条件 : 可以为每个消息附加 前置 和 后置 条件;

5. Rational Rose 绘制 协作图

(1) 创建协作图

创建流程 : 视图浏览器 -> Logical View (逻辑视图) -> New (新建) -> Collaboration Diagram (协作图);

(2) 添加对象

协作图中添加对象 : 与时序图基本类似;

-- 添加参与者对象 : 在类图中创建好类, 然后将类型设置为Actor, 然后在视图浏览器中将Actor拖到协作图中;

-- 添加普通对象 : 直接点击工具栏中的图标设置即可;

(3) 添加消息

添加对象间消息 : 在两个对象之间添加消息;

-- 建立通信路径 : 使用  连接两个对象, 建立两个对象间的通信路径;

-- 添加消息 : 使用  或  在通信路径上添加消息;

-- 设置消息名称 : 双击消息箭头, 可以在弹出的对话框中修改消息名称;

添加反身消息 : 选择  点击 对象, 就会出现指向对象本身的路径, 选择  点击这个指向本身的路径, 可以为该对象添加消息;

(4) 添加数据流

数据流概念 : 数据流是一个对象向另一个对象发送消息返回的消息;

-- 使用场景 : 没必要在每个消息上都加上数据流, 只要在中药消息上附加数据流即可;

数据流添加方法 : 选择  或  按钮, 单击要返回的数据消息, 数据流箭头就会被添加到这个消息上;

.

6. 时序图 与 协作图 转换

各自侧重点 : 时序图 和 协作图 是等价的, 可以任意转换, 而不丢失信息;

-- 时序图 : 描述交互过程中的时间顺序, 没有明确表达对象间关系;

-- 协作图 : 描述了对象间的关系, 但是时间顺序必须从消息的序号中获取;

转换示例 :

-- 场景介绍 : 学生毕业管理;

-- 对象介绍 : 教务人员, 学位评价, 成绩管理, 奖惩管理, 信息打印;

-- 控制流介绍 : ① 教务人员 输入学号 进入学位评价模块, ② 学位评价模块 会向 成绩管理模块查询成绩, ③ 向奖惩管理模块 查询 奖惩记录, ④ 学位评价模块 会将结果打印到 信息打印模块, ⑤ 信息打印模块 将结果返回给教务人员;

时序图 :

协作图 :

7. 时序图 和 协作图 对比

时序图 和 协作图 共同点 : 都是有 消息 和 类角色组成;

-- 规定责任 : 时序图 和 协作图 都规定了 消息发送对象 和 消息接收对象 的责任, 每个接收对象都有消息对应的接口, 这个接口方法由消息发送对象触发;

-- 支持消息 : 时序图 和 协作图 都支持消息;

-- 衡量工具 : 时序图 和 协作图 可以作为衡量系统耦合性的工具, 耦合性就是 系统中模型之间的依赖性, 两个模型之间的依赖关系通过查看两个模型之间的消息数量 和 类型就可以看出, 消息交互少的 耦合性高;

时序图 和 协作 不同点 :

-- 对象创建撤销侧重点 : 时序图侧重描述对象的创建 和 撤销, 新创建的对象放在对象生命线上对应的时间点, 撤销的对象在结束的地方放一个 X 表示该对象不能再继续使用; 协作图中 创建 撤销的概念不存在, 对象时始终存在的, 只能通过消息描述 或 约束 来说明对象的创建和撤销;

-- 链接侧重点 : 时序图 中的链 没有表示出来, 可以随意绘制消息, 有些逻辑交互可能不会发生; 协作图 的消息 是映射在链 上的, 消息 和 链 平行放置, 如果想要通过消息 查看 对象之间的关联 使用协作图最好;

-- 激活和去激活 : 时序图表现有激活 和 去激活, 协作图上没有时间概念的描述, 无法清晰地表示对象的激活 和 去激活;

三. 实例 - 图书管理系统

1. 管理员为图书添加类别

控制流说明 :

-- 涉及到的对象 : Admin (管理员), BookInfoWindow (图书信息窗口), Tittle (图书类别), Item (图书条目);

-- 流程 : 管理员 查询 图书信息窗口, 查看有没有相应的 图书类别, 如果有 插入该图书条目;

时序图 :

\

协作图 :

2.  管理员删除图书

控制流说明 :

-- 涉及到的对象 : Admin (管理员), BookInfoWindow (图书信息窗口), Tittle (图书类别), Item(图书条目);

-- 控制流程 : 管理员 登陆 图书信息窗口 删除图书, 查表图书类别 是否存在, 查找图书是否存在, 如果都返回true, 删除图书条目;

时序图 :

协作图 :

3. 管理员 借书时序图

控制流说明 :

-- 参与的对象 : Admin (管理员), BookInfoWindow (图书信息窗口), Tittle (图书类别), Borrower (借阅者), Loan (借书记录), item (图书条目);

-- 流程 : 管理员 登陆 图书信息窗口, 查询 图书类别 是否存在, 查询 图书条目是否存在, 查询 借阅者是否存在, 创建 借书记录;

时序图 :

协作图 :

.

作者 : 万境绝尘

转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/17927131

.

【UML 建模】UML入门 之 交互图 -- 时序图 协作图详解相关推荐

  1. UML交互图 -- 时序图 协作图详解

    作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/17927131 . 动态图概念 : 从静态图中抽取瞬间值的变 ...

  2. UML建模——使用EA工具开发时序图实践及经验

    Enterprise Architect(以下简称EA)是一款基于OMG UML的可视化模型与设计工具,提供了对软件系统的设计和构建.业务流程建模和基于领域建模的支持,被企业和组织不仅应用于对系统的建 ...

  3. [转]PlantUML画类图、流程图、时序图使用详解

    程序员难免要经常画流程图,状态图,时序图等.以前经常用 visio 画,经常为矩形画多大,摆放在哪等问题费脑筋.有时候修改文字后,为了较好的显示效果不得不再去修改图形.今天介绍的工具是如何使用 Pla ...

  4. PlantUML画类图、流程图、时序图使用详解

    程序员难免要经常画流程图,状态图,时序图等.以前经常用 visio 画,经常为矩形画多大,摆放在哪等问题费脑筋.有时候修改文字后,为了较好的显示效果不得不再去修改图形.今天介绍的工具是如何使用 Pla ...

  5. echart关系树状图_echart——关系图graph详解

    VueEchart组件见上一篇 export default { data () { const title = { // show: true, //是否显示 text: "画布关系图&q ...

  6. UML建模之交互图——时序图、协作图

    UML建模之交互图--时序图.协作图 一. 时序图 (Sequence Diagram) 1.时序图的概念 2. 时序图组成 二. 协作图 (Collaboration Diagram) 动态图概念 ...

  7. 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

    发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...

  8. 【UML 建模】UML建模语言入门-视图,事物,关系,通用机制

    . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . 一. UML视图 1. Ration ...

  9. Java--UML类图--使用/详解

    原文网址:Java--UML类图--使用/详解_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Java的UML类图的使用.类与类之间的关系. 类.接口和类图 简介 UML即统一建模语言(Unifie ...

最新文章

  1. LeetCode Count and Say
  2. LeetCode Top K Frequent Elements
  3. Prototype原型模式(创建型模式)
  4. 计算机一级办公软件试题,计算机一级《MS Office》练习题(含答案)
  5. asp写入mysql拿shell_mysql误删数据快速恢复
  6. 程序员听爵士,架构师学做交响指挥
  7. springmvc mybatis redis mysql maven搭建基本开发框架 (二)
  8. 什么是国家机关、国有企业、事业单位?
  9. 使用 URL 读取网络资源
  10. linux内核make menuconfig配置
  11. 从国家统计局爬取山东省市区县乡镇
  12. PHP中的FPM是做什么的_fpm的配置与使用
  13. PhantomJS+Selenium+Scrapy抓取巨潮资讯网企业信息
  14. 安装minidwep-gtk出现了“离开目录”的错误
  15. twm配置文件.twmrc
  16. OMAP850 运行android
  17. 【夏目鬼鬼分享】rabbitmq消息队列发送于接收
  18. netlogo和java,Netlogo:Shapefile与Raster
  19. Windows cmd命令 GeTu0529
  20. H3C防火墙修改加密套件V7

热门文章

  1. Redis学习(2)-redis安装
  2. Java - 基本语法
  3. 洛谷 P1013 进制位
  4. 数学老师必备工具,你的最爱!
  5. 身为java程序员你需要知道的网站(包含书籍,面试题,架构...)
  6. Spring.NET实用技巧3——NHibernate分布式事务(上)
  7. vs2005sp1安装加速
  8. GWT笔记(Google Web Toolkit)1
  9. 算法学习:后缀数组(SA)
  10. 字典树andXOR*