当前课程知识点:软件工程 > 第10章 行为建模 > 10.1 顺序图概念 > 讲课视频
各位同学好
模型驱动的开发
对提高软件生产过程的
自动化程度有着重要的意义
在下面的这周里
我们将学习用UML模型
来描述软件系统的行为
在前面的学习过程中
我们学习了用类图
对软件的结构进行建模
除了类图之外
在UML的图系中
组建图 对象图 组成结构图
部署图 包图
以及新提出的轮廓图
都是对结构进行建模的图模型
本周我们将学习的
是对软件系统的行为
进行建模的一些图
它主要包括
描述交互行为的顺序图
通信图以及描述对象状态变迁的
状态基图
和描述过程的活动图
这些图主要用于
定义对象的操作 生命周期
彼此之间的消息交互
以及对象在自身状态
切换的时候发出的行为
及切换前后的状态变化
它主要是描述
对象在它的生命周期中的
动态的行为
交互是指对象为实现某个目标
而在彼此之间传递消息的行为
交互行为建模
目标就是为了描述
对象之间如何进行写作
在UML中定义了多种交互图
其中应用最广的就是顺序图
有时我们也将其称为
时序图 序列图
顺序图作为交互图的一种
是对系统的一个
执行过程中的交互活动场景
进行建模的方法
是在类图之外
最常用的一种
UML图形化方法之一
顺序图按时间的次序
表示对象之间的消息
主要 它能够指出
有哪些对象参与了交互
以及它们之间
消息传递的序列
顺序图的建模元素
主要包括对象 生命线
控制焦点 消息
图中给出的是一个学生
在线选课的过程
这个学生名字叫马小跳
他准备选择线性代数这门课
在这个过程中
他首先要在选课登记表单中
填写个人信息 然后提交
选课登记表对象
作为一个界面类
会将这个申请转给
选课管理员对象
要求他将马小跳
加入到线性代数的选课名单当中
选课管理员又会将这个消息
转发线性代数这个实体对象
告诉他 要在名单中添加马小跳
线性代数这个对象
又会将这个请求
转发给线性代数A段这个对象
问你的这个段里还有位置吗
如果有空位的话请添加马小跳
这里无疑它的回答是有位置
我们就成功的将马小跳添加到
线性代数A段的选课名单当中
通过这个过程我们可以看到
我们可以用顺序图
来对之前学过的
用力图中间的
每个交互序列进行建模
我们就不用再继续撰写
文字形式的描述了
通过前面的例子
我们注意到顺序图建模元素中
最重要的就是对象和它的生命线
在顺序图中我们刻划
对象是以何种角色
参与到交互场景中来
无论它是人 物
还是其它的系统以及子系统
对象的命名有三种方式
我们在图中可以看到
方框中标明的
就是对象的不同的类别
第一种表示的是
完整命名的方法
它的命名包括
对象名 冒号和类名
第二种是所谓的匿名对象的
表示方法
这个时候我们是在
冒号后面写上类名
而不在冒号前写出对象名
表示
是任意一个这一类的对象
第三种表示的是未知类的对象
这个时候我们只显示对象名
而不现实类名
这几种方式
都是合乎语法规定的
对象的表示方法
对象的生命线
则是在这些方框的下面
用一个虚线来表示
在画出对象的生命线以后
如果我们需要对对象
它的操作时间 片断
进行区分的话
我们也可以定义控制焦点
也就是激活期
它表明的是对象拥有控制线索
处在活动状态
UML顺序图中
另外一个核心的建模元素
就是消息的表达
消息用于描述对象间的
交互操作和直传递的过程
消息的类型
主要有同步消息
有时候也把同步消息叫做
过程调用消息
异步消息 返回消息
自关联的消息
超时等待和阻塞等
其中 最常用的
就是同步和异步消息
其中 同步消息
有的时候我们需要给它指回
返回消息
返回消息用虚线箭头表明
消息通过指向对象的
水平箭头表示
在上面有时候我们要写出
消息的名称 参数
箭头的不同
用于区分上面介绍到的
不同的消息类型
在消息的定义过程中
我们要注意
随着问题的理解的深入
逐步添加消息的细节
而没必要在一开始
就把消息的所有细节定义出来
这里我们给出了早期的
几种消息表示的形式的例子
其中简单的消息
一般就是包括消息的名称 标号
和它的参数
嵌套消息
可以是带返回值的消息
条件消息则是在消息的前边
用方括号将该消息发出的
必要条件标注出来
循环消息以及同步消息等
则是用表达式
来表明这个消息执行的
控制逻辑
顺序图的基本控制结构
在出现框之前
我们都是采用添加
条件表达式的方式来进行
包括循环 有条件的执行
返回消息以及创建对象
这里给出的是顺序图中的
基本的建模结构
在顺序图建模中的常见问题
主要有消息的循环发送
我们需要在消息的名字之前
添加循环条件或者添加循环框
带有循环控制条件的循环框
这是两种对循环消息的建模方法
在顺序图中带条件的消息的发送
可以通过以下几种手段完成
一是在消息的名字之前
加条件表达式
条件子句的方式
或者采用
附加文字说明的方式
也可以添加条件控制框
或者将顺序图分成多个
顺序图的子图
并建立带条件的关联关系
定义入口条件
-1.1 软件无处不在
--讲课视频
-1.2 软件的本质特性
--讲授视频
-1.3 软件工程的产生与发展
--讲授视频
-1.4 软件工程的基本概念
--讲授视频
-1.5 软件质量实现
--讲授视频
-1.6 业界人士谈软件工程
-测验题--作业
-讨论题
--讨论题
-作业题
--第一张 作业题
-2.1 编程过程与规范
--讲课视频
-2.2 良好的编程实践
--讲课视频
-2.3 Python集成开发环境
--讲课视频
-2.4 代码静态检查
--讲课视频
-2.5 代码性能分析
--讲课视频
-2.6 结对编程实践
--讲课视频
-2.7 刘贺谈软件工程
--讲课视频
--讨论
-测验题--作业
-作业题
--第二章 作业题
-3.1 单元测试概述
--讲课视频
-3.2 黑盒测试方法
--黑盒测试方法
-3.3 白盒测试方法
--基本概念
--代码覆盖标准
--基本路径测试
-3.4 单元测试工具
--单元测试工具
--html
-测验题--作业
-作业题
--第三章 作业题
--作业题附件
-4.1 软件过程
--讲课视频
-4.2 软件过程模型
--讲课视频
-4.3 敏捷开发过程
--讲课视频
-4.4 微软公司开发过程
--邹欣经理自我介绍
--微软开发过程之一
--微软开发过程之二
-测验题--作业
-5.1 团队组织与管理
--讲课视频
-5.2 项目沟通管理
--讲课视频
-5.3 软件项目计划
--讲课视频
-5.4 软件项目估算
--讲课视频
-测验题--作业
-讨论题
--讨论
-6.1 敏捷开发之Scrum
-- 敏捷开发之Scrum
--html
-6.2 用户故事与估算
--讲课视频
-6.3 团队协作工具Tower
-6.4 配置管理
--讲课视频
-6.5 配置管理工具Git
--讲课视频
-测验题--作业
-作业题--作业
-7.1 需求工程师
--讲课视频
-7.2 需求定义
--讲课视频
-7.3 需求的类型
--讲课视频
--讲课视频(2)
-7.4 需求工程过程
--讲课视频
-7.5 需求的主要来源
--讲课视频
-7.6 需求获取技术
--讲课视频
--讲课视频二
--讲课视频三
-7.7 撰写需求文档
--讲课视频
-测验题--作业
-讨论题
--讨论
-8.1 用例建模概念
--讲课视频
-8.2 用例建模过程
--讲课视频
-8.3 用例建模精讲
--讲课视频
-8.4 建模工具介绍
--讲课视频
-8.5 微信抢票应用案例
--讲课视频
-测验题--作业
-讨论题
--讨论
-9.1 面向对象分析
--讲课视频
-9.2 CRC卡片分拣法
--讲课视频-1
--讲课视频-2
-9.3 面向对象设计
--讲课视频-1
--讲课视频-2
-9.4 类图建模
--讲课视频-1
--讲课视频-2
-第9章 面向对象分析与设计--测验题
-讨论题
--讨论
-10.1 顺序图概念
--讲课视频
-10.2 顺序图建模
--讲课视频
-10.3 顺序图风格
--讲义视频
-10.4 状态建模
--讲课视频
-10.5 状态图
--讲课视频
-10.6 状态图精讲
--讲义视频
-测验题--作业
-讨论题
--讨论
-11.1 软件体系结构概念
--讲授视频
-11.2 软件设计原则
--讲授视频
-11.3 软件体系结构风格(一)
--讲授视频
-11.4 软件体系结构风格(二)
--讲授视频
-11.5 软件体系结构风格(三)
--讲授视频
-11.6 软件设计过程
--讲授视频
-11.7 Web系统架构设计
--讲授视频
-11.8 数据库选择策略
--讲授视频
-测验题--作业
-作业题
--html
--html
--html
-作业题--作业
-12.1 交互设计概述
--讲授视频
-12.2 交互设计目标
--讲授视频
-12.3 GUI设计原则
--讲课视频
-12.4 KLM效率模型
--Video
-12.5 Fitts定律
--讲授视频
-12.6 交互设计过程
--讲授视频
-测验题--作业
-13.1 软件测试概念
--讲课视频
-13.2 软件测试类型
--讲课视频
-13.3 软件功能测试
--讲课视频
-13.4 软件性能测试
--讲课视频
-测验题--作业
-14.1 软件部署与交付
--讲课视频
-14.2 软件演化与维护
--讲课视频
-测验题--作业
-第一部分:基础知识
-第二部分:编程与测试(选做)