6.4.1 数据流程分析

6.4.1 数据流程分析

电子商务系统完成的是数据处理和信息处理的工作, 其包含在大量的业务处理之中,但并非所有的业务处理都能用计算机来完成, 因此需要一个从现有业务中抽取出的能够由计算机完成的业务处理的过程, 这个抽取过程称为数据流程分析。数据流程分析把数据在组织内部流动的情况抽象地独立出来, 不考虑具体的组织机构、信息载体、处理过程、物质和材料等, 只从数据流动来考察实际的业务处理模式。

1.数据资料收集及汇总

(1) 数据资料收集

数据资料收集是数据流程调查过程中的一项重要任务, 其主要工作包括以下4点。

①按业务过程收集原系统全部输入单据(如入库单、收据、凭证)、输出报表和数据存储介质(如账本、清单) 的典型格式。

②弄清各个环节中的处理方法和计算方法。

③在上述各种单据、报表、账本的典型样品上或用附页注明制作单位、报送单位、发生频度、发生的高峰时间及发生量等。

④在上述各种单据、报表、账本的典型样品上注明各项数据的类型、长度、取值范围等。

(2) 数据汇总

数据汇总是一项较为繁杂的工作, 为使数据汇总能顺利进行, 通常将它分为如下4步。

①将系统调查中所收集到的数据资料, 按业务过程进行分类编码, 按处理过程的顺序排放在一起。

②按业务过程自顶向下地对数据项进行整理。

③将所有原始数据和最终输出数据分类整理出来。

④确定数据的字长和精度, 根据系统调查中用户对数据的满意程度以及今后预计该业务可能的发展规模统一确定数据的字长和精度。

2.数据流程图概述

将数据流程的调查结果用直观的方式描述出来, 就需要绘制数据流程图(Data Flow Diagram, DFD)。

数据流程图抛开业务流程的具体组织和人员关系, 从信息的传递和加工的角度, 以图形的方式描述系统的数据来源、信息的形成过程、数据存储和处理过程的逻辑关系。数据流程图将系统对各个业务的处理过程联系起来, 形成一个整体。

数据流程图的基本成分包括处理过程、数据流、数据存储和外部实体4种, 所用的符号有两种版本, 可以根据需要选择使用, 两种版本分别如图6-2 (a)、图6-2 (b) 所示。

图6-2 数据流程图的基本成分

(a) 版本一; (b) 版本二

(1) 处理过程

处理过程(Process) 是对数据进行变换操作, 即把流向它的数据进行一定的变换处理, 产生出新的数据。处理过程的名称应该适当反映该处理的含义, 使之容易理解。每个处理过程的编号应当说明该处理过程在层次分解中的位置。

在数据流程图中, 处理过程好像一个暗箱, 只显示过程的输入、输出和总的功能, 但隐藏了细节。处理过程必须有输入/输出数据流, 或者可以有若干个输入/输出数据流, 但不能只有输入数据流而没有输出数据流, 或者不能只有输出数据流而没有输入数据流。

数据流程图的标识通常用字母P 开头, 后面数字用小数点分隔, 分为几位就表示该处理位于流程图的第几层。顶层数据流程图命名为P0, 第一层为P1、P2、P3 …, 第二层为P1.1、P1.2…P2.1、P2.2…, 第三层为P1.1.1、P1.1.2…, P2.1.1、P2.1.2…, 其下层依次类推。

数据流程图的命名一般用一个动词加一个名词的动宾结构或者一个名词加动词结构表示, 所选动词能明确表达该处理的功能。如“计算库存量” “合同管理” 等。

(2) 数据流

数据流(Data Flow) 是一束按特定的方向从源点流到终点的数据, 它指明了数据及其流动方向。数据流可以由某一个外部实体产生, 也可以由处理过程或数据存储产生。要对每一条数据流进行简单的描述, 以使用户和系统设计人员能够理解其含义。

数据流的种类有很多, 图6-3所示的是数据流类型。在外部实体与数据处理之间、数据处理与数据存储之间、数据处理与数据处理之间都有不同的数据流。

图6-3 数据流类型

(a) 类型一; (b) 类型二; (c) 类型三; (d) 类型四

数据流不能从外部实体到外部实体, 不能从外部实体到数据存储或从数据存储到外部实体, 也不能从数据存储到数据存储, 中间必须经过数据处理。图6-4为错误的数据流。

图6-4 错误的数据流

(3) 数据存储

数据存储(Data Store) 不是指数据保存的物理存储介质, 而是指数据存储的逻辑描述。数据存储的命名要适当, 以便见名知意。为了引用方便, 除了名称外, 数据存储还可以加一个标识, 一般用字母D 和数字表示, 如D1, D2等。

从数据存储流入或流出数据流时, 数据流的方向特别重要。如果是读取数据, 则数据流的方向应从数据存储流出; 如果是写数据则相反; 如果又读又写, 则数据流可以是双向的。

(4) 外部实体

外部实体(External Entity) 是指在所研究系统外独立于系统而存在的, 但又和系统有联系的实体。它可以是某个人员、某个企业、某个信息系统或某种事物, 是系统的数据来源或数据的去向。确定外部实体实际就是明确系统与外部环境之间的界限, 从而确定系统的范围。

3.数据流程图的作用

