数据流图的绘制方法
数据流图又称数据流图date flow diagram、DFD,是一种便于理解和分析系统数据流的图形工具。 他摆脱了系统和详细内容,准确逻辑地描述了系统的功能、输入、输出、数据存储等,是系统逻辑模型的重要组成部分。
数据流图的基本组成部分
数据流:由一组表示数据流的固定分量数据组成。 值得注意的是,数据流图绘制的是数据流,而不是控制流。 除了不需要命名从数据存储或数据存储流出的数据外,每个数据流还必须具有适当的名称以反映该数据流的含义。
加工:加工刻画了输入数据流到输出数据的转换,也就是说输入数据流经过什么样的处理变成了输出数据。 每个加工都有名称和编号。 编号反映该加工在分层数据流图的哪个层和哪个图中,并可以知道是从哪个加工中分解出来的子加工。
数据存储:数据存储表示临时存储的数据。 每个数据存储都有一个名称。
外部实体:外部实体是指位于软件系统之外的人或组织,表示数据所需的发源地或系统生成的数据的归属位置。
外部实体加工数据流
层次数据流图的设计方法
第一步是绘制子系统的输入和输出
将整个系统视为大加工,可以根据数据系统从哪个外部实体接收数据流以及系统向这些外部实体发射数据流来绘制输入/输出图。 此图称为顶视图。
步骤2,描绘子系统内部
把顶层图的加工分解成几个加工,把这些加工用数据流连接起来,顶层图的输入数据经过几个加工处理,成为顶层图的输出数据流。 这张图叫零层图。 从一个加工到绘制一个数据流图的过程是加工的分解。
可以用以下方法决定加工。
应该在数据流的组成和值发生变化的时候绘制加工,这个加工的功能是实现这个变化,也可以根据系统的功能来决定加工。
如何确定数据流
如果用户将多个数据作为一个单元来处理,那么若数据到达一起且被一起处理,则可将这些数据视为一个数据流。
关于数据存储
对于今后某个时间使用的数据,可以整理成数据存储来表现。
第三步,绘制加工内部
把每一个加工都看作一个小系统,把加工的输入输出数据流看作一个小系统的输入输出流程。 于是,可以把每个小系统加工的DFD图描绘成0层图。
第四步,绘制副加工分解图
对于步骤3中分解的DFD图的每个加工,重复步骤3的分解过程直到图中还没有分解的加工足够简单。 现在,我们得到了分层的数据流图。
步骤5、数据流图和加工编号
对于软件系统,数据流图中有很多层,每个层都可能有很多图。 为了区分不同的加工和不同的DFD子图,为了便于管理,需要对各图进行编号。
顶级图只有一张,图的加工也只有一张,所以不需要编号。
0层图只有一张,图中的加工编号分别为0.1、0.2、…、或1、2。
子图是在母图中分解的加工编号。
子图的加工编号由图号、点、编号构成。 例如,1.12、1.3等。
需要注意的问题:
1 .应该适当命名数据流、加工、数据存储和外部实体,名称应该反映其成分的实际含义,不使用空洞的名称。
2 .绘制数据流图。 不是画控制流。
3 .经过加工的输出数据流不应与输入数据流同名。 及时他们的构成完全一样。
4 .同意一个加工有多个数据流,另一个加工。 另外,同意一个加工中有两个相同的输出流流向不同的加工。
5 .保持父图与子图的平衡。 也就是说,有父图形的加工的输入输出流程在数量上和名称上都必须与子图形的输入输出流程相同。 值得注意的是,假设父图形中的一个输入(输出)数据流对应于子图形中的一些输入(输出)数据流,而子图形中构成这些数据流的整个数据项都是父图形中的一个数据流
6 .自上而下的分解过程中,当一个数据存储首次出现时,如果只涉及一个加工,则无需将该数据存储绘制为该加工的内部文件。
7 .保持数据存储,即,一个加工的所有输出数据流中的数据必须能够直接从该加工的输出流获取或通过该加工生成的数据。
8 .每个加工都需要输入数据流和输出数据流。
9 .在整个数据流图中,每个数据存储都需要读和写数据流。 但是,在某张子图中,可能只是读而不是写,或者只是写而不是读。
请特别注意以上几点。 都是考试的目标。 近两年考试的内容都集中在二、五、六、八个方面。
例如:
数据流图(DFD ) )
数据流图(简称DFD )是一种用于以SA技术表示系统的逻辑模型的工具,它以图形方式描绘了数据在系统中的流动和处理的过程。 这是一个功能模型,因为它只反映了系统必须完成的逻辑功能。
下图是一个
飞机机票预订系统的数据流图,它反映的功能是:旅行社把预订机票的旅客信息 (姓名、年龄、单位、身份证号码、旅行时间、目的地等)输入机票预订系统。系统为旅客安排航班,打印出取票通知单(附有应交的账款)。旅客在飞机起飞的前一天凭取票通知单交款取票,系统检验无误,输出机票给旅客。
3.3.1 基本图形符号
数据流图有四种基本图形符号:
:箭头,表示数据流;
〇:圆或椭圆,表示加工;
= :双杠,表示数据存储;
□:方框,表示数据的源点或终点。
(1) 数据流。数据流是数据在系统内传播的路径,因此由一组成分固定的数据组成。如订票单由旅客姓名、年龄、单位、身份证号、日期、目的地等数据项组成。因为数据流是流动中的数据,所以必须有流向,除了与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名。
(2)加工(又称为数据处理)。对数据流进行某些操作或变换。每一个加工也要有名字,一般是动词短语,简明地描写叙述完毕什么加工。在分层的数据流图中,加工还应编号。
(3)数据存储(又称为文件),指临时保存的数据,它能够是数据库文件或不论什么形式的数据组织。
(4)数据源点或终点,是本软件系统外部环境中的实体(包含人员、组织或其它软件系统),统称外部实体。一般仅仅出如今数据流图的顶层图。
3.3.2画数据流图的步骤
(1)首先画系统的输入输出,即先画顶层数据流图。顶层流图仅仅包括一个加工,用以表示被开发的系统,然后考虑该系统有哪些输入数据、输出数据流。顶层图的作用在于表明被开发系统的范围以及它和周围环境的数据交换关系。下图为飞机机票预订系统的顶层图。
(2)画系统内部,即画下层数据流图。不再分解的加工称为基本加工。一般将层号从0開始编号,採用自顶向下,由外向内的原则。画0层数据流图时,分解顶层流图的系统为若干子系统,决定每一个子系统间的数据接口和活动关系。比如,在上面的机票预订系统按功能可分成两部分,一部分为旅行社预订机票,还有一部分为旅客取票,两部分通过机票文件的数据存储联系起来,0层数据流图如图3-4。
(3)注意事项。
①命名。不论数据流、数据存储还是加工,合适的命名使人们易于理解其含义。
②画数据流而不是控制流。数据流反映系统“做什么”,不反映“怎样做”,因此箭头上的数据流名称仅仅能是名词或名词短语,整个图中不反映加工的运行顺序。
③一般不画物质流。数据流反映能用计算机处理的数据,并非实物,因此对目标系统的数据流图一般不要画物质流。
④每一个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果。
⑤编号。假设一张数据流图中的某个加工分解成还有一张数据流图时,则上层图为父图,直接下层图为子图。子图及其全部的加工都应编号。
⑥父图与子图的平衡。子图的输入输出数据流同父图对应加工的输入输出数据流必须一致,此即父图与子图的平衡。
⑦局部数据存储。当某层数据流图中的数据存储不是父图中对应加工的外部接口,而仅仅是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。
⑧提高数据流图的易懂性。注意合理分解,要把一个加工分解成几个功能相对独立的子加工,这样能够降低加工之间输入、输出数据流的数目,添加数据流图的可理解性。
图3-6给出了採用这套符号画出的等价于图3-2的DFD。
3.3.3流程图的实例