当前课程知识点:软件工程 >  第10章 行为建模 >  10.3 顺序图风格 >  讲义视频

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

讲义视频在线视频

下一节:讲课视频

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

讲义视频课程教案、知识点、字幕

交互是指对象为实现某个目标

而在彼此之间传递消息的行为

交互行为建模

目标就是为了描述对象之间

如何进行协作

在UML中

定义了多种交互图

其中 应用最广的就是顺序图

有时 我们也将其称为

时序图 序列图

在使用UML的过程中

顺序图往往是和用例建模

绑定使用的

我们可以用用例图来表达

单个情景实例的行为

也就是说

每一个用例它的交互过程

都对应一个顺序图

顺序图能够很清楚的表达

对象间如何协作

完成用例所描述的

那些交互功能

顺序图表示的是为完成用例

而在系统边界输入输出的数据

以及消息

当然 顺序图也可以推进到

系统的内部

表示系统内部对象间的

消息传递

因此 它的常用做法是

我们在用例建模期间

用顺序图来表示参与者和系统

在系统边界发生的交互活动

随着设计活动的深入

我们已经有了系统内部的

类的结构和对象之间的

交互行为的设计之后

可以再用顺序图

进一步丰富 打开系统内部的

对象之间的交互活动的展开

这里我们给出了一个用顺序图

来建模用例交互过程的实例

左边是用文本形式

描述的交互活动

右边是用用例图

来描述的相应的交互活动

对比两种表示方法

我们可以看到自然语言是

一个详细的交互过程的说明

而右边用例图给出的

图示化的消息交互过程

则非常清晰的表示了

二者之间交互的消息

以及他们之间发生的次序

和所牵涉到的是系统本身

还是用户与系统双方

所以我们可以看到

顺序图的使用

会使得系统的建模

更为清楚 简洁

通过顺序图的建模

我们可以逐步的

对之前的用例描述进行扩展

细化和查缺补漏

顺序图能够贯穿在

软件开发周期的不同的阶段

服务于不同粒度的建模

不同目标的建模

分析阶段的顺序图

我们并不包含系统的设计对象

也不关注系统的消息的

参数和它的类型

更关注的是消息本身的目的

和消息的内容

在获取到初步的用例描述之后

我们将很容易从中间提取

顺序图的建模元素

比如在用例描述的主体

我们就可以将它提取为

参与交互的对象

这里包括参与者Customer

和提供搜索支持的

界面类 Search page

以及返回的结果

Search Results Page

以及在后台提供的服务的

目录系统和结果封装的实体类

在这个建模的过程中

我们能够得到

用例交互它的交互流程

首先是从界面外边的Customer

提交了搜索请求

搜索页面在对搜索请求

进行简单的语法验证以后

将向后台的实体对象

发出按作者搜索

这一请求

按作者搜索这一请求之后

建立一个搜索结果的实体

并将其返回给结果显示页面

当搜索出错的时候

将显示出错信息

这样一个过程通过在

顺序图中的横向和竖向的

这样的建模元素的布局

我们很清楚的看到各自的职责

以及他们之间交互的次序

顺序图的建模意义在于

我们可以通过顺序图

来描述算法的逻辑

在抽象层次上

能够逐步逼近软件的代码表示

高质量的顺序图

是代码的抽象

因为我们无需描绘

每一行代码的信息

而且顺序图是与编程语言

无关的一种表示

可以通过不同的编程语言

来使一些对应的算法逻辑

我们可以通过绘制顺序图

来描述高于编码抽象层次的

业务逻辑

也就是说

无需编码的这样的内容

我们也可以通过顺序图

来表达出来

顺序图的绘制

可以通过团队协作完成

由于顺序图能够在同一个页面上

显示多个对象和类实例的行为

它加宽了我们建模的视野

可以同时描述多个对象的行为

顺序图的建模过程中

我们要把主要的注意力

集中在关键的交互上面

而要把无关的

或者是不重要的细节忽略掉

比如 如果我们顺序图

建模的主要目的是为了

描述业务逻辑

那么就没必要包括对象

和数据库之间的详细的

频繁的交互

可能只包括向保存 删除

这样的消息就足够了

甚至我们可以简单的假定

持久化问题已经被妥善的处理

而不用考虑持久性相关的

细节的每一个操作

在顺序图的建模过程中

我们需要优先考虑

使用的是参数的名字

而不是参数的类型

比如 我们将消息格式定义为

addDeposit amount target

要比addDeposit Currency

Account

传递更为丰富的信息

