数据流图的设计
数据流图(Data Flow Diagram,简称DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经历的变换,其既提供了功能建模机制也提供了信息建模机制。
一、DFD中的基本符号:
数据流图有四种基本图形符号:
→:箭头,表示数据流
〇:圆或椭圆,表示加工,即变换数据的处理
=:双杠(或开口矩形),表示数据存储
□:方框,表示数据的源点或终点
二、DFD中的4中元素:
(1)数据流:数据流是数据在系统内传播的路径,因此由一组成分固定的数据组成。如订票单由旅客姓名、年龄、单位、身份证号、日期、目的地等数据项组成。
数据流是流动中的数据,所以必须有流向,除了与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名。
(2)加工(数据处理):对数据流进行某些操作或变换。每个加工也要有名字,通常是动词短语,简明地描述完成什么加工。在分层的数据流图中,加工还应编号。
(3)数据存储(文件):指暂时保存的数据,它可以是数据库文件或任何形式的数据组织。
(4)数据源点或终点(外部实体):是本软件系统外部环境中的实体(包括人员、组织或其他软件系统),统称外部实体。一般只出现在数据流图的顶层图。
三、画数据流图的步骤:
(1)首先画系统的输入输出,即先画顶层数据流图。顶层流图只包含一个加工,用以表示被开发的系统,然后考虑该系统有哪些输入数据、输出数据流。顶层图的作用在于表明被开发系统的范围以及它和周围环境的数据交换关系。下图为飞机机票预订系统的顶层图。
(2)画系统内部,即画下层数据流图。不再分解的加工称为基本加工。一般将层号从0开始编号,采用自顶向下,由外向内的原则。画0层数据流图时,分解顶层流图的系统为若干子系统,决定每个子系统间的数据接口和活动关系。例如,在上面的机票预订系统按功能可分成两部分,一部分为旅行社预订机票,另一部分为旅客取票,两部分通过机票文件的数据存储联系起来,0层数据流图如上图。
(3)注意事项:
①命名:不论数据流、数据存储还是加工,合适的命名使人们易于理解其含义。
②画数据流而不是控制流:数据流反映系统“做什么”,不反映“如何做”,因此箭头上的数据流名称只能是名词或名词短语,整个图中不反映加工的执行顺序。
③一般不画物质流:数据流反映能用计算机处理的数据,并不是实物,因此对目标系统的数据流图一般不要画物质流。
④每个加工至少有一个输入数据流和一个输出数据流:反映出此加工数据的来源与加工的结果。
⑤编号:如果一张数据流图中的某个加工分解成另一张数据流图时,则上层图为父图,直接下层图为子图。子图及其所有的加工都应编号。
⑥父图与子图的平衡:子图的输入输出数据流同父图相应加工的输入输出数据流必须一致,此即父图与子图的平衡。
⑦局部数据存储:当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。
⑧提高数据流图的易懂性:注意合理分解,要把一个加工分解成几个功能相对独立的子加工,这样可以减少加工之间输入、输出数据流的数目,增加数据流图的可理解性。
四、数据流程图的主要作用:
1、便于用户表达功能需求和数据需求及其联系
2、便于两类人员共同理解现行系统和规划系统的框架
3、清晰表达数据流的情况
4、有利于系统建模
五、常见错误检测:
1、数据流图中所有图形符号只能是4种基本符号
2、数据流图的主图(非顶层图)必须包含4中基本元素,缺一不可
3、主图的数据流必须封闭在外部实体之间,外部实体可以不只1个
4、每个加工至少有1个输入数据流和1个输出数据流
5、数据流图中必须按层给加工框编号,编号需体现各个层次的关系
6、任何数据流子图均与上层的一个加工对应,且父图与子图平衡
7、图上每个元素都必须有名字
8、数据流图中不可夹带控制流
注:部分文件不需要在上层图中画出。例如某文件仅与某个单一的加工相关,则此文件为部分文件,只需要在表示该加工的子图中画出即可。