数据流图

简介: 1、数据流图简介              数据流图(数据流程图 Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,用于回答软件系统“做什么”的问题,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。 2、数据流图基本符号            


1、数据流图简介


          


  数据流图(数据流程图 Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,用于回答软件系统“做什么”的问题,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。



2、数据流图基本符号


             


  加工:加工描述了输入数据流到输出数据之间的变换,也就是输入数据流经过什么处理后变成了输出数据。每个加工都有一个名字和编号,编号能反映该加工位于分层的数据流图的哪个层次和哪张图中,能够看出它是由哪个加工分解出来的子加工。

  数据流:是由一组固定成分的数据组成,表示数据的流向。值得注意的是,数据流图中描述的是数据流,而不是控制流。除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流必须要有一个合适的名字,以反映该数据流的含义。

  数据存储文件:数据存储表示暂时存储的数据,每个数据存储都有一个名字。

  外部实体:外部实体是存在于软件系统之外的实体,用于指出数据所需要的发源地或系统所产生的数据的归属地。


  在同一数据流图上不能有同名的数据流,如果存在两个以上的数据流指向一个加工,或是从一个加工中输出两个以上的数据流,这些数据流会存在一定的关系:


            



3、数据字典


            


  数据字典的就是对数据流图中出现的所有元素,在数据字典中都用一个词条加以定义,使每个图形元素都有一个确切的解释。

  在数据字典中的条目类型:


    ● 数据项条目:通常为数据项的值类型,允许的取值范围等;

    ● 数据流条目:给出某个数据流的定义,列出该数据流的各组成数据项;

    ● 文件条目:对文件的定义,列出期组成的数据项;

    ● 加工条目:对每个不能再分解的加工做说明,包括加工的激发条件,加工的逻辑,优先级等等。



4、数据流图设计原则


  (1)父图与子图的平衡原则


           



    子图的输入输出数据流同父图相应加工的输入输出数据流必须一致,此即父图与子图的平衡。如上图,输入订货单细化为了客户、账号、数量,但对于父、子图仍是守恒的。


  (2)数据守恒原则


    指加工的输入、输出数据流是否匹配,即每一个加工既有输入数据流又有输出数据流。或者说一个加工至少有一个输入数据流,一个输出数据流。


    ● 这是不符合规则的,因为不能只有输入或只有输出:


           


    ● 实体与实体之间、存储与存储之间、实体与存储之间是不能够有数据流;并且数据流必须与加工有关,没有加工数据不能流来流去,下面三种情况也是不对的:


              


  (3)加工细节隐蔽原则


    画父图时,只需画出加工和加工之间的关系,不必画出各个加工内部的细节;内部细节留给子图去画。


  (4)简化加工之间的关系


    加工间的数据流越少,各个加工就越相对独立,耦合越低,所以应尽量减少加工间输入/输出数据流的数目。



5、分层数据流图设计


  (1)顶层图


    把整个系统视为一个大的加工,然后根据数据系统从哪些外部实体接收数据流,以及系统发送数据流到那些外部实体,就可以画出输入输出图。这张图称为顶层图。


  (2)0层图


    把顶层图的加工分解成若干个加工,并用数据流将这些加工连接起来,使得顶层图的输入数据经过若干加工处理后,变成顶层图的输出数据流。这张图称为0层图。从一个加工画出一张数据流图的过程就是对加工的分解。

    确定加工:在数据流的组成或值发生变化的地方应该画出一个加工,这个加工的功能就是实现这一变化,也可以根据系统的功能决定加工。

    确定数据流:用户把若干数据当作一个单位来处理(这些数据一起到达、一起处理)时,可以把这些数据看成一个数据流。

    确定数据存储:对于一些以后某个时间要使用的数据,可以组织成为一个数据存储来表示。


  (3)加工子图


    把每个加工看作一个小系统,把加工的输入输出数据流看成小系统的输入输出流。于是可以象画0层图一样画出每个小系统的加工的DFD图。


  (4)加工子图分解图


    对第三步分解出来的DFD图中的每个加工,重复第三步的分解过程,直到图中尚未分解的加工都是足够简单的(即不可再分解)。至此,得到了一套分层数据流图。


  (5)编号


    对于一个软件系统,其数据流图可能有许多层,每一层又有许多张图。为了区分不同的加工和不同的DFD子图,应该对每张图进行编号,以便于管理:


      ● 顶层图只有一张,图中的加工也只有一个,所以不必为其编号;

      ● 0层图只有一张,图中的加工号分别是0.1、0.2、…,或者1, 2;

      ● 子图就是父图中被分解的加工号;

      ● 子图中的加工号是由图号、圆点和序号组成,如:1.12,1.3 等。



6、数据流图注意事项


  ● 数据流图元素命名应该反映该成分的实际含义,避免使用空洞的名字;

  ● 数据流反映系统“做什么”,控制流反映“如何做”;

  ● 一个加工的输入数据流、输出数据流不能同名,即使他们的组成完全相同;

  ● 在自顶向下的分解过程中,若一个数据存储首次出现时,只与一个加工有关系,那么这个数据存储应作为这个加工的内部文件而不必画出。





目录
相关文章
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
1763 4
|
SQL 安全 IDE
SonarQube使用介绍
SonarQube使用介绍
3915 0
SonarQube使用介绍
|
安全 关系型数据库 Java
SonarQube实战:部署(一)
基于Docker部署SonarQube及中文汉化。
1335 0
|
8月前
|
人工智能 弹性计算 自然语言处理
还不会部署OpenClaw?阿里云推出五种OpenClaw快速部署方案,一键拥有专属AI助理!
OpenClaw(原Moltbot/Clawdbot)是开源AI代理平台,支持自然语言交互、任务自动化与多工具集成。阿里云推出5种零门槛部署方案——轻量服务器、无影云电脑(企业/个人版)、AgentBay嵌入、ECS云服务器,覆盖小白到专家全场景,一键启用专属AI助理!
1388 6
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课15 集成DeepSeek等大模型
本文介绍了如何在PolarDB数据库中接入私有化大模型服务,以实现多种应用场景。实验环境依赖于Docker容器中的loop设备模拟共享存储,具体搭建方法可参考相关系列文章。文中详细描述了部署ollama服务、编译并安装http和openai插件的过程,并通过示例展示了如何使用这些插件调用大模型API进行文本分析和情感分类等任务。此外,还探讨了如何设计表结构及触发器函数自动处理客户反馈数据,以及生成满足需求的SQL查询语句。最后对比了不同模型的回答效果,展示了deepseek-r1模型的优势。
1188 3
|
存储 人工智能 缓存
DeepSeek 3FS解读与源码分析(1):高效训练之道
本文从设计文档和源码,深入对 3FS 在文件系统和 AI workload 方面做一系列的解读。如有错误欢迎指正。
|
消息中间件 供应链 测试技术
图解 DDD,这一篇总结太全面了!
DDD领域驱动是非常热的架构设计,微服务也有大量涉及,本文详细解析领域驱动设计(DDD),涵盖DDD原理、实践步骤及核心概念等,帮助更好地管理复杂业务逻辑。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
图解 DDD,这一篇总结太全面了!
|
安全 网络安全 数据库
常用网络安全数据集来源
常用网络安全数据集来源
1329 1
|
机器学习/深度学习 存储 并行计算
深度学习之声纹识别
基于深度学习的声纹识别(Speaker Recognition)是一种通过分析和识别人的声音特征来确认身份的技术。
3619 2
|
Linux KVM 虚拟化
在Linux中,什么是虚拟化?并且列出常见的虚拟化技术。
在Linux中,什么是虚拟化?并且列出常见的虚拟化技术。

热门文章

最新文章