因为有前者的定义

我们知道要存款

那么我们需要知道

存款的数额和目标帐户

而后者我们知道addDeposit

它带有一个现金类

和一个帐户类的 这样的参数

它并不能传递足够的

关于领域的 业务的信息

关于参数的类型

我们最好是帮他放到UML的

类图中定义

这个建模风格

给出的只是一个建议

而不是一个严格的规定

也就是说 当我们需要表示

这里要传递的是某种类型的

对象的时候

指明参数的类型

作为占位符也是可以的

在顺序图建模的时候

我们不要对明显的那些

返回值做建模

添加返回消息

比如在这个图中

创建安全登录对象

SecurityLogon

这个行为会导致生成一个

新的顾客对象

这个返回值是不明显的

而且 我们需要返回

新建的顾客 他的ID号

因此 我们需要对它进行建模

给出了一个返回消息

返回theCustomer的ID

而向订单对象发送请求

计算总数

那么它的返回值

就是一个显而易见的返回消息

我们就无需再对它进行建模了

我们应该时刻记住的是

返回消息returnMessage

它实际上是

同步消息的一个部分

异步消息的返回值

是另一个异步消息

希望大家能够注意

在顺序图中由于它表达的是

系统的动态的交互行为

因此 往往会涉及到

时间约束的表示

在这里时间约束

我们是通过定义约束表达式

并把它放在对应的消息之间

来表达

比如在这个图中

我们想表示的是

消息A和消息B二者之间

发生的时间间隔不能超过2秒

大家可以思考一下

在这个图中

为什么没有激活期的表示

对 因为激活期在这里

并不能帮助我们表示

A和B两个消息之间

它的约束条件是什么

激活期它表达的是对象

它拥有控制线索的时间

但并不能严格的区分

两条消息之间的绝对时间约束

控制焦点的建模是一个可选项

也就是说 我们可以不画出

对象的控制焦点和激活期

但是 通过画出控制焦点

我们可以更明确的

说明一个消息的

开始和结束位置

比如在图中

对象1调用了对象2的操作1

然后对象2在执行操作1期间

又返过来调用了对象1的操作2

这个方法

通过增加控制焦点的嵌套机制

我们就可以更精确的说明

消息的开始和结束位置

仿佛是一个消息调用的压占机制

激活期表示的

就是对象在执行动作的期间

时间段

它和控制焦点实际上是

同样的一个概念

只是说法不同 叫法不同

我们也提到了在顺序图中

递归的消息调用

可以采用嵌套的

控制焦点来表示

这里就是一个单个对象

对自身操作的递归调用

比如首先由对象C1

调用了C2的Oper这个方法

然后 Oper2在执行Oper的过程中

又调用了自己的Opre方法

这样我们就可以采用

嵌套的控制焦点

这样的方式来表达

对多个对象之间相互递归调用

也采用类似的方法

从这里我们可以看到

对象C1调用了C2的Oper1方法

C2又在执行Opre1的过程中

调用了C3的Opre2方法

C3在执行Opre2的过程中

又调用了C2的Opre1方法

从我的解释大家可以看出

其实对每一个消息调用来说

它的拥有者都是消息的接收方

也就是说C2要对外提供

Oper1服务

C3对外提供Oper2服务

C2在提供Oper2的调用的过程中

又被返过来引用了

自身的Oper1服务

通过顺序图建模

我们可以帮助分析人员

对照检查每个用例中

所描述的用户需求

是否已经落实到一些对象

去实现

它能够提醒分析人员

去补充遗漏的对象类或者操作

帮助分析人员

发现哪些对象是主动对象

哪些对象是被动对象

通过一个特定对象的

群体的动态行为的建模

我们能够更好地理解

对象之间的交互活动

软件工程课程列表:

第1章 初识软件工程

-1.1 软件无处不在

--讲课视频

-1.2 软件的本质特性

--讲授视频

-1.3 软件工程的产生与发展

--讲授视频

-1.4 软件工程的基本概念

--讲授视频

-1.5 软件质量实现

--讲授视频

-1.6 业界人士谈软件工程

--海芯科技创始人施侃乐访谈

-测验题--作业

-讨论题

--讨论题

-作业题

--第一张 作业题

第2章 编写高质量代码

-2.1 编程过程与规范

--讲课视频

-2.2 良好的编程实践

--讲课视频

-2.3 Python集成开发环境

--讲课视频

-2.4 代码静态检查

--讲课视频

-2.5 代码性能分析

--讲课视频

