一、数据流图概念
数据流图(Data Flow Diagram,DFD)是从数据传递和加工的角度,以图形的方式来描述逻辑输入经过系统加工处理后转化为逻辑输出的结构化系统分析工具
重点理解:系统的输入和输出分别是什么、数据从何处来又去向何方、数据存储在何处
数据流图描述的是系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。因为数据流图是逻辑系统的图形表示,即使不是专业的计算机技术人员也能容易理解。不要将数据流图(DFD)与系统流程图、程序流程图相混淆。
二、 数据流图元素
- 数据流:一组固定成分的数据组成,表示数据的流向。除了流向数据存储和流出数据存储的数据流不需命名外,其余数据流都要命名
- 加工:输入数据流到输出数据流之间的转换。每个加工都有编号(看出是哪个加工分解出的子加工)和名字
- 数据存储:每个数据存储都有一个名字
- 数据源:数据的发源地、归属地
三、数据流图步骤
- 确定系统的输入输出:扩大范围,把可能有的内容全部包括进去
- 由外向内构建系统的顶层数据流图:系统从外界接收了什么数据、系统向外界发送了什么数据
- 自顶向下逐层分解,绘制分层数据流图
四、数据流图注意
- 加工的输出数据流不应与输入数据流同名,即是成分相同;
- 允许一个加工有多条数据流流向另一个加工,也允许一个加工有两条相同的输出数据流向不同的加工;
- 数据存储首次出现且只与一个加工有关,那么这个数据存储作为加工的内部文件可不必画出;
- 数据守恒:每个加工必须既有输入数据流,又有输出数据流,反映此加工数据的来源与加工结果;
- 数据存储必须既有读的数据流,又有写的数据流。子图中可能存在只读不写或只写不读;
五、数据流图案例
- 某高校学生选课系统有如下功能:学生根据开课情况和培养方案填写选课单,选课系统对每个学生的选课单进行处理。选课系统根据教学计划检查学生学分情况,计算上课时间如果不发生冲突,或冲突时间小于 20%,则可以选修。根据选课优先级,最后产生每个学生的个人课表和每门课程的选课名单。请分层画出该系统的顶层和 1 层的数据流图。
选课系统顶层数据流图
选课系统 1 层数据流程 - 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请画出数据流图医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等),定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统输出某个指定病人的病情报告。
患者监护系统顶层数据流程
患者监护系统 1 层数据流程 - 假设一家工厂的采购部每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次订货的零件。对于每个需要再次订货的零件应该列出下述数据:零件编号,零件名称,订货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的 CRT 终端把事务报告给订货系统。当某种零件的库存数量少于库存量临界值时就应该再次订货。要求:画出系统的顶层模型、第一层模型和第二层模型。
订货系统顶层数据流程
订货系统 1 层数据流图
订货系统 2 层数据流图 - 银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并打印出存款存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并打印利息清单给储户。请用数据流图描绘本系统的功能。
银行计算机储蓄系统顶层数据流程
银行计算机储蓄系统 1 层数据流图
银行计算机储蓄系统 2 层数据流图 - 为方便旅客,某航空公司拟开发一个机票预定系统。旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进入该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。画出系统的顶层及 1 层数据流图。
机票预订系统数据流图
机票预订系统 1 层数据流图