5.3 详细设计工具(描述方法)


  • 前言
    1. 描述每个模块执行过程的工具叫做详细设计工具,可以分为图形、表格和语言三类。
      • 图形工具:包括传统的程序流程图、盒图和问题分析图(PAD)等;
      • 表格工具:包括判定表、判定树等;
      • 语言工具:过程设计语言(PDL)等
    2. 不论是哪类工具,对它们的基本要求都是能提供对设计准 确,无歧义的描述,也就是应该能指明控制流程、处理功 能、数据组织以及其它方面的实现细节,从而在编码阶段 能把对设计的描述直接翻译成程序代码。
  • 程序流程图
    1. 程序流程图又称为程序框图,它是一种最古老、应用最广泛、且最有争议的描述详细设计的工具。
    2. 它易学、表达算法直观。缺点是不够规范,特别是 使用箭头使质量受到很大影响,因此必须加以限制 ,使其成为规范的详细设计工具。
    3. 为了能够用程序流程图描述结构化的程序,一般地,限制只允许使用三种基本结构
    4. 结构化程序设计的基本控制结构是:
      • 顺序型
        ![[Pasted image 20230623151801.png]]
      • 选择型
        ![[Pasted image 20230623151901.png]]
      • 先判断型循环
        ![[Pasted image 20230623151912.png]]
      • 后判断型循环
        ![[Pasted image 20230623151922.png]]
      • 多种情况选择型(CASE)
        ![[Pasted image 20230623151936.png]]
    5. 程序流程图的优点
      • 表达直观、结构清晰、易于理解、易于修改
    6. 程序流程图的缺点
      • 本质上不是逐步求精的好工具,它诱使程序员 过早考虑控制流程,而不去考虑程序的整体结构;
      • 用箭头代表控制流,因此程序员不受任何约束 ,可以完全不顾结构程序设计的精神,随意转移控制,容易造成非结构化的程序结构;
      • 不易表示数据结构和层次结构
  • 盒图(N-S图)
    1. N-S图是为克服流程图在描述程序逻辑时的随意性等缺点,1973年, 由Nassi和Shneiderman提出来的,体现了结构化设计的精神。是目前过程设计中广泛使用 的一种图形。
    2. N-S图仅含有5种基本成分,它们分别表示SP方法(结构化程序设计方法)的几种标准控制结构。
    3. 下图给出了结构化控制结构的盒图表示,也给出了调用子程序的盒图表示方法。
      • 顺序
        ![[Pasted image 20230623152644.png]]
      • IF-THEN-ELSE分支
        ![[Pasted image 20230623152655.png]]
      • CASE型多分支
        ![[Pasted image 20230623152703.png]]
      • 循环
        ![[Pasted image 20230623152720.png]]
      • 调用子程序
        ![[Pasted image 20230623152732.png]]
    4. 在N-S图中,每个“处理步骤”是用一个盒子表示的,所谓“处理步骤”可以是语句或语句序列。需要时,盒子中还可以嵌套另一个盒子,嵌套深度一般没有限制,只要整张图在一页纸上能容纳得下,由于只能从上边进入盒子然后从下边走出,除此之外没有其他的入口和出口,所以,N-S图限制了随意的控制转移,保证了程序的良好结构。
    5. 用N-S图作为详细设计的描述手段时,常需用两个盒子:数据盒模块盒前者描述有关的数据,包括全程数据、局部数据和模块界面上的参数等,后者描述执行过程。
    6. N-S图有下述特点:
      • 功能域(一个特定控制结构的作用域)明确,可以从盒图上一眼就看出来。
      • 不可能任意转移控制
      • 很容易确定局部和全程数据的作用域
      • 很容易表现嵌套关系,也可以表示模块的层次结构
    7. N-S图的优点:
      • 它强制设计人员按SP方法进行思考并描述他的设计方案,这就有效地保证了设计的质量,从而也保证了程序的质量;
      • N-S图形象直观,功能域明确结构层次清晰。为编程、复查、选择测试用例、维护都带来了方便;
      • N-S图简单、易学易用,可用于软件教育和其他方面。
    8. N-S图的缺点:
      • 随着程序内嵌套的层数的增多时,内层方框越来越小,这样不仅会增加画图的难度,还会影响图形的清晰度。
      • 手工修改也比较麻烦,这是有些人不用它的主要原因
    9. N-S图的嵌套定义形式
      ![[JM5A%OAK~)WXML}X04LH0S1.png]]
  • 问题分析图(PAD图)
    1. PAD是问题分析图(problem analysis diagram)的英文缩写,由日立公司中央研究所在1973年研究开发的。

    2. 它使用二维树形结构图来描述程序的逻辑,将这种图翻译成程序代码比较容易。是一种十分有前途的表达方法。

    3. PAD支持SP方法,它仅具有顺序、选择、循环三类基本成分,其中选择和循环又有几种形式

    4. 下图是PAD图的基本符号。

      • 顺序
        ![[Pasted image 20230623154842.png]]
      • 选择
        ![[Pasted image 20230623154853.png]]
      • Case型多分支选择
        ![[Pasted image 20230623154859.png]]
      • 当型循环
        ![[Pasted image 20230623154915.png]]
      • 直到型循环
        ![[Pasted image 20230623154923.png]]
      • 语句标号
        ![[Pasted image 20230623155014.png]]
      • 定义
        ![[Pasted image 20230623155023.png]]
      • 初始的PAD图
        ![[Pasted image 20230623155304.png]]
      • 使用def符号细化处理框P2
        ![[Pasted image 20230623155316.png]]
    5. PAD图的主要优点:

      • 使用PAD符号设计的程序必然是结构化的程序。
      • PAD图所描绘的程序结构十分清晰,PAD图中竖线的总条数就是程序的层次数
      • 用PAD图表现程序逻辑,易读,易记,易懂
      • 容易将PAD图转换成高级语言源程序,可用软件工具实现自动转换
      • 既可以表示程序逻辑,也可以描绘数据结构
      • 支持自顶向下,逐步求精方法的使用。用“def” 符号逐步增加细节
  • 过程设计语言(PDL)
    1. 过程设计语言(PDL)也称为伪码,PDL是一种用于描述功能模块的算法设计加工细节的语言。
    2. PDL是一种“混杂式语言”,它采用某种语言(如英语或自然语言)的词汇,另一种语言(结构化程序设计语言)的全部语法
    3. 伪码的语法规则分为“外语法”和“内语法”。
    4. PDL语法是开放式的,其外层语法是确定的,而内层语法则故意不确定。
    5. 外层语法描述控制结构和数据结构,它用类似于一般编程语言控制结构的关键字(如IF—THEN—ELSE、WHILE——DO、REPEAT——UNTIL等)表示,所以是确定的,
    6. 内层语法可使用自然语言的词汇描述具体操作
    7. 过程设计语言的表示:
      ![[Pasted image 20230623160241.png]]
    8. PDL特点
      • 关键字的固定语法,它提供了结构化控制结构、 数据说明和模块化的特点。
      • 自然语言的自由语法,它描述处理特点;
      • 数据说明的手段。
      • 模块定义和调用的技术,应该提供各种接口描述模式
    9. PDL优点
      • 可以作为注释直接插在源程序中间。这样做能促 使维护人员在修改程序代码的同时也相应地修改PDL 注释,因此有助于保持文档和程序的一致性,提高了 文档的质量
      • 可以使用普通的正文编辑程序或文字处理系统, 很方便地完成PDL的书写和编辑工作
      • 同自然语言(英语)很接近,易于理解。
      • 由于是语言形式,所以易于被计算机处理。
      • 由于同程序是同结构的,从中自动产生程序亦较容易。
    10. PDL缺点
      • 不如图形工具形象直观;
      • 描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。
    11. 总之,支持SP方法的各种描述手段(结构化流程图、N-S图、PAD图、PDL等)各有优缺点,总的说来,PDL是比较令人满意的,所以在英语国家中最为流行。

  目录