软件工程导论(张海藩)——第六章

不羁岁月 提交于 2020-01-01 13:05:49

详细设计

详细设计的主要任务是什么?
人机界面设计主要考虑哪些设计问题?
掌握盒图、PAD图、判定表、判定树及伪码的设计方法。
给定问题,用Jackson方法设计数据的输入结构、输出结构及程序结构。
已知程序流图,计算环型复杂度。

详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。

一、结构程序设计

二、人机界面设计

  1. 系统响应时间
  2. 用户帮助设施
  3. 出错信息处理
  4. 命令交互

三、过程设计的工具

1、程序流程图

程序流程图又称程序框图,是历史最悠久,使用最广泛的描述过程设计的方法。
缺点:

  1. 程序流图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。
  2. 程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。
  3. 程序流图不易表达数据结构
    在这里插入图片描述
    在这里插入图片描述

2、盒图

盒图又称N-S图。它有以下特点:

  1. 功能域明确,可以从盒图上一眼就看出来。
  2. 不可能任意转移控制
  3. 很容易确定局部和全局数据的作用域
  4. 很容易表现嵌套关系,也可表示模块的层次结构。

在这里插入图片描述

3、PAD图

PAD图的主要优点如下:

(1)使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序。
(2) PAD图所描绘的程序结构十分清晰。图中最左面的竖线是程序的主线,即第一层结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次。图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数。
(3)用PAD图表现程序逻辑,易读、易懂、易记。PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。
(4)容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。
(5)即可用于表示程序逻辑,也可用于描绘数据结构。
(6) PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计.如图6.6所示。

在这里插入图片描述
在这里插入图片描述

4、判定表

在这里插入图片描述

5、判定树

在这里插入图片描述

6、过程设计语言

过程设计语言(PDL)也称伪代码。
在这里插入图片描述

五、面向数据结构的设计方法

1、jackson图

  1. 顺序结构
    在这里插入图片描述
  2. 选择结构
    在这里插入图片描述
  3. 重复结构
    在这里插入图片描述
    缺点:选择条件或循环条件不能直接表示出来。

2、改进的jackson图

在这里插入图片描述

3、jackson方法

Jakson结构程序设计方法基本上由下述5个逻辑步骤组成。
(1) 分析并确定输入数据和输出数据的逻辑结构,并用jackson图描绘这些数据结构。

(2)找出输入数据结构和输出数据结中有对应关处理的数据单元。所谓有对应关系是指有直接的因果,在程序中可以同时处理的数据单元(对于重复出现的关系的数据单元,重复的次序和次数必须都相同才可能有对应关系。

(3)用下述3条规则从描述数据结构的jackson图导出描绘程序结构的jackson图。
①为每对有对应关系的数据单元按照它们在数据居结构图中的层次在程序结构图的相应层次画一个处理框(注意,如果这对数据单元在输人数据结构和输出数租结构中所处的层次不同,则和它们对应的处理柜在程序结构图中所处的层次与它们之中在数据结构图中层次低的那个对应)。

②根据输入数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。

③根据输出数据结构中剩余的每个数据单元所处的层次,在程序结构图的相应层次分别为它们画上对应的处理框。

总之,描绘程序结构的Jackson图应该综合输人数据结构和输出数据结构的层次关系而导出来。在导出程序结构图的过程中,由于改进的Jackson图规定在构成顺序结构的元素中不能有重复出现或选择出现的元素,因此可能需要增加中间层次的处理框。

(4)列出所有操作和条件(包括分支条件和循环结束条件),并且把它们分配到程序结构图的适当位置。

(5)用伪码表示程序。

六、程序复杂程度的定量度量

1、McCabe方法

(1)流图

所谓流图实质上是“退化了的”程序流图,它仅仅描绘程序的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。
程序流图中的一个顺序的处理框序列和一个菱形判定框,可以映射成数据流图中的一个节点。
在这里插入图片描述

(2)计算环形复杂度的方法

三种方法:

  1. 流图中线性无关的区域数等于环形复杂度
  2. V(G)=E-N+2(E是边数,N是节点数)
  3. V(G)=P+1(P是流图中判定结点的数目)

环形复杂度越高,越容易出问题,一般情况下,V(G)<=10为宜。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!