博客 分层数据流图的画法

分层数据流图的画法

   数栈君   发表于 2023-12-26 10:03  194  0

 下面以某考务处理系统为例介绍分层数据流图的画法。
  考务处理系统的功能需求如下。
  ① 对考生送来的报名单进行检查。
  ② 对合同的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站。
  ③ 对阅卷站送来的成绩清单进行检查,并根据考试中心指定的合格标准审定合格者。
  ④ 制作考生通知单(内含成绩合格/不合格标志)送给考生。
  ⑤ 按地区、年龄、文化程度、职业和考试级别等进行成绩分类统计和试题难度分析,产生统计分析表。

  部分数据流的组成如下。
  报名单 = 地区 + 序号 + 姓名 + 文化程度 + 职业 + 考试级别 + 通讯地址
  正式报名单 = 准考证号 + 报名单
  准考证 = 地区 + 序号 + 姓名 + 准考证号 + 考试级别 + 考场
  考试名单 = {准考证号 + 考试级别}(其中,{w}表示 w 重复多次)
  考生名册 = 正式报名单
  统计分析表 = 分类统计表 + 难度分析表
  考生通知单 = 准考证号 + 姓名 + 通讯地址 + 考试级别 + 考试成绩 + 合格标志

  下面介绍画分层数据流图的步骤。
  1)画系统的输入和输出
  系统的输入和输出用顶层图来描述,即描述系统从哪些外部实体接收数据流,以及系统发送数据流到哪些外部实体。
  顶层图只有一个加工,即待开发的软件系统。顶层图中的数据流就是系统的输入/输出信息。顶层图中通常没有数据存储。考务处理系统的顶层入下图所示。
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/e3ccde4657702642d441da796e9e88b9..png
  
  2)画系统的内部
  将顶层图的加工分解成若干个加工,并用数据流将这些加工连接起来,使得顶层图中的输入数据经过若干个加工处理后变换成顶层图的输出数据流,这张图称为 0 层图。从一个加工画出一张数据流图的过程实际上就是对这个加工的分解。
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/2a73d1bfb5557c6b2743012711e9edd3..png
  
  (1)确定加工。这里的加工指的是父图中某加工分解而成的子加工,可以采用下面两种方法来确定加工。
  ①根据功能分解来确定加工。一个加工实际上反映了系统的一种功能,根据功能分解的原理,可以将一个复杂的功能分解成若干个较小的功能,每个较小的功能就是分解后的子加工。这种方法多应用于高层 DFD中加工的分解。
  ②根据业务处理流程确定加工。分析父图中待分解的加工的业务处理流程,流程中的每一步都可能是一个子加工。特别要注意在业务流程中数据流发生变化或数据流的值发生变化的地方,应该存在一个加工,该加工将原数据流(作为该加工的输入数据流)处理成变化后的数据流(作为该加工的输出数据流)。该方法较多应用于低层DFD中加工的分解,它能描述父加工中输入数据流到输出数据流之间的加工细节。

  (2)确定数据流。当用户把若干个数据看作一个整体来处理(这些数据一起到达,一起加工)时,可以把这些数据看成一个数据流。通常,实际工作环境中的表单就是一种数据流。
  在父图中某加工分解而成的子图中,父图中相应加工的输入/输出数据流就是子图边界上的输入/输出数据流。另外,在分解后的子加工之间应增添一些新的数据流,这些数据流是加工过程中的中间数据(对某子加工输入数据流的改变),它们与所有的子加工一起完成了父图中相应加工的输入数据流到输出数据流的变换。如果某些中间数据需要保存,以备使用,那么可以表示为流向数据存储的数据流。
  同一个源或加工可以有多个数据流流向另一个加工,如果它们不是一起到达和一起加工的,那么可以将它们分成多个数据流。同样,同一个加工也可以有多个数据流流向另一个加工或宿。

  (3)确定数据存储。在由父图中某加工分解而成的子图中,如果父图中该加工存在流向数据存储的数据流(写操作),或者存在从数据存储流向该加工的数据流(读操作),则这种数据存储和相关的数据流都画在子图中。
  在分解的子图中,如果需要保存某些中间数据,以备以后使用,那么可以将这些数据组成一个新的文件。在自顶向下画分层数据流图时,新数据存储(首次出现的)至少应有一个加工为其写入记录,同时至少存在另一个加工读取该数据存储的记录。
  注意,对于从父图中继承下来的数据存储,在子图中可能只对其读记录,或者写记录。

  (4)确定源和宿。通常在0层图和其他子图中不必画出源和宿,有时为了提供可读性,可以将顶层图中的源和宿画在0层图中。
  当同一个外部实体(人或组织)既是系统的源,又是系统的宿时,可以用同一个图形符号来表示。为了画图的方便,避免图中线的交叉,同一个源或宿可以重复画在DFD的不同位置,以增加可读性,但它们仍代表同一个实体。
  在考务处理系统的0层图中,采用功能分解方法来确定加工。分析系统的需求说明,可知系统的功能主要分为考试报名及统计成绩两大部分,其中,报名工作在考试前进行,统计成绩工作在考试后进行。
  为此,定义两个加工:登记报名表和统计成绩。0层图中的数据流,除了继承顶层图中的输入/输出数据流外,还应定义这两个加工之间的数据流。由于这两个加工分别在考试前后进行,并不存在直接关系,因此,“登记报名表”所产生的结果“考生名册”应作为数据存储,以便考试后由“统计成绩”读取。考务处理系统的 0 层图如上图所示。

  3)画加工的内部
  当DFD中存在某个比较复杂的加工时,可以将它分解成一张 DFD 子图。分解的方法是将该加工看作一个小系统,该加工的输入/输出数据流就是这个假设的小系统的输入/输出数据流,然后采用画 0 层图的方法画出该加工的子图。
  下面介绍考务处理系统 0 层图中加工 1 的分解,这里根据业务处理流程来确定加工1的分解。分析考务处理系统的功能需求和 0 层图,将加工 1 分解成 3 个子加工:检查报名表、编准考证号和登记考生。加工 1 分解而成的子图如下图所示。
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/165ba07dc955b3cddb7463f3e1e01d22..png
  
  采用同样的方法画出加工 2 分解的 DFD 子图,如下图所示。
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/cfcabb80f522fc38a5bc09bfcfa586d0..png
  
  重复第 3)步的分解,直到图中尚未分解的加工都足够简单(也就是说,这种加工不必再分解)。
这里假设上图中的每个加工都已经足够简单,不需要再分解,该考务处理系统的分层 DFD 绘制工作结束。

————————————————
版权声明:本文为CSDN博主「qw&jy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43448856/article/details/124801069

免责申明:

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!


《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack  
0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群