3.4 结构化分析方法


  • 定义
    1. 结构化分析(Structured Analysis简称SA)是面向数据流的需求分析方法,是20世纪70年代后期由Yourdon,Constantine及DeMarco等人提出和发展,并得到广泛的应用。
    2. T·DeMarco:结构化分析就是使用数据流图数据字典结构化语言判定树判定表等工具,来建立一种新的称为结构化说明书的目标文档。
  • 自顶向下逐层分解的分析策略
    1. 对于复杂的大项目,传统的策略是把复杂的问题“化整为零,各个击破”,这就是我们通常所说的“分解”。
    2. SA方法采用分解策略,把一个复杂庞大的问题分解成若干个小问题,然后再分别解决。
    3. 分解可分层进行,要根据系统的逻辑特性和系统内部各成分之间的逻辑关系进行分解。在分解中要充分体现“抽象”的原则,逐层分解中的上一层就是下一层的抽象。
  • 结构化分析描述工具
    1. 结构化分析方法目前的描述方法可划分成非形式化、半形式化和形式化三类。
    2. 利用图形等半形式化的描述方法表达需求的工具主要有:
      • 数据流图:结构化建模的工具;
      • 数据字典:关于数据信息的集合,用于定义数据流图中的数据和加工;
      • 描述加工逻辑的结构化语言、<mark
      • style=”background: #FF5582A6;”>判定表和判定树等。
  • 数据流图
    • 数据流图(Data Flow Diagram,DFD)是一种图形化技术,用于表示系统逻辑模型,它以直观的图形清晰地描述了系统数据的流动和处理过程。是分析员与用户之间极好的通信工具。
    • DFD 图中没有任何具体的物理元素,它只是描述数据在软件中流动和被处理的逻辑过程。
    • 源点或者终点:通常是系统之外的实体,可以是人、物或其他软件系统 ;一般只出现在数据流图的顶层图中。通过源点或者终点可以划分问题的范围,确定系统的边界。
    • 加工:是对数据进行处理的单元,一个处理框可以代表一系列程序、单个程序或程序的一个模块;每个加工的名字通常是动词短语,简明地描述完成什么处理。在分层的数据流图中,处理还应有编号。编号说明这个处理在层次分解中的位置。(体现了系统的功能,是对系统功能的抽象)
    • 数据流:是数据在系统内传播的路径(数据的流向),由一组固定的数据项组成。描述所有可能的数据流向,而不应该描绘出现某个数据流的条件;数据流应该用名词或名词短语命名。
    • 数据存储:用来存储数据,可以表示一个文件、文件的一部分、数据库的元素或者记录的一部分等 ,要考虑以什么样的机制存储数据。流向数据存储的数据流可理解为写入文件,或查询文件,从数据存储流出的数据可理解为从文件读数据或得到查询结果。
    • 数据流图 4 种基本符号
      • 数据流、数据存储:支持数据抽象(动态、静态)。
      • 加工:支持过程/功能的抽象,用于表达系统内涵。
      • 数据源、数据潭(终点):支持系统边界抽象,用于表达系统外延。
      • 用这4种基本符号,可以组成完备的数据流图。
    • 画数据流图的基本原则:
      1. 数据流图中所有的符号必须是前面所述的四种基本符号和附加符号;
      2. 数据流图的主图(顶层)必须含有前面所述的四种符号,缺一不可;
      3. 数据流图主图上数据流必须封闭在外部实体之间。(外部实体可以是一个,也可以是多个);
      4. 加工(变换数据处理)至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果;
      5. 任何一个数据流子图必须与他父图上的一个加工相对应,父图中有几个加工,就可能有几张子图,两者的输入数据流和输出数据流必须一致,即所谓“平衡”;
      6. 图上的每个元素都必须有名字(流向数据存储或从数据存储流出的数据流除外)。
    • 画数据流图的步骤 :
      1. 先找外部实体(可以是人、物或其他软件系统),找到了外部实体,则系统与外部世界的界面就得以确定,系统的源点和终点也就找到了;
      2. 找出外部实体的输入和输出数据流
      3. 在图的边上画出系统的外部实体;
      4. 从外部实体的输出流(源点)出发,按照系统的逻辑需要,逐步画出一系列变换数据的加工,直到找到外部实体处所需的输入流(终点),形成数据流的封闭;
      5. 按照上述原则进行检查和修改。
      6. 最后按照上述步骤画出所有子图。
    • 画数据流图的注意事项:
      1. 画数据流图时,只考虑数据流的静态关系,不考虑其动态关系(如启动、停止等与时间有关的问题),也不考虑出错处理问题。
      2. 画数据流图时,只考虑常规状态,不考虑异常状态,这两点一般留在设计阶段解决。
      3. 画数据流图不是画程序流程图,二者有本质的区别。数据流图只描述“做什么”,不描述“怎么做”和做的顺序。而程序流程图表示对数据进行加工的控制和细节。
      4. 不能期望数据流图一次画成,而是要经过各项反复才能完成。
      5. 描绘复杂系统的数据流图通常很大,对于画在几张纸上的图很难阅读和理解。一个比较好的方法是分层的描绘这个系统。在分层细画时,必须保持星系的持续性,父图和子图要平衡;每次只细画一个加工。
    • 画数据流图的用途:
      1. 基本目的是利用它作为交流信息的工具
        • 供有关人员审查确认;
        • 供用户理解和评价;
      2. 另一个用途是作为分析和设计的工具;
        • 描述系统所完成的功能
        • 辅助物理系统的设计时,以定时要求为指南,画出许多组自动化边界,对应不同的物理系统
  • 数据字典
    • 数据字典(Data Dictionary,DD)是关于数据的信息的集合,也就是对数据流图中所包含元素的定义的集合。 用于定义数据流和数据存储的结构,并给出构成所给出的数据流和数据存储的各数据项的基本数据类型。
    • 数据流图数据字典共同构成系统的逻辑模型
    • 数据字典的内容:
      1. 数据流:系统中数据的逻辑流向
      2. 数据流分量(数据基本项、数据项):数据流分量是组成数据流和数据存储的最小单位项;
      3. 数据存储(文件)
      4. 加工(处理)
      5. 源点和终点是为了帮助理解系统和外界接口而列入的,不在系统之内,故一般不在字典中说明。
    • 数据字典的使用符号:
      1. = 表示被定义为或等价于或由……组成;
      2. + 表示“与”(和),用来连接两个数据元素;
        • 例:X = a + b 表示 X 被定义为 a 和 b 组成。
      3. […|…] 表示“或”,对[ ]中列举的数据元素可任选其中某一项;
        • 例:X = [a | d] 表示 X 由 a 或 d 组成。
      4. {…} 表示“重复”,对{…}中内容可以重复使用;
        • 例:X = {a} 表示 X 由零个或 n 个 a 组成。
      5. m{…|…}n 表示{…}中内容至少出现 m 次,最多出现 n 次。其中 m,n 为重复次数的上、下限;
        • 例:X=2{B}6 表示X中至少出现 2 次 B,最多出现 6 次 B。
      6. (…) 表示“可选”,对(…)中的内容可选、可不选;
    • 数据字典举例
      1. 数据流表明系统中数据的逻辑处理和流向,可以是数据项或数据结构,包括:
        • 数据流的名称及编号;
        • 简述;
        • 数据流的来源;
        • 数据流的去向;
        • 数据流的组成;
        • 数据流的流通量;
        • 高峰期流通量。
      2. 数据项也称数据元素,具有独立逻辑含义的最小数据单位。在数据字典中对其定义包括:
        • 数据项的名称、编号、别名、简述;
        • 数据项的取值范围;
        • 数据项的长度。
      3. 处理逻辑(加工):仅对数据流程图 (DFD) 中最底层的处理逻辑加以说明,包括:
        • 处理逻辑名称及编号;
        • 简述;
        • 输入;
        • 处理过程;
        • 输出;
        • 处理频率
      4. 数据存储:数据流的暂停或永久保存的地方,包括:
        • 数据存储的编号;
        • 名称;
        • 简述;
        • 组成;
        • 关建字相关的处理
  • 加工逻辑的描述
    • 加工逻辑也称为“小说明”,是对数据流图中每个加工所作的说明。
    • 描述加工“做什么”,即加工逻辑,也包括其他一些与加工有关的信息,如执行条件、优先级、执行频率、出错处理等。
    • 描述加工逻辑一般用结构化语言、判定表和判定树。
    • 结构化语言
      1. 结构化语言介于自然语言与程序设计语言之间的语言;
      2. 它既有结构化程序的清晰易读的优点,又有自然语言简单易懂的优点
    • 结构化语言的特点
      1. 关键字的固定语法,它提供了结构化控制结构、数据说明和模块化的特点。
      2. 自然语言的自由语法,它描述处理特点。
      3. 数据说明的手段。应该既包括简单的数据结构,有包括复杂的数据结构。
      4. 模块定义和调用技术,应该提供各种接口描述模式
    • 判定表
      1. 当算法中包含多重嵌套的条件选择时,用程序流程图、盒图、PAD图或结构化语言都不易清楚地描述
      2. 判定表却能清晰地表示复杂的条件组合与应做的动作之间的对应关系。
    • 一张判定表由4部分组成:
      1. 左上部列出所有条件;
      2. 左下部是所有可能做的动作;
      3. 右上部是表示各种条件组合的一个矩阵;
      4. 右下部是和每种条件组合相对应的动作。
    • 判定树
      1. 判定树是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系;
      2. 多年来判定树一直受到人们的重视,是一种比较常用的系统分析和设计的工具。
      3. ![[Pasted image 20230605152524.png]]

文章作者: Chipfron
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Chipfron !
  目录