数据流程图的作用有以下5个。

①系统分析员用这种工具自顶向下分析系统信息流程;

②可在图上画出计算机处理的部分;

③根据逻辑存储, 进一步做数据分析, 可向数据库设计过渡;

④根据数据流向, 确定出存取方式;

⑤对应一个处理过程, 可用相应的程序语言来表达处理方法, 向程序设计过渡。

4.数据流程图的绘制

(1) 数据流程分析原则

使用数据流程图进行数据流程分析一般遵循以下3个原则。

①明确系统边界。系统分析人员要根据调查材料, 首先识别哪些不受系统控制但又受系统影响的外部环境。只有划清系统和外部环境的边界, 才可以集中力量分析和确定本系统的功能。

②自顶向下逐层分解。按照结构化方法的思想, 采用分层的数据流程图, 把大问题或复杂的问题分解成若干个小问题, 分别解决。

③在局部上遵循由外向里的原则。先确定每一层数据流程图的边界和范围, 再考虑数据流程图的内部; 先画输入和输出, 再画处理的内部。

(2) 绘制数据流程图步骤

绘制数据流程图的步骤分为以下3步。

①先绘制出系统的外部实体。对于向系统提供数据(输入信息) 的外部实体, 应绘制在数据流程图的左边或上边, 对于从系统获取数据(输出信息) 的外部实体, 应绘制在数据流程图的右边或下面; 然后从左到右、从上到下绘制出外部实体产生的数据流和相应的数据处理过程, 如果需要保存的数据则画出对应的外部存储; 最后绘制出接收该系统或数据处理输出信息的外部实体。

②先绘制顶层的数据流程图, 后绘制分层的数据流程图。顶层数据流程图是系统的概括和综合, 可以不画数据存储。由于处于较高层次的数据流程图内容相对抽象, 需要进一步分解, 因此分层数据流程图是把上一层的数据流程图的各数据处理过程进行分解, 分解过程如图6-5所示。

③系统分析人员向用户、组织的管理者, 详细解释各流程图的数据传递及处理关系,经反复讨论、调整后得到全面反映业务流程的数据流程图。

图6-5 数据流程图的分解过程

(3) 注意事项

对数据处理过程进行分层时, 应注意以下两方面。

①下一层图应该包含上一层中的与该数据处理过程有关的全部数据流, 下一层图中的数据流不必出现在上一层。

②下一层图应包含上一层中的与该数据处理过程有关的全部数据存储, 下一层图中的数据存储不必出现在上一层。

(4) 规定

对于数据流和数据存储的规定如下。

①对于各个数据处理过程, 除画出有关外部实体或数据存储流入的数据流以及考虑其他的数据处理过程的流入的数据流外, 同时还要考虑该数据处理过程向有关外部实体输出或数据存储写入的数据流。

②为了避免过多的数据流的交叉, 同一外部实体、数据存储可以在同一张数据流程图中出现多次。

5.数据流程图的绘制实例

某图书销售系统的工作流程描述: 学生交购书单, 经审查将无效购书单返回给学生,如果库存记录表明书库中有学生所需教材, 则开发票, 登记并开领书单, 学生凭领书单到书库领书。如果书库中无该教材, 则填写缺书登记表。根据缺书登记表, 生成一张采购单, 由教材采购员根据采购单采购教材, 新教材入库后, 根据进书单登记到库存记录。

(1) 绘制顶层的数据流程图

根据对图书销售系统功能的描述, 确定了外部实体有学生和采购员, 绘制出顶层的数据流程图, 也可称为第0层的数据流程图, 如图6-6所示。

图6-6 顶层数据流程图

(2) 分解第1层

根据对图书销售系统功能的详细调查, 分析系统包含的功能主要有销售和采购两大基本功能, 按分层绘制的方法, 绘制出第1层的数据流程图, 如图6-7所示。

图6-7 第1层的数据流程图

(3) 分解第2层

对图书销售系统的销售和采购两大基本功能继续分解, 其中销售功能分解成审查、开发票、登记缺书、开领书单4个功能, 如图6-8所示; 采购功能又分解成入库登记、生成采购单2个功能, 如图6-9所示。

图6-8 销售功能的第2层数据流程图

图6-9 采购功能的第2层数据流程图

(4) 合并后的数据流程图

对以上两层的数据流程图进行合并, 如图6-10所示。

图6-10 合并后的总数据流程图

6.数据流程图的检查

数据流程图是否正确, 可以从数据流输入与输出的合理性和父图与子图的平衡两方面来检查。

(1) 输入与输出的合理性

如果一个处理过程所输出的某个数据在处理过程变换中既没有被产生, 也没有被作为输入数据输入该处理过程, 则该输入数据一定是在输入过程中被遗漏了。

(2) 父图与子图的平衡

在分层的数据流程图中, 父图与子图不平衡的现象极易发生。在对子图进行修改时,一定要及时对父图进行相应的修改, 以保持两者平衡。

父图与子图的平衡, 不能仅从形式上和数量上来看, 要考虑其数据流的组成。如果父图中有一个输入数据流, 而子图中有多个输入数据流, 此时看起来似乎不平衡, 但是如果父图中的这一输入数据流的组成和子图中的多个输入数据流的组成相同, 则也认为两者是平衡的。