什么是数据流程图?
数据流图是信息系统中数据流的图形表示。它可以描述传入的数据流、传出的数据流和存储的数据。DFD 没有提及数据如何流经系统。
DFD 技术将高级数据流图分解为一组更详细的图表,提供整个系统的整体视图,以及更详细的分解。提供整个系统的整体视图,以及更详细的分解,并在适当的情况下,更详细的分解和描述各个活动,以促进澄清和理解。
结果,系统的范围和边界在图中清楚地表明了。一个完善的 DFD 的最终结果是一个“大图”,它显示了每个级别正在发生的事情。
为什么选择 DFD?
数据流图提供了系统的图形表示,旨在让
计算机专家和非专家用户都可以访问。它是一种非常容易理解的图形表示,因为它有助于可视化内容。
这些模型使软件工程师、客户和用户能够在需求分析和规范期间有效地合作。
虽然这意味着我们的客户需要了解建模技术和构造,但在数据流建模中只使用了有限的构造集,并且应用的规则设计得简单易懂。
以下是DFD技术的好处:
- 这是一种简单易懂的图形技术。
- 技术和非技术受众更容易理解它。
- 它有助于描述系统的边界。
- 它有助于将现有系统知识传达给最终用户。
- 它提供了系统组件的详细表示。
- 它用作系统文档的一部分。
DFD 与流程图
DFD 和流程图之间存在显着差异。基本上,DFD 显示数据流;流程图显示控制流程。
- 流程图描述了程序模块中的控制流程,并有助于说明解决问题的步骤。
- DFD 说明了输入、输出、数据将如何流经系统以及数据将存储在何处。它不包含任何控制或分支元素。
DFD 的要素
- 实体——实体是信息数据的来源和目的地。实体由
矩形表示并有自己的名称。
- 流程——对数据执行的活动和操作由圆形或圆形矩形表示。
- 数据存储– 数据存储有两种变体 – 它可以表示为 – 1. 它可以表示为没有两条小边的矩形,2) 或只有一条边
的开放矩形 缺少边的开放矩形。
- 数据流——数据的移动用尖箭头表示。数据的移动显示为从作为其源的箭头底部到作为其目的地的箭头头部。
数据流示例 – 电子银行
银行经理向开立帐户流程提供新帐户详细信息,这导致客户详细信息保存在客户数据库数据存储中,而帐户详细信息保存在帐户数据库数据存储中。尽管我们在解释中使用了“结果”一词,但 DFD 并不意味着因果关系;它所显示的只是开户过程可以从银行经理的界面读取数据,而无需将数据以特定顺序写入客户数据库和帐户数据库数据存储。
使用网上银行登录过程的客户必须以一组登录凭据的形式提供一些数据,例如用户名和密码。
客户可能会从提款中收到一笔钱或将一笔钱存入存款;在这两种情况下,这都会导致帐户数据库数据存储中的帐户余额更新(尽管这种因果关系无法显式建模)。
客户可以启动资金转账流程,并且必须提供账户目的地和资金金额。资金转账过程可以通过另一个银行接口将资金金额发送到另一个银行。
上面显示的这个 DFD 示例包括五个进程、四个外部接口/角色和两个数据存储。它并不是对银行系统中数据流的详尽表示,但它足够全面,可以让您了解如何构建 DFD。
自上而下的分解技术——多级 DFD
数据流建模技术的一个主要优点是,通过一种称为自顶向下分解(也称为“调平”)的技术,可以在抽象层次结构中管理和建模现实世界系统的详细复杂性。调平是通过绘制一系列越来越详细的 DFD 来完成的,直到达到所需的详细程度。
要使 DFD 更加复杂(即,不要过多的过程),您可以创建多级 DFDS。
- 上下文图包含控制(聚合)系统过程。
- 较高层次的 DFD 不太详细(更详细的 DFD 在较低层次详细阐述)称为自顶向下分解过程。
- 上下文图以进程号开始(例如,进程 1、进程 2 等)。
- 编号在下一个所谓的第一级 (DFD) 中继续。例如,上下文图中的流程1被细化为一级DFD中的三个流程,编号分别为1.1、1.2和1.3。
- 类似地,第二层中的过程被编号,例如2.1.1、2.1.2、2.1.3和2.1.4。层次结构中进程的编号:
- (1, 2, 3,…);
- (1.1、1.2、1.3、……、2.1、2.2、2.3、……);
- (1.1.1、1.1.2、1.1.3、……)。
- 层数取决于模型系统的大小。
当对 DFD 执行自上而下的分解到较低级别的 DFD 时,输入和输出必须在 DFD 的级别之间保持不变。例如,级别 n 和 n+1 必须具有相同的输入和输出
DFD 示例– 食品订购系统
上下文图(0 级 – DFD)
上下文图显示了系统的概述以及它如何与“世界”的其他部分交互。上下文图是只显示顶层的数据流图,称为第 0 层。在这一层,只有一个可见的流程节点表示完整系统的功能,即它如何与外部实体交互。上下文图的一些好处是。
- 显示系统边界的概览
- 通过其简单的符号,它不需要技术知识即可理解
- 由于符号有限,易于绘制、修改和详细说明
下图显示了为一个食品订购系统绘制的上下文图(顶层数据流图)。
- 它包含一个表示系统模型的过程(形状),在本例中为“食品订购系统”。
- 它还显示了将与系统交互的参与者,称为外部实体。
在此示例中,供应商、厨房、经理和客户是与系统交互的实体。
在流程和外部实体之间,存在数据流(连接器),表明实体和系统之间存在信息交换。
Context DFD 是数据流模型的入口点。它包含一个且只有一个进程,并且不显示任何数据存储。
1级DFD
1 级 DFD 提供了比上下文图更详细的系统视图。通过显示构成系统的主要子流程和数据存储。
下图显示了 1 级 DFD,它是上下文 DFD 中显示的食品订购系统流程的分解(即分解)。通读该图,然后我们将根据它介绍一些关键概念。
食品订单系统数据流程图的示例包含三个流程、四个外部实体和两个数据存储。
- 根据图表,我们知道客户可以下订单。食品订购流程接收订单,将其转发到厨房,将其存储在订单数据存储中,并将更新的库存详细信息存储在库存数据存储中。该过程还向客户提供帐单。
- 经理可以通过生成报告流程接收报告,该流程将库存详细信息和订单分别作为库存和订单数据存储的输入。
- 经理还可以通过提供库存订单来启动订单库存流程。此过程将库存订单转发给供应商并将更新的库存详细信息存储在库存数据存储中。
逻辑与物理 DFD
数据流图分为逻辑数据流图和物理数据流图。逻辑 DFD 侧重于业务及其运作方式。它描述了发生的业务事件以及每个事件所需和生成的数据。另一方面,物理 DFD 显示了系统将如何实现。以下是逻辑 DFD 和物理 DFD 之间的主要区别:
逻辑DFD
- 逻辑 DFD 描述了业务的运作方式。
- 流程代表业务活动。
- 无论数据如何存储,数据存储都表示数据的集合。
- 这就是业务控制的方式。
物理 DFD
-
- 物理 DFD 描述了系统将如何实现(或当前系统如何运行)。
- 过程代表程序、程序模块和手动程序。
- 数据存储代表物理文件和数据库、手动文件。
- 它显示了用于验证输入数据、获取记录、确保流程成功完成以及系统安全的控制。
- 物理 DFD 指定物理文档的实际流程,而逻辑 DFD 仅关注业务术语中的信息流。
例如,Physical DFD 指定物理文档的实际流程,而逻辑 DFD 仅关注业务术语中的信息流。
此外,逻辑 DFD 消除了仅涉及物理活动而不转换数据的物理过程。
逻辑 DFD 示例 – 杂货店
逻辑 DFD 说明了所涉及的过程,而没有详细说明活动的物理实现。
实体 DFD 示例 – 杂货店
- 实物 DFD 显示使用了条形码 – 大多数杂货店商品上的 UPC PRICE 代码
- 此外,物理 DFD 提到了手动过程,例如扫描,解释说临时文件用于保存项目的小计
- 可以用现金、支票或借记卡付款
最后,它通过它的名字来指代收据,CASH REGISTER RECEIPT
数据流图的提示和注意事项
- 不要让它太复杂;通常 5-7 人可以管理流程
- 数据存储必须与至少一个进程相关联
- 未经处理的两个外部实体之间不应存在数据流
- 有输入但没有输出的过程被认为是黑洞过程。
- 过程标签应该是动词短语;数据存储区由名词表示。
- 外部实体必须与至少一个流程相关联
- DFD 是非确定性的——编号不一定表示顺序,在与用户讨论时有助于识别流程
- 数据存储不应连接到外部实体,否则,这意味着您正在让外部实体直接访问您的数据文件
资源
Thank tto myy father whho stated to me about thuis website, tyis weblog iis reallly awesome.
I am no longer sure the place you’re getting your info, but great topic. I needs to spend some time finding out more or working out more. Thanks for fantastic info I was in search of this info for my mission.
Simply want to say your article is as amazing. The clearness on your publish is just cool and that i can suppose you are a professional on this subject. Fine along with your permission let me to seize your feed to keep up to date with imminent post. Thank you a million and please carry on the gratifying work.
I’ve been brrowsing on-line more thaan 3 hours these days,
but I nnever discovered any inteesting article like
yours. It’s pretty worth enough for me. Personally, iff all webb wners and bloggers made jhst right content as you did, thee web wioll likely bbe a lot more helpful thaan eever before.
I truly appreciate your piece of work, Great post.
naturally like your web-site but you have to check the spelling on quite a few of your posts. Several of them are rife with spelling problems and I find it very troublesome to tell the truth nevertheless I will surely come back again.