当前课程知识点:软件工程与软件自动化 >  第三章 OO与UML >  3.6 主要UML模型图绘制技巧 >  UML序列图绘制技巧

返回《软件工程与软件自动化》慕课在线视频课程列表

UML序列图绘制技巧在线视频

下一节:设计模式有毒么?

返回《软件工程与软件自动化》慕课在线视频列表

UML序列图绘制技巧课程教案、知识点、字幕

嗨,大家好

今天我们来讨论UML序列图

UML的模型可以分为两类,一类是动态模型,一类是静态模型

用例图、类图和对象图都是UML中的静态结构模型

而在UML系统的动态模型中,其中一种就是交互图

它描述了执行系统功能的各个角色之间

相互消息传递的次序关系

我们用的序列图就是交互图的一种

序列图是对象之间传递消息的时间顺序的可视化表示

序列图的主要用途是把用例表达的需求

转化为进一步的更加正式的更加层次化的精细表达

用例常常被细化为一个或者多个的序列图

我们可以根据对象之间的相互关系来定义类的职责

各个类之间的交互关系构成了一个特定的用例

比如Customer对象向Address对象请求它的街道名称

这句话指出了Customer对象应该具有一个

“知道街道名称”这个职责

序列图的构成也不复杂,主要有对象

生命线,消息和激活期构成

对象在上面一字排开,虚线为对象的生命期

注意那个红色的叉,它表示对象的销毁

对象之间的箭头表示消息的方向

消息的名字位于箭头的上方

激活期表示对象正在履行职责,用长条矩形来表示

序列图用于表达对象之间的交互

所以应该有对象名,一般的表达方法是

对象名,冒号,类名

有时候我们觉得没有必要确定对象属性

这时候可以用匿名对象,或者省略对象名

直接用冒号加类名来表示

一般来说对象横着一字排开,左右顺序并没有严格的限制

但是为了避免出现消息交叉,为了版面的整洁

我们一般把交换消息比较频繁的这些对象排在一起

并且把启动交互过程的那些对象放在左边

这样纯粹是为了方便我们画图和交流

也不是严格的约定,但是我们建议遵守这种约定

生命线表示对象存在的时间

而激活表示对象的执行

它表示一个对象完成操作的过程

表达了一个比较模糊的持续的执行时间

注意,框的长表示执行时间长,短表示执行时间短

但这里并不精确,这一点大家要注意

同时可以看出执行者和调用者之间的控制关系

对象没有激活的时候依然存在,并没有被销毁

消息是从一个对象发出到另外一个对象或几个对象的信号

或者可以理解为一个对象调用另外一个对象的方法

序列图中的消息可以分为简单消息,同步消息

异步消息和返回消息等

简单消息就是一个方法的调用

同步消息发出后,发出消息的对象

就必须等待消息返回之后才能继续执行

而异步消息则是发出消息之后继续往下执行

接收消息的对象在执行完毕后通知发送者

由发送者来决定怎么处理

消息的传递是有次序的

按照从上到下的顺序严格执行

这种消息的次序保证了业务流程的一致性和稳定性

不同的UML工具对消息的支持程度不完全一样

这是Rational Rose对消息类型的支持程度

一般情况下,初学者没有必要掌握这么多的表达方法

在序列图中,创建对象操作的执行

是用消息的箭头来表示,箭头指向被创建对象的框

如果要销毁对象 ,那么就在对象的生命线上打个叉

注意这个叉的位置是在导致对象被销毁的信息上

或者在对象自我销毁,自我终结的地方

如果你是用C#或Java之类具有自动垃圾回收机制的语言和平台

一般不需要显式的销毁一个对象

但如果一个对象使用了大量的资源

我们最好先把这个资源释放

然后这个对象扔在那里不管了,由垃圾回收器回收

这是可以的

在UML中,存在这两种方式可以修改序列图中消息的控制流

它们分别是分支和从属流

分支是指从同一点发出的多个消息指向不同的对象

它的条件是不是互斥,可以分成条件和并行两种结构

由于序列图只表示某一个活动按照时间顺序的经历过程

所以一般的UML工具软件对序列图的分支的画法没有明显的支持

从属流指的是从同一点发出的多个消息指向同一个对象的不同生命
线

添加从属流以后会明显增加序列图的复杂程度

所以一般情况下,我们尽可能要保证序列图清晰,容易理解

最后,我们来回顾一下如何构建一个序列图

首先要从用例描述中识别交互过程

抽取出关键词,识别为对象或者是候选对象

画出序列图,按照对象的交互频繁与否

来安排它们之间的位置

然后画出它们的生命线

从引发交互的那个对象开始

在对象的生命线上依次画出交互的消息

如果需要,可以为消息增加时间约束等修饰

如果在序列图的交互中发现了新的问题

识别出了新的类或者把原来的类进行了重新布局

改变了类间关系,需要马上更新类图

并要确保顺藤摸瓜修改其他UML模型图

以保证模型图元素之间的一致性

好,UML序列图我们就讨论到这里,谢谢大家

软件工程与软件自动化课程列表:

第一章 软件工程基础

-1.1 软件工程的前生今世

--开篇阅读

--授课视频

-第一章 软件工程基础--1.1 软件工程的前生今世

-1.2 万变不离其宗

--授课视频1/3

--授课视频2/3

--授课视频3/3

-第一章 软件工程基础--1.2 万变不离其宗

-1.3 唯一不变的是变化

--授课视频1/3

--授课视频2/3

