软件设计师认证 -如何画数据流图

1. 数据流

企业活动包含各种流,比如说物资流、事务流、货币流、人员流、机器及设备流。
而数据流是记录以上各种流的抽象表示。

2.什么是数据流图 DFD?

数据流图 = 数据流程图,便于理解的分析系统数据流程的工具,系统逻辑模型重要组成部分。

3. 数据流图的基本成分

在这里插入图片描述

3.1 加工(数据处理)

用圆或椭圆表示,加工的编号能反映出该加工位于分层数据流图中的哪个层次和哪张图中,也 能够看出它是哪个加工分解出来的子加工

3.2 数据流

用箭头描述,由一组固定的数据项组成,箭头方向表示数据的流向,作为数据在系统内的传输 通道。需要注意的是,数据流图中描述的是数据流,而不是控制流。

同一数据流图上不能有同名的数据流。如果有两个以上的数据流指向一个加工,或是从一个加 工中输出两个以上的数据流,这些数据流之间往往存在一定的关系。其具体的描述如下图所示
在这里插入图片描述
在这里插入图片描述

3.3 数据存储文件

用双杆描述,在数据流图中起保存数据的作用,又称数据存储或文件,可以是数据库文件或任何形式的数据组织。
每个数据存储文件都有一个名字。流向数据存储的数据流可以理解为写入文 件或查询文件,从数据存储流出的数据流可以理解为从文件读数据或得到查询结果

3.4 数据源点或终点

用方框描述,表示数据流图中要处理数据的输入来源或处理结果要送往的地方,在图中仅作为 一个符号,并不需要以任何软件的形式进行设计和实现,是系统外部环境中的实体,故称外部实体
它们作为系统与系统外部环境的接口界面,在实际的问题中可能是人员、组织、其他软硬件系统等。一般只出现在分层数据流的顶层图中。

4.数据流图的绘制与检验

4.1 明确系统边界

一张数据流图表示某个子系统或某个系统的逻辑模型。系统分析人员要根 据调查材料,首先识别出那些不受所描述的系统控制,但又影响系统运行的外部环境,这就是系统的数据输入的来源和输出的去处。
把这些因素都作为外部实体确定下来。确定了系统和外部环境的边界,就可集中力量分析和确定系统本身的功能。

4.2 遵循自顶向下逐层分解的原则

即按照结构化方法的思想,采用分层的 数据 流图,把大问题、复杂的问题分解成若干个小问题,然后分别解决

4.3 遵循由外向里的原则

在局部上遵循由外向里的原则,即先确定每一层数据流图的边界或范围,再考虑 流图 的内部,先画加工的输入和输出,再画加工的内部

4.4 分层的数据流图一般由顶层、中间层和底层组成

顶层抽象地描述了整个系统的情况,包括系统的范围、系统与外界实体间的关系(输入输出流);
底层具体画出了系统的细节;
中间层则 是从抽象到具体的逐步过渡。

5. 分层数据流图

从数据流图的基本目标出发,可以考虑在一张数据流图中包含多少个元素合适的问题。一些调 查研究表明,如果一张数据流图中包含的加工多于5-9个,人们就难于领会它的含义了。因此为了表 达较为复杂问题的数据处理过程,数据流图应该分层。当把功能级数据流图细化后得到的加工超过9 个时,用一个数据流图往往不够,应该采用画分图的办法。一般按问题的层次结构进行逐步分解, 并以分层的数据流图反映这种结构关系。也就是把每个主要功能都细化为一张数据流分图,而原有 的功能级数据流图用来描绘系统的整体逻辑概貌

6. 举例

现准备为某银行开发一个信用卡系统CCMS,该系统的基本功能如下。 
(1)信用卡申请。非信用卡客户填写信用卡申请表,说明所要申请的信用卡类型及申请者的基本信息,提交CCMS。如果信用卡申请被银行接受,CCMS将记录该客户的基本信息,并发送确认函 给该客户,告知客户信用卡的有效期及信贷限额;否则该客户将会收到一封拒绝函。非信用卡客户 收到确认函后成为信用卡客户。
(2)信用卡激活。信用卡客户向CCMS提交激活请求,用信用卡号和密码激活该信用卡。激活 操作结束后,CCMS将激活通知发送给客户,告知客户其信用卡是否被成功激活。 
(3)信用卡客户信息管理。信用卡客户的个人信息可以在CCMS中进行在线管理。每位信用卡 客户可以在线查询和修改个人信息。 
(4)交易信息查询。信用卡客户使用信用卡进行的每一笔交易都会记录在CCMS中。信用卡客 户可以通过CCMS查询并核实其交易信息(包括信用卡交易记录及交易额)。
 图1-4和图1-5分别给出了该系统的顶层数据流图和0层数据流图的初稿。

顶层数据流图:
在这里插入图片描述
0层数据流图:
在这里插入图片描述
【问题1】 根据说明,将图1-4中的E1-E3填充完整。
【问题2】 图1-4中缺少3条数据流,根据说明分别指出这3条数据流的起点和终点。(注:数据流的起点和 终点均采用图中的符号和描述) 【问题3】 图1-5中有两条数据流是错误的,请指出这两条数据流的名称并改正。(注:数据流的 起点和 终点均采用图中的符号和描述) 【问题4】根据说明,将图1-5中P1-P4的处理名称填充完整。

解析:

