• 结构化分析工具之数据流图


    什么是数据流

    数据流是一组数据。在数据流图中数据流用带箭头的线表示,在其线旁标注数据流名。在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件。在数据流图中加工用圆圈表示,在圆圈内写上加工名。一个处理框可以代表一系列程序、单个程序或者程序的一个模块。

    什么是数据流图?

    数据流图(Data Flow Diagram)简称:DFD,通过系统对数据“流”的图形表示,是从数据传递和加工角度,显示了系统输入和输出的信息,数据的流向以及最终存储在哪里,能让用户更加直观的明白系统的工作原理。

    数据流图是SA方法中用于表示逻辑系统模型的一种工具,它从数据传递和加工的角度,以图形的方式来刻画数据流从输入到输出的变换过程。它是一种图形化的系统模型,它在一张图中展示信息系统的主要需求,即输入、输出、处理(过程)、数据存储。是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。

    数据流程图包括:
    a.指明数据存在的数据符号,这些数据符号也可指明该数据所使用的媒体;
    b.指明对数据执行的处理的处理符号,这些符号也可指明该处理所用到的机器功能;
    c.指明几个处理和(或)数据媒体之间的数据流的流线符号;
    d.便于读、写数据流程图的特殊符号。
     
    数据流图是结构化系统分析和设计方法SSADM的三个基本视角之一。项目发起人和最终用户需要在系统演进的各个阶段得到简要介绍和咨询。通过数据流图,用户可以看到系统将如何运行,系统将完成什么以及如何实现系统。可以绘制旧系统的数据流图,并与新系统的数据流图进行比较,以便比较以实现更高效的系统。数据流图可以用来为最终用户提供一个物理的概念,即它们输入的数据最终对整个系统的结构从订单到发送到报告有影响。如何开发系统可以通过数据流图模型来确定。

    基本元素

    由于从 DFD 中可以很容易地看出系统紧密结合的各个部分,而且整个图形模式只有 5 个符号需要记忆,所以深受分析人员的喜爱,因而广为流行。DFD 中包括以下几个基本元素:

    • 数据流
      符号:
      是由一组固定成分的数据组成,箭头的方向表示数据的流向,箭头的始点和终点分别代表数据流的源和目标。除了流向数据存储或从数据存储流出的数据不必命名外,每个数据流必须要有合适的名字,以反映数据流的含义。从一处到另一处的数据流向,如从输入或输出到一个过程的数据流。
    • 加工
      符号:○/O
      又称过程。一步步地执行指令,完成输入到输出的转换。对数据进行加工处理。加工是对数据进行处理的单元,它接受一定的数据输入,对其进行处理,并产生输出。
    • 外部实体
      符号:□
      也称为源/宿,系统之外的数据源或目的。代表系统之外的实体,可以是人、物或其它系统软件,他指出数据所需要的发源地或系统所产生的数据归属地。
    • 数据存储
      符号:=
      表示信息的静态存储,可以代表文件、文件的一部分、数据库的元素等。
    • 实时链接
      符号:

       当过程执行时,外部实体与过程之间的来回通信。

    数据流图的结构

    数据流图有两种典型结构:

    • 变换型结构
      它所描述的工作可表示为输入、主处理和输出,呈线性状态。
    • 事务型结构
      这种数据流图呈束状,即一束数据流平行流入或流出,可能同时有几个事务要求处理。

    数据流图的层次

    结构化分析的思路是依赖于数据流图进行自顶而下的分析。这也是因为系统通常比较复杂,很难在一张图上将所有的数据流和加工描述清楚。因此,数据流图提供一种表现系统高层和低层概念的机制。也就是先绘制一张较高层次的数据流图,然后在此基础上,对其中的过程(处理)进行分解,分解成为若干独立的、低层次的、详细的数据流图,而且可以这样逐一地分解下去,直至系统被清晰地描述出来。

    数据流图的层次如下图所示:

    Context 图

    Context 图,也就是系统上下文范围关系图。这是描述系统最高层结构的 DFD 图。它的特点是,将整个待开发的系统表示为一个过程,将所有的外部实体和进出系统的数据流都画在一张图中。

    如下图:

    Context 图用来描述系统有什么输入、输出数据流,与哪些外部实体直接相关,可以把整个系统的范围勾画出来。当完成了 Context 图的建模之后,就可以在此基础上进行进一步的分解。以上图 为例,进行再分解,在对原有流程了解的基础上,可以得到如下图 所示的结果。

    上图 是在 Context 图的基础上做的第一次分解,而在 Context 图中只有一个过程,那就是系统,将其编号为 0。而接下来对 Context 图进行的分解,其实就是对这个编号为 0的过程进行更细化的描述,在这里引入了新的过程、数据存储,为了能够区分其位置的级别,在这层次上的过程将以 1、2、3 为序列进行编号。由于这是对过程 0 的分解,因此也称之为 DFD 0 层图。而可以根据需要对 DFD 0 层图上的过程(编号为 1、2、3)进行类似的分解,那么就称之为 DFD 1 层图,在 DFD 1 层图中引入的新过程,其编号规则就是 1.1,1.2...,以及 2.1,2.2...,以此类推,直到完成分析工作。另外,这里存在一个很关键的要点,那就是 DFD 0 层图是 Context 图的细化,因此所有的输入和输出应该与 Context 图完全一致,否则就说明存在着错误。

    如何画 DFD

    DFD 的绘制是一个自顶向下、由外到里的过程,通常按照以下几个步骤进行。
    1. 画系统的输入和输出:就是在图的边缘标出系统的输入、输出数据流。这一步其实是决定研究的内容和系统的范围。在画的时候,可以先将尽可能多的输入、输出画出来,然后再删除多余的,增加遗漏的。
    2. 画数据流图的内部:将系统的输入、输出用一系列的处理连接起来,可以从输入数据流画向输出数据流,也可以从中间画出去。
    3. 为每一个数据流命名:命名的好坏与数据流图的可理解性密切相关,应避免使用空洞的名字。
    4. 为加工命名:注意应该使用动宾短语。

    不考虑初始化和终点,暂不考虑出错路径等细节,不画控制流和控制信息。

    绘制注意事项

    在单张数据流图时,必须注意以下原则:
    1.一个加工的输出数据流不应与输入数据流同名,即使它们的组成成分相同。
    2.保持数据守恒。也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者说是通过该加工能产生的数据。
    3.每个加工必须既有输入数据流,又有输出数据流。
    4.所有的数据流必须以一个外部实体开始,并以一个外部实体结束。
    5.外部实体之间不应该存在数据流
  • 相关阅读:
    PHP迭代生成器---yield
    array_chunk — 将一个数组分割成多个
    php array_change_key_case
    PHP trait介绍
    mysql视图
    mysql常见内置函数
    MySQL表复制
    二分查找算法(折半查找算法)
    使用SplFixedArray创建固定大小的数组
    Frameset Example
  • 原文地址:https://www.cnblogs.com/yilang/p/12256876.html
Copyright © 2020-2023  润新知