当前课程知识点:软件理论与工程 >  第2章 需求分析 >  2.4 过程建模 >  2.4 过程建模

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

2.4 过程建模在线视频

下一节:2.5 面向对象建模

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

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 软件的本质

--1.1 软件的本质

-1.2 软件工程

--1.2 软件工程

-1.3 软件过程结构

--1.3 软件过程结构

-1.4 过程模型

--1.4 过程模型

-1.5 敏捷开发方法

--1.5 敏捷开发方法

-第1章 习题

--第1章 习题

第2章 需求分析

-2.1 需求工程过程

--2.1 需求工程过程

-2.2 需求获取

--2.2 需求获取

-2.3 需求分析

--2.3 需求分析

-2.4 过程建模

--2.4 过程建模

-2.5 面向对象建模

--2.5 面向对象建模

-第2章 习题

--第2章 习题

第3章 软件设计

-3.1 设计概述

--3.1 设计概述

-3.2 设计的概念

--3.2 设计的概念

-3.3 设计模型元素

--3.3 设计模型元素

-3.4 体系结构概述

--3.4 体系结构概述

-3.5 体系结构风格

--3.5 体系结构风格

-3.6 构件级设计

--3.6 构件级设计

-3.7 UI设计

--3.7 UI设计

-3.8 基于模式的设计

--3.8 基于模式的设计

-第3章 习题

--第3章 习题

第4章 UML方法

-4.1 UML概述

--4.1 UML概述

-4.2 UML 及UML中的事物

--4.2 UML 及UML中的事物

-4.3 UML关系和图

--4.3 UML关系和图

-4.4 UML 图细节(上)

--4.4 UML 图细节(上)

-4.4 UML 图细节(下)

--4.4 UML 图细节(下)

-第4章 习题

--第4章 习题

第5章 软件测试

-5.1 软件测试策略

--5.1 软件测试策略(上)

--5.1 软件测试策略(下)

-5.2 测试传统的应用系统

--5.2 测试传统的应用系统

-5.3 测试面向对象的应用系统

--5.3 测试面向对象的应用系统

-5.4 测试web应用系统

--5.4 测试web应用系统

-5.5 测试移动应用系统

--5.5 测试移动应用系统

-第5章 习题

--第5章 习题

第6章 项目管理

-6.1 软件项目估算

--6.1 软件项目估算

-6.2 软件过程管理

--6.2 软件过程管理

-6.3 软件配置管理

--6.3 软件配置管理

-6.4 项目版本控制及调试

--6.4 项目版本控制及调试

-第6章 习题

--第6章 习题

2.4 过程建模笔记与讨论

也许你还感兴趣的课程:

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