--授课视频3/3

--外部链接

-第一章 软件工程基础--1.3 唯一不变的是变化

-1.4 亡羊补牢为时不晚

--授课视频1/2

--授课视频2/2

-第一章 软件工程基础--1.4 亡羊补牢为时不晚

-扩展阅读与话题讨论

--扩展阅读

--话题讨论

第二章 敏捷开发

-2.1 方法论来源于恐惧

--授课视频

-第二章 敏捷开发--2.1 方法论来源于恐惧

-2.2 敏捷是什么

--授课视频

-第二章 敏捷开发--2.2 敏捷是什么

-2.3 典型敏捷开发方法

--SCRUM敏捷开发方法

--XP敏捷开发方法

-第二章 敏捷开发--2.3 典型敏捷开发方法

-2.4 敏捷不是万能药

--授课视频

-第二章 敏捷开发--2.4 敏捷不是万能药

-专家谈敏捷

--专家谈敏捷开发方法

-扩展阅读与话题讨论

--外部链接

--话题讨论

第三章 OO与UML

-3.1 面向对象核心概念和基本特性

--核心概念与基本特性

-第三章 OO与UML--3.1 面向对象核心概念和基本特性

-3.2 面向对象设计基本原则

--面向对象设计基本原则

-第三章 OO与UML--3.2 面向对象设计基本原则

-3.3 通用职责分配模式(GRASP)

--通用职责分配模式

-3.3 通用职责分配模式(GRASP)--作业

-3.4 从重构到模式

--模式和设计模式

-第三章 OO与UML--3.4 从重构到模式

-3.5 使用UML设计面向对象系统

--UML综述

-第三章 OO与UML--3.5 使用UML设计面向对象系统

-3.6 主要UML模型图绘制技巧

--UML用例图

--UML类图

--UML序列图绘制技巧

-第三章 OO与UML--3.6 主要UML模型图绘制技巧

-扩展阅读与话题讨论

--设计模式有毒么?

--话题讨论

第四章 对象模型分析

-4.1 案例简介

--书籍参考

--案例说明

-4.2 对象模型之一

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.2 对象模型之一

-4.3 对象模型之二

--授课视频1/2

--授课视频2/2

-第四章 对象模型分析--4.3 对象模型之二

-4.4 对象模型之交互

--授课视频

-第四章 对象模型分析--4.4 对象模型之交互

-扩展阅读与话题讨论

--图书推荐

--话题讨论

第五章 软件自动化技术

-5.1 软件自动化概述

--软件自动化概述

-第五章 软件自动化技术--5.1 软件自动化概述

-5.2 典型自动化方法和工具

--典型自动化工具视频

-第五章 软件自动化技术--5.2 典型自动化方法和工具

-5.3 文档自动化

--文档自动化视频

-第五章 软件自动化技术--5.3 文档自动化

-5.4 测试自动化

--测试自动化视频

--白盒测试工具VU的示例演示片段(版权属原作者)

--功能和性能自动化测试工具及简单应用演示

-第五章 软件自动化技术--5.4 测试自动化

-专家访谈

--北京理工大学刘辉教授谈软件自动化新进展

-扩展阅读与话题讨论

--各个开发阶段最流行的Java工具汇总

--话题讨论

第六章 CI/CD与DevOps

-6.1 持续集成

--持续集成视频1/2

--持续集成视频2/2

-第六章 CI/CD与DevOps--6.1 持续集成

-6.2 持续交付和部署

--持续交付和持续部署

-第六章 CI/CD与DevOps--6.2 持续交付和部署

-6.3 DevOps

--DevOps授课视频

-第六章 CI/CD与DevOps--6.3 DevOps

-专家访谈

--卓睿科技总架构师带来的精彩访谈

-扩展阅读与话题讨论

--DevOps专题

--话题讨论

第七章 软件质量保证

-7.1 质量和质量保证

--授课视频

-第七章 软件质量保证--7.1 质量和质量保证

-7.2 软件质量模型

--授课视频

-第七章 软件质量保证--7.2 软件质量模型

-7.3 SQA组织与职责

--授课视频

-第七章 软件质量保证--7.3 SQA组织与职责

-7.4 全面软件质量管理

--授课视频

-第七章 软件质量保证--7.4 全面软件质量管理

-专家访谈

--专家访谈

-扩展阅读与话题讨论

--外部链接

--话题讨论

第八章 软件过程改进

-8.1 软件过程综述

--授课视频

-第八章 软件过程改进--8.1 软件过程综述

-8.2 软件过程改进

--授课视频

-第八章 软件过程改进--8.2 软件过程改进

-8.3 能力成熟度模型

--授课视频

-第八章 软件过程改进--8.3 能力成熟度模型

-8.4 过程改进标准框架

--授课视频

-第八章 软件过程改进--8.4 过程改进标准框架

-扩展阅读与话题讨论

--敏捷和CMM矛盾么?

--话题讨论

第九章 软件复用

-9.1软件复用综述

--授课视频

-第九章 软件复用--9.1软件复用综述

-9.2 软件构件技术

--授课视频

-第九章 软件复用--9.2 软件构件技术

-9.3 软件复用实施

--授课视频

-第九章 软件复用--9.3 软件复用实施

-9.4 微服务架构

--授课视频

-第九章 软件复用--9.4 微服务架构

-扩展阅读与话题讨论

--微服务扩展

--话题讨论

文档提交处

-文档提交处--文档提交

UML序列图绘制技巧笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。