那么首先我们来看一下,这个结构化分析中的基本的术语,
就是这五个,那也就是说,这个层次的这个术语 首先我们大家可以看到的是数据流,一声数据流,
对吧?就能感觉到,正在流动的数据,所以它就是指的是数据的流动,
那么加工是对数据进行变换的单元,也就是说
对于输入的数据我要进行相应的处理或者叫变换,那么形成相应的输出数据,
所以这个加工是体现了这个系统的什么? 功能,所以它是对于系统功能的这样的一个抽象,
那么数据存储是指数据的静态 结构,因为数据存储我们一般情况下大家可以能理解对吧?
一般表现为一些存储文件,对吧?所以这里面我们就要考虑一些数据库的这样一个 存储的机制,我们应该采用什么样的文件类型来存储这样的数据,
那么数据源和数据潭这两个概念很重要, 它是在系统之外的实体,一定记住了。
而数据源和数据潭是正是因为希望能帮助我们划分 这个问题的这样的一个什么?范畴、
范围,所以来给出来了, 它是系统之外的实体,它可以表现为人、
这个物或者是其它的软件系统, 那么数据源指的是数据流的起点,对吧?数据从这个数据源流出来,
那么数据潭是指数据流的归属地,也就是数据流向的地方, 所以这两个点是的这个、
这两个术语的提出是为了 给出系统边界的这样的最重要的两个术语,
所以这五个术语呢大家我们可以来看一下, 数据流、 数据存储它实际上支持的是数据的抽象,
大千世界的数据很多对吧?张三、 李四,但在这个里面大家可以看到数据是各
纷繁复杂的,那在这个过程中我们要对它进行抽象,关注那些我们想处理的它的内涵,
所以这个过程相当于我们就采用了这样一个方式对吧?来支持的是
数据的这样的一个抽象,加工呢是支持的是 过程和功能的这样的一个抽象,用于表达系统的内涵,也就是系统到底它
要提供一些哪些的功能,那么数据源和数据潭是支持系统边界的抽象,
在这个里面我们能够划分系统的边界, 用于知道我们说这个系统与什么样的外系统相当于打交道,
所以由这五个术语构成了一个完备的术语空间,我们可以表达
结构化这个分析中的这个需求的方方面面, 那么
需求分析的首要的任务就是要建立系统的功能模型或者是需求模型,所以我们
前面已经提到了说术语空间,结构化的分析方法提供了五个术语对吧?
那么下面我们就来看一下模型表达工具有哪些。
第一个最重要的就是数据流图,结构化的分析里面我们就是 很、
很重要的就是首先要形成数据流图,它是表达系统功能模型的这样的一个最核心的工具,
那么它的定义呢我们大家来看一下,它是一种描述数据变换的图形工具,它包含的元素 可以是数据流、
数据存储、 加工、 数据源和数据潭,所以大家看,就是以这五个术语对吧?为基础
来进一步地定义这个系统的功能模型,那么这个是一个
机票、 飞机票的预定系统这样一个数据流图,我们大家可以看到
最重要的我们首先看到了什么?这个系统之外的两个实体,旅行社对吧?
虽然都是旅行社,但是也意味着这一个是数据流出的地方,所以它是什么?数据源。
同时它也是最终数据流入的地方,所以它也是数据潭,但是它在系统之外与系统打交道的这样- 的一个实体,
那么在这里面很重要的有三个加工,对吧?体现了这系统的整个三个功能, 一个是预定机票、
一个是记账、 还有一个是准备机票, 那么在这个加工中作为相应的的输入和输出的这样的一些
输入流、 数据流有哪些呢?有订票单、 对吧?那么有航班、 有费用。
那实际上这里是有机票信息在里面的,由于这里的航班的目录整个
已经向它暗含了整个这个数据相当于从这里面流出的数据流的类型,所以
这个数据流可以不去写它, 那在这里面大家可以看到还有什么?账单、
机票, 所以有这样的一个、 一个图,大家说是不是很清晰就能画出来说
这个客户包括勘察人员很容易就理解了说:啊,这个系统 使用者是谁?旅行社对吧?
那么在这里面这个系统提供的功能是什么?有这三个功能, 同时要处理的相应的数据有哪些?有这些,
那么这些数据我肯定要存储到相应的一些文件中,对吧?就是说是, 那么这里面涉及到的就是数据存储、
航班目录和记账文件, 所以非常清晰就把这个系统的功能表达清晰了,
那我们上面已经知道了说这样的一个数据流图,但是大家说如果我们再回到那个说,
知道了这相应的这个数据源、 数据潭有什么,
加工有什么,但是你对于加工内部的处理逻辑你能不能清晰?通过那一张图 表达出来了吗?没有。
那么包括这个 数据流和数据存储它内部的一些细节你能感受到吗?
没有,对吧?我们只是知道说有一个航班目录,对吧?那里面相当于有一个相当于 这个这个订票的这样的一个信息等等、
什么记账的信息 所以这些内部到底是它暗含着什么样的
这个内涵,所以我们需要对它进一步地定义,所以就 出现了数据字典,数据字典是定义数据流和数据存储的
这样的工具,那么它实际上说除了定义数据流和数据存储的结构
之外,还需要来给出构成数据流和数据存储的各种类型的数据项的基本的数据类型,
那么在这里面我们就会引入一些逻辑操作符用于定义数据结构,
比如说我们这里面是等号,在这里面表明等价于,下面我们来看一下
这个数据字典是怎么来应用的, 那也就是说在数据流里面大家可以看到,比如说我是举了一个例子,销售的商品,对吧?
那么我们大家都去过超市,所以大家知道超、 超市里面
实际上这个所销售的商品都含了商品名对吧?商品的编号, 那么以及单价啊、
数量啊、 销售的时间啊,这样的一些信息,因为你打到那个条,你拿到那个条你也能看到,
那么在这里面就是用了大家看,整个这样的这个
几个数据项相当于语的方式来表达出来了销售的商品的信息,
那么现金额等于余额等于日销售额等于非负实数,这里面实际上更表达了它的一个什么?
基本的数据结构,查询的要求大家看,我分成了两个,一个是商品的
编号或者是按日期,所以就是说,我要么按商品的编号去查询,要么按照日期去查询, 所以这里面进一步地又可以说,查询要求
1 等于商品的编号,查询要求 2 等于日期, 所以也看到了这个查询要求我可以进一步地什么?看到一个顶层的
这个数据流,但实际上它暗含了什么?两个这个数据流。
那么销售的情况,比如说商品名、 商品编号、
金额等,这也是一个 这个语的关系相当于叠加起来的这样的一个
数据的描述,那么我们再看一下数据存储,我们这里面有比如说销售的文件,销售文件里面
是记录了若干个重复的这个相当于重复类型的销售的 商品对吧?因为每个商品销售的商品都是商品名、
商品编号、 单价,所以 这个相当于可以以一种相当规范的这样的一个方式去形成销售的这个文件,
那么数据项这里面举了一个简单的例子,比如说金额等于非负实数,这就是一个最基本的
数据结构的这样的一个描述,数据类型的描述,我们看一下,比如数据流数据存储
的这个底层的这样的一个组成单位的这样的一个描述就成为数据项,
这就是数据字典的三个方面,从三个方面来描述了这样的一些数据抽象的
这样的一些信息,因为在数据流图中无法表达出这些信息,所以需要借、 借助数据字典进一步地去描述它,
那么对于加工,因为我讲的时候说,加工对吧?预定机票,
你说预定机票怎么去处理呢?你并不知道,但你知道它一定是起了一个预定机票的这样一- 个功能,
所以为了它对它内部的这个功能的处理逻辑进一步地了解
和说明,所以就我们可以选择相应的一些工具,比如说评定表和判定树,
就是可以用于定义加工小说明,那么它描述了加工做什么? 包括加工逻辑,那也包括了一些与加工有关
的一些信息,比如说执行的条件、 这个加工的执行的优先级、 执行的频率、
出错的处理等,那么最重要的 大家说如果一个复杂的数据流图加工多不多?
会非常多,对吧?你能不能从上层相当于到下层这个所有的加工都给它描述
清楚,这个一般比较难,所以一般情况下,人们采用一种分而治之的方式,也就是说
我描述最底层的叶子加工,我把它处理逻辑描述清楚, 那样在往上层叠加的时候就很容易理解上层的处理逻辑对吧?
所以这个加工小说明是描述的最底层的叶子 加工,也就是说不能够再分割的这样的一个功能处理逻辑的这样一个说明,
那我们可以采用几种方式呢?比如说,可以用结构化的
自然语言去描述加工的小说明,比如大家来看一下, 比如订票量大于
20 的话,那么订票的折扣率 为 10%,否则的话就是说什么?订票的折扣为 5%。
所以这个就是一个加工处理逻辑的这样的一个说明。
就是说订票的这样的一个加工处理逻辑的说明, 所以这一种呢适用于比较简单的输入数据
和输出数据之间的这样的一个逻辑关系的这样的一个加工的描述, 那么判定表它适用于加工的输入数据和输出数据
之间的逻辑关系比较复杂这种加工的描述,比如说这里面大家可以看一下。
那么这个是一个条件的类型,比如说,它有考试的总分、 单科
的成绩,那这些条件的组合大家可以看呢比如说考试的总分大于等于 620,
那么其中单科相当于有满分的话,那么这个呢 条件的组合是大于等于
620,其中有、 有那个不及格的单科,那么 小于
620,但是这里有满分,所以这个里面这是条件组合,那这里面是相应的操作, 也就是说,比如说发升级通知书、
发留级通知书、 发重修通知书,那这里面大家可以看到相应的 这里面表明了说,如果我考试的总分大于等于
620,同时 这个单科的成绩有满分的话,那么我发升级通知书,
这就是整个的操作的执行,所以用这样的一个图相当于就把一个复杂的 这个输入输出的这样的一个处理逻辑表达地很清楚,
那么判定树呢 它也是用于比较复杂的输入数据和输出数据这种逻辑关系,
实际上判定树和判定表两者之间可以相互之间进行转换。
那我们举了一个例子,比如说,计算这个折扣量对吧?那么也就是说, 在这种
7至9 月到 12 月这样的啊就说是,
那么我们订票量 大于 20 的话,那么折扣是
15%,那么 订票量相当于小于等于 20 张的话,相当于那折扣率是
5%, 大家看,那么这个相当于是作为一个淡季的话对吧?
那么相当于它的订票量大于 20,折扣率就达到了 30%,
那这个里面小于等于 20 呢,折扣率 20%,所以呢,我可以先分
为淡季和旺季,那么进而呢相当于去处理相应的这样的一个条件。
所以通过这样的一个描述,大家看就是整个的这个加工就会比如说
计算折扣量这样一个加工就描述的很清楚它内部的处理逻辑。