当前课程知识点:软件理论与工程 > 第2章 需求分析 > 2.4 过程建模 > 2.4 过程建模
大家好
我们今天继续开始软件理论与工程需求分析
这一章的第四小节 过程建模
我是今天的主讲老师高广宇
那我们前面呢
讲到了整个需求工程过程中的需求获取
需求分析
当然还有第一节的这个
需求工程过程
那我们今天呢
继续深入的去讲解一下
这个需求分析的过程建模
需求分析之后
中间的这个过程建模这部分内容
那么今天呢
主要从以下四个方面
包括过程建模 数据流图 微规格说明
和数据字典
这个比较重要的方面去做一个介绍
首先呢是这个过程建模
那什么叫过程建模呢
首先我们讲一下这个结构化的建模方式
其实这个呢 过程建模
从字面上也可以理解一下
我们是需要对整个需求工程或者
对过程去进行一个
建模也就是抽象化
用模型去表达一个复杂的事件
或者说呢复杂的处理过程
在这一页ppt里
我们能看到上面讲的是
我们人类啊
有的时候是怎么样去理解一个复杂世界
那我们在过程建模里面
的结构化的建模方式
是过程建模的一种非常有效的方式
它主要是呢 需要呢
对这个复杂事件 去进行一个抽象
所以呢 我们需要把一些简单的内容
我们要需用过程来描述
当然 过程呢
具体在结构化的建模里面
通常会对应到软件里面的一些
函数呀 程序 对吧
所以我们通过建模的一个过程
通过过程建模的一个方式
尤其是结构化建模的这个方法来说
我们得到这个模型里的一些过程
实际上在系统开发人员
我们在后期的设计和开发过程中
实际上就已经确定了我们的一些函数
或我们一些基本的一些程序结构
所以呢
基于我们在需求工程阶段形成的这些
需求规格说明我们就能非常容易非常快的
去实现它相应的一些程序设计过程
当然 在这个过程中呢
我们需要去对这个功能
进行各种各样的一些分解
那我们这个结构化的
这个过程建模方式
是通过过程建模和数据建模两个方面
来进行这个模型化的阐述的
而过程建模呢实际上是结构化建模的一个
非常核心的方法
它通常是指呢
对整个这个系统用过程去描述
它是基于这么一个前提假设
是说呢 系统是过程的一个集合
而过程呢 又可以被分解为
各种的一些子过程
包括前面我们在讲
需求获取和需求分析的时候也讲到
每个不同的过程会有不同的子过程
或者不同的一些子活动来过程
最终的子过程呢
又可以被映射为呢
计算的一个实体 函数
前面那个ppt我也讲到
就是说我们把它细化成一些过程和子过程
最后映射成函数 之后
对于系统开发和设计人来说是非常容易的
就直接能够去
实现它了
所以呢 所有的系统啊
都是由这个过程所构建的
它主要的一个思想来说呢
我们是希望用一些图形的方式
来建立和描述良好的过程模型
上一节我也讲到 就是说模型是什么呀
模型就是用各种图啊表啊
形式化的一些文档呀
等等来描述的一些系统内容
所以呢这里面是关于过程建模的一个简单介绍
接下来我们讲一下这个第二个部分
数据流图DFD
那对于这个
DFD呢
它包括若干的一些基本元素
我们一一介绍一下
第一个呢
是外部实体 外部实体是什么呀
是指处于待构建系统之外的人 组织 设备
或者说呢其他的一些软件系统
也就是说 我们要开发的这个系统
它外围的一些这个内容
所以呢 所有的外部实体呢联合起来
就构成了软件系统的一个
外部上下文的一个环境
那如ppt所示
这个是用两种不同的
这个图形化表示方法来表示DFD图的时候呢
外部实体 它的一个图示
比如用这个
DMY(DeMarco-Yourdon)方式来表达的时候呢
它是一个直接的一个矩形框
来代表一个外部实体
那这是关于这个外部实体
那除了外部实体之外呢
一个比较重要的就是DFD过程建模嘛
所以呢 过程
过程是指施加于数据的动作或者行为
所以呢 它是某一种操作 是某一种动态的
这个行为或者动作
包括呢 转化 存储等等
它可能是由软件系统控制的
也可能呢 是人工执行的
而且它重点关注的是数据发生变化的效果
它不关心到底是前面提到的
是软件系统还是人来执行的
它不太关心这个 所以说呢
这个内容呢
又要足够的细节和具体
能够对其进行的这个操作过程
操作处理的这个过程
进行详细的描述
当然了
足够细节并且能够直接进行编码处理的过程
我们也被称为呢 原始过程
或者叫基本过程
过程的图示呢
如这个ppt下方所示
两种不同的描述方式
分别一个是用这个圆形
一个是用一个
圆角的矩形中间加一个杠
上面是在ID
下面的一个Lable是来描述这个过程
的一个名字
那还有第三类呢 就是数据流
数据流呢是指数据的一个流动形式
它指的就是说这个数据 它到底是什么
然后呢 他通常就是一个箭头
中间呢用一个Lable
用一个名字来描述这个数据流的名字
当然 数据流的话呢
它有多种的这个分割和组合的形式
比如如这些ppt所示
第一个的话呢 是说它分流
这个数据都分成三路分支了
第二个呢 是这个叫分解了
可以说是这个数据流裂变成三种不同
的这个子数就流了
第三个呢是同一个数据流又汇聚了
那最后一个呢
是汇合了
就好几种不同的数据流汇合到一起
形成的这个x
数据字典呢
和这个实体关系图啊
通常是用来描述DFD数据流的一个详细内容
就对这个数据流进行详细描述的时候
通常使用这个数据字典和这个ERD模型
那第四类呢 是数据存储
因为数据流了之后 它最后得有个终点吧
终点 其实对应到就是数据的一个存储
它通常也是用数据字典和
这个ERD来进行描述的
那它的图示呢 如这些ppt所示
比如左边那个两个横杠中间写
这个数据存储一个名字
这是它的几种不同的一个基本元素
这些ppt呢 大家能看到它其实是
整个的一个DFD的一个基本元素的
一个事例
通过这个
DM的这个方式来描述的一个图示
这里面我们的这个圆形
代表的是一个什么过程
矩形代表了什么 外部实体
两个横杠中间加一个Lable这个代表的
是我们的一个存储
当然
这里面所有的箭头代表就是这个数据流了
所以呢
这就构成了我们一个DFD的一个图
当然在这个里面的话呢
DFD也有一些规则是需要去遵循的
比如说呢过程是对数据的处理 所以呢
必须有输入 也必须有输出
比如这个图里面 像这一类
这三个
他有的只有输入 有的没有输出
那这种就是有问题的
我们必须要像右边这三个一样
必须要有输入有输出 而且呢 还有一条
输入的数据集和输出的数据集通常
是应该存在差异的
没有差异 为什么不行
大家想想
没有差异 是因为呢
这个操作其实是没有意义的
就是你输入一个东西
经过一个操作之后输出还是他
那这个完全是没有意义的
没必要嘛对吧
所以说呢 通常希望它是有一定差异的
那数据流 也是必须和过程要产生关联的
这个数据流都从哪来的呀
是通过一个过程处理之后才会产生数据流的
所以呢 这个数据流啊
通常来说呢
它是需要来自于一个过程的输出
所以呢 他要跟过程去产生关联
不能够直接从一个数据流莫名其妙的流到
形成另外一个数据流
这是不可能的
还有一个呢
DFD当中所有的对象
或者所有的基本元素
都应该有一个可以被标识的唯一的名字
通常的前面我们也提到
过程是某种操作吗
所以它通常使用动词
而外部实体 数据流和数据存储呢
它通常使用名词
这是关于这个DFD
那这个DFD呢
实际上呢 在整个过程化建模里面呢
它是有非常明确的一个层次化结构的
它依据所含过程的不同抽象程度呢
DFD 它具有这个各种不同的一个层次结构
比如说呢
这个最上层的叫什么
上下文图
往下呢
0层图
再往下一层图 二层图
当然根据我们的一个
这个软件或者一个系统的一个复杂程度啊
这个N可以是这个任意的一个
这个正整数
那这是关于这个
比如这里面的话呢
那我们这是一个图示
这是一个我们不断的从这个上下文图
去给它细化
详细的描述形成0层图
再往下去细化形成N层图的一个过程
大家能看到呢 整个从上一个
这个层次的一个图变成下一个层次的图
就是把中间的任何一个节点
或者一个环节去给它细化
然后呢 不断的往下
以金字塔结构去展开的一个过程
这是关于DFD的一个层次结构
那上下文图呢
通常是整个DFD里面最上层的一个
这个最抽象化的一个描述
它呢 把整个系统看作是一个过程
或者说是一个黑盒 一个整体
它有一个输入 有一个输出
外围呢 有一对上下文的一个关联对吧
那这个呢 通常是在
需求获取之后得到一些业务需求描述的时候
比较适合的就是说我们把整个
我们要开发的系统看作是一个过程
我们知道给它什么东西 它要
产生什么的一些功能 对吧
这个在前期当然是比较好实现
那我们随着整个需求分析的这个展开的话
我们可以再往下去
细化去得到它的这个
比如0层图 0层图呢
就至少把刚才整个这一个
整个系统看到一个过程要去展开说
它到底包括哪几个功能模块
功能模块这个关系是什么
然后再往下 对于每个功能
我依次再去展开
就能得到它的一个
N层图
当然在这个问题里面的
随着我不断的去展开的话呢
我还是定义这中间
到底它的一些这个数据流向
它的一些数据存储 数据字典
它的一些这个什么实体关系图是什么
还有包括这里 当然
我们甚至到这个最下层的时候
我们还去定义他一些微规格的一些说明
这是一个图示
是关于这个层化结构的一个例子
大家可以自己去看一下
前面讲的这个内容
这个层次结构的一个建立过程啊
通常呢 这个如这页ppt所示
大概包括四个过程
首先呢
建立上下文图
前面讲了就是说我们把整个这个系统看作
是一个过程
然后呢 把这个上下文图
这个一个过程
我们根据它要实现的功能
去定义和建立它的一个DFD的一个片段
每一个片段呢
大家可以理解为是
一个 完整的 统一的功能点
或者呢 功能的集合
然后呢 这个不同的一个DFD片段之间
通过一些这个交互啊
数据流入流向 数据处理这些操作呢
共同构成了我们整个这个系统
我们再把这个DFD片段再去细化
就能得到我们最后的这个N层图
当然这里面DFD的片段
它们之间构成的是
我们这里面刚才提到的0层图
这是关于这个层次化建立的一个过程
我们这个DFD虽然是从上往下不断的去
延伸和展开得到的
但是呢 难免这中间有可能会发生错误
所以呢
我们在得到N层的DFD图之后
我们通常去验证一下DFD
包括验证它的一些语法 结构 语义
比如说呢
这个验证DFD层次结构之间的一致性
完备性 或者说呢
我们在底层的一些数据关联
我们的上层应该是有
它对应那些映射关系 也是存在的
不能够在下层说
这个模块是把数据流向了另外一个模块
那在上层 那我也得是这样的 对吧
不能是反过来的
这些是它的一些一致性 对吧
结构语义上面
那在第三个呢 就是说这个微规格说明
从这个字面意思上大家都能理解
微规格说明从微这个字呢
看着就是它更细化的去描述
每一个不同的过程
每个不同的环节 每个不同的元素
它的一些 这个内容
比如说呢
我们这里面的一些 这个叫什么
结构化英语或者伪码
比如说 它是采用结构化程序语言的
这个几种控制结构
像顺序 条件决策和循环
使用类似于呢
这个结构化程序语言
关键字的这个词语来
表述叙述一个逻辑
在格式上呢
它和结构化程序语言
这个相同的缩进方式来
表达叙述的一个结构
那叫结构化英语或者伪码
如图这个所示 对吧
就是它们的一些这个关系
那这是一个
结构化英语的一种特殊的表达方式是什么
行为图
这个行为图呢
就类似于它采用结构化英语的一个方式
以行为为依托
用特定的图式来表示过程的一个逻辑结构
形成了这里面的一个行为图
这个也是能代表整个一个行为过程
它的一个图示对吧
还有包括像决策表
包括向前面提到的左边这一列是
条件和行动
右边那那样呢 是规则
这也是另外一个是微规格说明的一个
这个图表或者模型
还有像决策树
这个大家应该比较熟悉了 对吧
包括大家在学这个程序设计语言里面
也会经常说到决策树
它也是一种这个微规格的一种这个模型
前面我们提高在数据流图里面
我们数据的一个存储
的一个描述的重要的内容是什么
数据字典 那数据字典是什么呢
我们稍微的介绍一下
数据字典 它是一个存储库
它包含呢 整个软件使用和产生的一些
所有数据对象的一些描述
当然 也包括DFD当中
数据流和数据存储的一个定义
它有组织的列出这个
DFD中所涉及到所有的
数据元素并且定义呢
每个数据元素非常细的一些
属性包括名称啊表示范围啊
这个使用方法啊其他的一些融入信息等等
对它非常详细的进行了一个描述
比如这是我们的一个
这个形式化表述的一个数据字典
它数据结构的一个描述
它也是通过一些
这个比如中文的含义
对应到的一些这种
这个形式化表述的一些符号
要客观 精准 严格和明确
这是我们这个数据结构描述的一个事例
大家可以自己再去看一下
同样的数据字典的话呢
我们还要根据这个每个元素
它不同的这个属性和内容
去对它的这个元素组织啊
进行一个信息的一个描述
从它的名称啊
范围啊等等 这些句型精准的描述
比如 这是数据字典的
一个比较详细的一个事例
有它的名称是什么
它别名是什么
它描述是什么 它等等这些
只有这样才能在
包括我们前面在结构后描述里面
我们那个DFD地图里面
我们的数据流到底是一个什么东西
从这个数据字典里我们就能查到
这数据字典大家共用
所以呢也能确保一定的一致性
所以呢
那我们在整个这一章里面的话
我们这个讲了
整个这个结构分析的一些 这个方式
还包括DFD的一些这个内容
还有呢像其他的一些
这个微规格说明啊
数据字典等等
好 那我们今天这一节就讲到这里
好谢谢大家
-课程概述
-1.1 软件的本质
-1.2 软件工程
--1.2 软件工程
-1.3 软件过程结构
-1.4 过程模型
--1.4 过程模型
-1.5 敏捷开发方法
-第1章 习题
--第1章 习题
-2.1 需求工程过程
-2.2 需求获取
--2.2 需求获取
-2.3 需求分析
--2.3 需求分析
-2.4 过程建模
--2.4 过程建模
-2.5 面向对象建模
-第2章 习题
--第2章 习题
-3.1 设计概述
--3.1 设计概述
-3.2 设计的概念
-3.3 设计模型元素
-3.4 体系结构概述
-3.5 体系结构风格
-3.6 构件级设计
-3.7 UI设计
--3.7 UI设计
-3.8 基于模式的设计
-第3章 习题
--第3章 习题
-4.1 UML概述
-4.2 UML 及UML中的事物
-4.3 UML关系和图
-4.4 UML 图细节(上)
-4.4 UML 图细节(下)
-第4章 习题
--第4章 习题
-5.1 软件测试策略
-5.2 测试传统的应用系统
-5.3 测试面向对象的应用系统
-5.4 测试web应用系统
-5.5 测试移动应用系统
-第5章 习题
--第5章 习题
-6.1 软件项目估算
-6.2 软件过程管理
-6.3 软件配置管理
-6.4 项目版本控制及调试
-第6章 习题
--第6章 习题