-2.6 结对编程实践

--讲课视频

-2.7 刘贺谈软件工程

--讲课视频

--讨论

-测验题--作业

-作业题

--第二章 作业题

第3章 单元测试

-3.1 单元测试概述

--讲课视频

-3.2 黑盒测试方法

--黑盒测试方法

-3.3 白盒测试方法

--基本概念

--代码覆盖标准

--基本路径测试

-3.4 单元测试工具

--单元测试工具

--html

-测验题--作业

-作业题

--第三章 作业题

--作业题附件

第4章 软件开发过程

-4.1 软件过程

--讲课视频

-4.2 软件过程模型

--讲课视频

-4.3 敏捷开发过程

--讲课视频

-4.4 微软公司开发过程

--邹欣经理自我介绍

--微软开发过程之一

--微软开发过程之二

-测验题--作业

第5章 团队开发管理

-5.1 团队组织与管理

--讲课视频

-5.2 项目沟通管理

--讲课视频

-5.3 软件项目计划

--讲课视频

-5.4 软件项目估算

--讲课视频

-测验题--作业

-讨论题

--讨论

第6章 敏捷开发与配置管理

-6.1 敏捷开发之Scrum

-- 敏捷开发之Scrum

--html

-6.2 用户故事与估算

--讲课视频

-6.3 团队协作工具Tower

--Tower工具介绍(1)

--Tower工具介绍(2)

-6.4 配置管理

--讲课视频

-6.5 配置管理工具Git

--讲课视频

-测验题--作业

-作业题--作业

第7章 需求获取

-7.1 需求工程师

--讲课视频

-7.2 需求定义

--讲课视频

-7.3 需求的类型

--讲课视频

--讲课视频(2)

-7.4 需求工程过程

--讲课视频

-7.5 需求的主要来源

--讲课视频

-7.6 需求获取技术

--讲课视频

--讲课视频二

--讲课视频三

-7.7 撰写需求文档

--讲课视频

-测验题--作业

-讨论题

--讨论

第8章 用例建模

-8.1 用例建模概念

--讲课视频

-8.2 用例建模过程

--讲课视频

-8.3 用例建模精讲

--讲课视频

-8.4 建模工具介绍

--讲课视频

-8.5 微信抢票应用案例

--讲课视频

-测验题--作业

-讨论题

--讨论

第9章 面向对象分析与设计

-9.1 面向对象分析

--讲课视频

-9.2 CRC卡片分拣法

--讲课视频-1

--讲课视频-2

-9.3 面向对象设计

--讲课视频-1

--讲课视频-2

-9.4 类图建模

--讲课视频-1

--讲课视频-2

-第9章 面向对象分析与设计--测验题

-讨论题

--讨论

第10章 行为建模

-10.1 顺序图概念

--讲课视频

-10.2 顺序图建模

--讲课视频

-10.3 顺序图风格

--讲义视频

-10.4 状态建模

--讲课视频

-10.5 状态图

--讲课视频

-10.6 状态图精讲

--讲义视频

-测验题--作业

-讨论题

--讨论

第11章 软件系统设计

-11.1 软件体系结构概念

--讲授视频

-11.2 软件设计原则

--讲授视频

-11.3 软件体系结构风格(一)

--讲授视频

-11.4 软件体系结构风格(二)

--讲授视频

-11.5 软件体系结构风格(三)

--讲授视频

-11.6 软件设计过程

--讲授视频

-11.7 Web系统架构设计

--讲授视频

-11.8 数据库选择策略

--讲授视频

-测验题--作业

-作业题

--html

--html

--html

-作业题--作业

第12章 软件交互设计

-12.1 交互设计概述

--讲授视频

-12.2 交互设计目标

--讲授视频

-12.3 GUI设计原则

--讲课视频

-12.4 KLM效率模型

--Video

-12.5 Fitts定律

--讲授视频

-12.6 交互设计过程

--讲授视频

-测验题--作业

第13章 软件系统测试

-13.1 软件测试概念

--讲课视频

-13.2 软件测试类型

--讲课视频

-13.3 软件功能测试

--讲课视频

-13.4 软件性能测试

--讲课视频

-测验题--作业

第14章 软件交付与维护

-14.1 软件部署与交付

--讲课视频

-14.2 软件演化与维护

--讲课视频

-测验题--作业

第15章 期末考试与总结

-第一部分:基础知识

-第二部分:编程与测试(选做)

--编程与测试(选做)

讲义视频笔记与讨论

也许你还感兴趣的课程:

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