(一)数据流程图DataFlowDiagram1.数据流程图的四个基本成分数据存储或数据流或外部项或数据处理(加工)1)数据流•表示数据和数据流向,由一组固定成分的数据组成如“选课单”由“学号、姓名、课程编号、课程名”等成分组成•数据流可从加工流向加工,也可在加工与数据存储或外部项之间流动;两个加工之间可有多股数据流•数据流的命名用名词,不要使用意义空洞的名词尽量使用现实系统已有名字数据流(图示)**++ABCAAABBBCCC储户检查合理性帐户取款单合理取款单*与+或画数据流时需注意的问题•不要把控制流作为数据流如:下图中读下张卡属于控制流,不应画出。•不要标出激发条件合法卡片卡片信息读入卡片卡片校验读下张卡工资单工资率计算工资每月1号职工档案2)加工•表示对数据进行的操作,如“处理选课单”、“产生发票”等•加工的编号,说明这个加工在层次分解中的位置(分层DFD)•加工的命名顶层的加工名就是整个系统项目的名字尽量最好使用动宾词组,也可用主谓词组不要使用空洞的动词加工的命名储户处理1帐户数据1数据2储户检查合理性帐户取款单合理取款单无意义的名字:较好的命名:3)数据存储•表示需要保存的数据流向,如“学生档案”、“课程设置”等•数据存储与加工的方向“读出”、“写入”•分层数据流程图中,数据存储一般局限在某一层或某几层•命名方法与数据流相似修改库存商品库存检索商品信息商品目录4)外部项•位于系统之外的信息提供者或使用者,称为外部项。即存在于系统之外的人员或组织。如“学务科”等•说明数据输入的源点(数据源)或数据输出的终点(数据终点)•起到更好的理解作用,但不是系统中的事物数据源数据终点没有输出!加工没有输入!加工每个加工至少有一个输入数据流和一个输出数据流几种错误(1)数据源数据终点数据源数据存储数据终点数据存储数据存储数据存储数据流必须要么从某个加工流出、要么流入某个加工,而不能直接从外部项流向数据存储等等。图示的几种流动都是不合理的几种错误(2)2怎样画DFD•了解DFD的特性•画分层DFD1)DFD的特性•与程序流程图不同,DFD不表示程序的控制结构,只描述数据的流动•DFD分成多层(子图、父图概念)表示,从而逐步展开数据流和功能的细节。S2132.22.12.33.13.2顶层0层1层(基本系统模型)(系统的子功能)DFD的分层表示2)画分层DFD(1)先画出顶层DFD。(2)自顶向下画出各层DFD分解原则:分解后的软件成分有相对独立功能一次分解不要加入细节过多由外向里画DFD报名单合格报名单检验报名单2)画分层DFD(3)先考虑稳定状态,忽略系统的工作条件,即怎么开始、怎么结束的。(4)忽略琐碎的枝节,如出错处理等。(5)随时准备重画报名单合格报名单检验报名单错误的报名单3)画分层DFD的指导原则(1)父图-子图平衡(2)局部数据存储(3)编号(4)分解的程度父图-子图平衡父图-子图平衡:模型分解时必须保持父图的输入输出数据流和子图输入输出数据流相同。父图-子图平衡A1423BFEGCD父图-子图平衡缺少C3.1ED3.33.2对加工3细化的子图:加工3购书单教材购销系统教材购销系统的顶层DFD学生领书单缺书单进书通知书库保管员购书单缺书单销售教材采购教材12第二层DFD(0层)教材购销系统教材存量表学生F1缺书登记表F2书库保管员进书通知教材入库信息领书单1.2第三层DFD(1层)销售子系统(1.0)无效书单教材存量表F1开发票F2缺书登记表学生各班学生用书表F3售书登记表F41.1审查有效性1.3登记并开领书单学生1.5补售教材1.4登记缺书购书单发票领书单有效购书单教材入库信息按书号汇总缺书2.12.3第三层DFD(1层)采购子系统(2.0)待购教材表F5教材一览表F6书库保管员进书通知教材存量表F12.2按出版社统计缺书修改教材库存和待购量F2缺书登记表缺书单教材入库信息缺书单父图-子图平衡补充说明领书单1.3发票1.3.31.3.2教材1.3.1学生领书单父图子图发票=学生+教材借助数据字典判断:局部数据存储的使用出现在加工之间的界面时,才画出来。XXE2.12.22.3FDC132FADEB父图子图购书单缺书单销售教材采购教材12第二层DFD(0层)教材购销系统教材存量表学生F1缺书登记表F2书库保管员进书通知教材入库信息领书单按书号汇总缺书2.12.3第三层DFD(1层)采购子系统(2.0)待购教材表F5教材一览表F6书库保管员进书通知教材入库信息教材存量表F12.2按出版社统计缺书修改教材库存和待购量F2缺书登记表缺书单加工编号加工的编号原则:子图图号为分解的父图中的加工号,同级子图在最后数字以序号区别。S2132.22.12.33.13.2顶层(不编号)0层1层分解的程度分解的深度与层次:按功能情况定,一般设深度为3-5如超过5个加工最好分解画,否则容易出错实例:图书馆管理系统•购入新书•读者借书•读者还书•图书注销•查询统计(一)系统功能说明购入新书•新书编卡片(包括:类目录号、流水号(唯一)、书名、作者、内容摘要、价格、购书日期等信息)•写入图书目录文件读者借书•填借书单(包括:读者号、欲借图书分类目录号)•检查读者号有效性,无效,拒借•读者号有效,检查借书是否超数?已达5本,拒绝借•未超,可借,登记图书分类目录号、读者号、借阅日期等,写回借书文件中读者还书根据图书流水号,从借书文件中读出与该书相关的借阅记录,查明借书日期,还书日期,求借书时间,再重写回借书文件中,超过期限罚款。图书注销•从借阅图书文件中删除相关记录•丢失图书时从图书文件中删除相关记录并罚款查询统计•查询某读者情况•查询某图书借阅情况•统计图书借阅情况(二)数据流程图顶层数据流图图书管理人员图书管理系统读者图书管理要求查询要求查询结果罚款单处理查询2处理要求1查询要求图书管理要求罚款单统计表图书情况读者情况0层数据流图目录文件借书文件要求类型处理图书管理要求无效输入1.1新书入库1.2还入库单罚款单一层数据流图(a)1.5注销图书1.3还书1.4目录文件借书单书单注销单借书借书文件罚款单查询类别处理查询要求2.1读者查询2.2统查询的读者情况统计表一层数据流图(b)图书查询借书文件要查询的图书情况2.3图书统计2.4计求读者文件目录文件读者情况图书情况二层数据流图(1.3)检查借书单借书单1.3.1审定借书限额1.3.2无效借书单借书文件读者文件有效借书单登记借书信息1.3.3合格借书单超额借书单二层数据流图(1.4)审定还书期限还书单1.4.1修改借书信息1.4.2借书文件未超期还书单计算超期罚款1.4.3还书单超期还书单罚款单二层数据流图(1.5)分类注销单1.5.1修改目录1.5.2借书文件目录文件图书处理注销单计算罚款1.5.3图书丢失注销单罚款单实例2:考务处理系统(1)对考生送来的报名单进行检查;(2)对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站;(3)对阅卷站送来的成绩单进行检查,并根据考试中心制定的合格标准审定合格者;(4)制作考生通知单(含成绩及合格/不合格标志)送给考生;(5)按地区进行成绩分类统计和试题难度分析,产生统计分析表。顶层数据流图考生考务处理系统考试中心阅卷站报名单准考证考生通知单成绩清单合格标准考生名单统计分析表处理报名单报名单准考证1统计成绩2考生通知单成0层数据流图考生名册绩清单合格标准考生名单统计分析表一层数据流图(a)检查报名单报名单准考证1.1编准考证号1.2不合格报名单考生名册考生名单合格报名单登记考生1.3正式报名单汇总名单1.4检查成绩清单2.1审定合格者2.2考生名册正确成绩清单制作通知单2.3分析统计成绩2.4分析试题难度2.5试题得分清单考生通知单难度分析表合格标准分类统计表成绩清单错误成绩清单经审定的成绩清单一层数据流图(b)3DFD的改进•检查正确性•提高易理解性•重新分解1)检查正确性分析员可以从以下几个角度来检查DFD的正确性:•数据守恒•数据存储的使用•父图和子图的平衡数据守恒数据不守恒的情况有两种:一是某个加工输出的数据并无相应的数据来源,可能是某些数据流被遗漏了。运动员名单=队名+姓名+项目项目参加者=项目+姓名+运动员号“运动员号”并无数据来源决定比赛名单运动员名单项目参加者项目数据守恒二是,一个加工的输入并没有用到,这不一定是错误。可与用户进一步讨论,是否属于多余的数据流。订货单=单位名+货名+货号+数量价目=货名+单价发票=单位名+货名+数量+单价+总计经商量,“货号”确属多余,故删去。开发票价目发票订货单数据存储的使用判断:是否存在“只读不写”或“只写不读”的数据存储(注意在所有的DFD中检查)1423父图:子图:4.14.34.2XXYY2)提高易理解性•简化加工之间的联系•注意分解的均匀•适当地命名简化加工之间的联系应尽量减少加工之间输入输出数据流的数目。因为加工之间的数据流越少,各个加工的功能就越相对独立。例:G12354ABHJICDKLNMPEF分解的均匀即图中各个部分不均匀。一张图中,如果某些加工已是基本加工(细节),而另一些加工还可进一步分解成三、四层,则应考虑重新分解。适当地命名•名字的意义要明确,容易理解•如果难以为DFD图中的成分(数据流、加工等)命名,往往说明分解不当,可考虑重新分解。3)重新分解在画第N层时意识到在第N-1层或第N-2层所犯的错误,此时就需要对第N-1层、第N-2层作重新分解。重新分解的做法(1)把需要重新分解的某张图的所有子图连接成一张。重新分解的做法12354ABHJICDKLNMPEF父图:重新分解的做法子图:2.22.32.12.42.5IJKCMLEHN重新分解的做法重新连成一张图:2.22.32.12.42.5BJKCMLEHN1345IAPGFD2重新分解的做法(2)把图分成几部分,使各部分之间的联系最少。重新分解的做法把图中的加工重新划分:2.22.32.12.42.5BJKCMLEHN1345IAPGFD2’2”重新分解的做法(3)重新建立父图,即把第2)步所得的每一部分画成一个圆,而各部分之间的联系就是加工之间的界面。重新分解的做法(4)重新建立各张子图,这只需把第2)步所得的图按各部分的边界剪开即可。重新分解的做法重新建立父图:BJKCMLEHN1345IAPGFD2’2”重新分解的做法(5)为所有的加工重新命名和编号。重新分解的做法重新建立父图并编号:BJKCMLEHN1345IAPGFD2”2’