【问题1】 说明的第(1)条是关于非信用卡用户申请信用卡的,有描述“如果信用卡申请被银行接受, CCMS将记录该客户的基本信息,并发送确认函给该客户,告知客户信用卡的有效期及信贷限额; 否则该客户将会收到一封拒绝函”,再结合图1-4,显然E1是非信用卡用户。从这一描述还可以看 出,信用卡申请是要被银行审核的,银行接受申请后把申请验证结果发给CCMS系统,所以E3是银 行。说明的第(2)条和第(3)条是关于信用卡客户的操作权限,对应图1-4中的E2,所以E2是信 用卡客户。
【问题2】 由说明的第(1)条可知,非信用卡用户是要先向CCMS提交申请的基本信息,然后CCMS才有 反馈信息,所以这里缺少一条由E1到P0的数据流。 信用卡客户向CCMS发出交易记录查询请求后,CCMS还得把查询到的交易记录结果反馈给信用 卡客户,所以这里缺少由P0到E2的数据流。 由说明的第(2)条“信用卡客户向CCMS提交激活请求,用信用卡号和密码激活该信用卡”可 知,对应这一描述缺少一条由E2到P0的数据流。
【问题3】 知道了E1-E3以及P1-P4所代表的含义,找错误的数据流就比较简单了。比较明显的是P4到E1的 信用卡申请表这一条,这显然是错误的,而且也违背了数据平衡原则。应该是由非信用卡客户向P4 发信用卡申请,即起点是E1,终点是P4。 “激活请求”是信用卡客户向CCMS发送的请求,而不是P4和P3之间的活动,所以这条由P4到 P3的数据流是错误的,应修改为起点为E2、终点为P3的数据流。
【问题4】 首先分析问题4,如果问题4的结果出来后错误的数据流就比较明显了。显然P1-P4指的是说明 中的(4)条。P1显然对应的是第(4)条——交易信息查询,P2对应的是第(3)条—— 信用卡客 户信息管理,P3对应的是第(2)条——信用卡激活,P4对应的是第(1)条——信用卡申请。

答案:

【问题1】 E1:非信用卡客户 E2:信用卡客户 E3:银行
【问题2】
在这里插入图片描述
【问题3】
在这里插入图片描述
【问题4】
P1:交易信息查询 P2:信用卡客户信息管理 P3:信用卡激活 P4:信用卡申请


案例

为方便旅客,某航空公司拟开发一个机票预订系统。旅客把自己的信息(姓名、身份证号码、出发时间、出发地和目的地等)输入到该系统,系统为旅客安排航班,印出取票通知和账单,旅客在起飞的前一天可以凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。

案例数据流图绘制步骤:

从案例的描述中提取数据流图中的4种成分

确定数据源点和数据终点。从案例描述中可以得出,数据源点和数据终点都是旅客。
确定加工(处理)。根据案例描述,可以得出一个明确的加工,即“安排航班”;航班确定后,另外的操作抽象为另一个加工“产生机票” ,在分层的数据流图中再进行细化。
确定数据流。旅客信息是一个数据流;安排航班后,印出的取票通知、账单、款额和机票也是数据流。
**确定数据存储。**航班信息可视为来自另一个子系统产生的数据文件;订票信息也是一个数据存储,由该信息可以导出取票通知、账单、款额和机票等数据流;此外,旅客信息经过审核后,主要的信息必须进行存储。为了区别数据流,将数据存储定义为“XXX表”。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

绘制2层数据流图
细化“安排航班”加工
细化出“安排航班”加工的第1个子加工“审核信息”,它的输入为旅客信息(来自于1层数据流图,与父图保持平衡),输出为旅客表(与父图保持平衡),加工编号为1.1。
“安排航班”加工的第2个子加工是“订票”加工,它的输入为旅客表和航班表(与父图的一个输出和一个输入保持平衡);输出为订票表(与父图的一个输出保持平衡),其加工编号为1.2。
既然有了“订票”加工,在此,可以添加第3个“退票”加工(虽然,案例陈述中没有此功能,根据信息管理系统数据操作特点,应该补充),以维持系统的完整性;当然,此加工输入和输出都是订票表,加工编号为1.3。同理,也可以添加“查询订单”加工(不在赘述了)。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

通过实例,可以得出以下几个结论:
当对数据流图分层细化时,必须保持信息连续性,也就是说,当把一个加工分解为一系列加工时,分解前和分解后的输入输出数据流必须相同。
注意加工的编号方法。把0分解成1、2…1进一步分解成1.1、1.2、…;2进一步分解为2.1、2.2、…;…。
应该把握分解的尺寸。当分解后的加工能够中直接通过模块设计和实现,就无需分解;否则,会增加系统的复杂度。
每一次分解一个加工。一些调查表明,一张数据流图中的加工应在5~9个,否则会难易理解。

数据流图是结构化方法描述系统功能的有效模型(用途)。
利用数据流图作为用户和开发人员交流信息的工具,共同理解现行系统和规划系统的框架;并且,绝大多数用户都可以理解和评价它。
数据流图的另一个主要作用是它可以作为分析和设计的工具,着重描绘系统需要完成的功能,而不是系统的物理实现方案。
此外,数据流图对更详细的设计步骤也有帮助,在结构化方法中,结构化设计阶段将从数据流图出发映射出软件结构。因此,结构化方法是一种面向数据流的设计方法

数据流图的审查
分层数据流图的一致性和完整性

  1. 一致性。父图和子图的平衡,数据守恒,局部数据存储,一个加工的输出数据流不能与该加工的输入数据流同名。
  2. 完整性。每个加工至少有一个输入和一个输出,每个数据存储至少有一个加工对其进行读二而另一个加工对其写,每个基本加工都应有个加工规约。
  3. 注意问题
    适当命名
    画数据流而不是控制流
    避免一个加工有过多的数据流
    分解尽可能均匀

  • 23
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZuckD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值