数据流图
结构化分析方法:
结构化分析方法最初由Douglas Ross提出,由DeMarco推广,
由Ward和Mellor以及后来的Hatley和Pirbhai扩充,形成了今天的结构化分析方法的框架。
结构化分析方法的分析模型:
- 核心:数据字典
- 实体关系图(ERD):描述数据对象和对象之间的关系——数据建模
- 数据流图(DFD):描述数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能(子功能)——功能建模
- 状态变迁图(STD):描述系统对外部事件如何响应,如何动作——行为建模
传统化结构分析方法:
- 面向数据流进行需求分析的方法。
- 传统结构化分析方法适合于数据处理类型软件的需求分析。
- 具体来说,传统结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。
- 传统结构化分析方法使用工具:
- 数据流图(Data Flow Diagram)
- 数据词典(Data Dictionary)
- Warnier图
- 结构化英语
- 判定表与判定树
- IPO图
DFD的符号:
源点和终点:
源点和终点是系统之外的实体,可以是人、物或其他软件系统。源点和终点是为了帮助理解系统接口而引入的。
加工/变换:
对数据进行处理的单元。在分层数据流图中,要对加工进行编号,以便于管理。加工也要选取适当的名字,以提高数据流图的易读性。
数据流:
文件 :
- 用来暂时存储数据的。
- 如果加工要读文件,则数据流的方向是从文件到加工;
- 如果加工要写文件,则数据流的方向是从加工到文件;
- 如果加工既要读文件又要写文件,则数据流的方向是双向的。
数据流图的层次结构:
为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。
按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统。
自顶向下逐层画数据流图的步骤:
1. 首先建立顶层的数据流图(基本系统模型),其中只含有一个代表目标软件系统整体处理功能的转换。根据软件系统与外部环境的关系确定顶层数据流图中的外部实体以及它们与软件系统之间的数据流。
2. 画系统的内部:将顶层图中的处理分解成若干个处理,并用数据流将这些处理连接起来,使得顶层图中的输入数据流经一连串的加工处理后变换成顶层图中的输出数据流。这张图称为1层数据流图。又称为系统功能级数据流图。
3. 画处理的内部:把每一个处理看作一个小系统,该处理的输入输出数据流看成小系统的输入输出数据流,于是可以用画1层图同样的方法画出每个处理的DFD子图。
4. 对第3步分解出来的DFD子图中的每个处理重复第3步的分解,直至图中尚未分解的处理都足够简单为止。到此得到了一套分层的数据流图。
分层的数据流图:
为分层数据流图和加工编号的原则:
(1)子图的图号就是分解的父图中加工的编号
(2)子图中的加工的编号是由子图号、小数点,局部顺序号组成
例1:订货系统
假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下列数据:零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存量少于库存量临界值时就应再次定货。
第一步:
- 确定系统的源点和终点
- 仓库管理员是数据的源点;
- 采购员是数据的终点。
- 处理(加工)
- 应该完成定货系统这样一个功能。
- 数据流
- 事务需从仓库送到系统中,显然事务是一个数据流;
- 系统要把定货报表送给采购部,定货报表也是一个数据流。
第二步:
- 将处理(加工)——定货系统进行功能分解成事务处理和产生报表两部分;
- 考虑有关数据存储问题,题中涉及到存储的信息有:库存清单、定货信息;
第三步:
- 将事务处理进一步分解为接收事务、更新库存清单、处理定货三部分。
- 画出事务处理功能分解后的数据流图。
例2:教育基金会的捐助资金管理系统
- 由捐助者向基金会提出捐助请求,经身份确认后被接受,对捐助人进行登记并授予捐助证书,捐款存入银行。
- 由教育单位提出用款申请,在进行相应的合法性校验和核对相应的捐款储备后做出支出。
- 每月给基金会的理事会一份财政状况报表,列出本月的收入和支出情况和资金余额。