1
 软件工程
1.6.4.2 4.4.2 详细设计工具

4.4.2 详细设计工具

在理想情况下,算法过程描述应采用自然语言来表达,这样可以使不熟悉软件的人理解起来比较容易,但自然语言在方法和语义上往往具有多义性,常常要依赖上、下文才能把问题交代清楚。因此,要使用一些详细设计的工具来进行算法描述。

常见的详细设计工具有图形工具(程序流程图、N-S图、PAD、HIPO),表格工具(判定表),语言工具(PDL)。

下面讨论其中几种主要的工具。

1.程序流程图

程序流程图又称为程序框图,是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。因此,至今仍是软件开发者较普遍采用的一种工具。

程序流程图的基本控制结构如图4-10所示。

从20世纪40年代到70年代中期,程序流程图一直是软件设计的主要工具。随着结构化程序设计的出现,逐步暴露出程序流程图的许多缺点,许多人建议停止使用它。目前虽然还有许多人在使用,然而总的趋势是越来越多的人不再使用程序流程图了。

img40

图4-10 程序的基本结构

程序流程图的主要缺点在于,它并不能引导设计人员用结构化设计方法进行详细设计,人们可以使用箭头实现向任何位置的转移(GOTO语句),如果使用不当,程序流程图就可能非常难懂,而且无法进行维护。因此,箭头是程序流程图的一个隐患,使用时必须十分小心,程序流程图的质量在很大程度上取决于设计人员的水平。

2.N-S图

N-S图是由Nassi和Shneiderman提出的一种符合程序化结构设计原则的图形描述工具。它的提出是为了避免程序流程图在描述程序逻辑时的随意性。在N-S图中,为了表示5种基本控制结构,规定了5种图形构件,如图4-11所示。

img41

图4-11 N-S图形构件

3.PAD

PAD(Problem Analysis Diagram)是一种程序结构可见性强、结构唯一、易于编制、易于检查和易于修改的详细设计表现方法。PAD是面向高级程序设计语言的,为Fortran、Cobol、Pascal等常用的高级程序设计语言提供了一整套相应的图形符号。由于每种控制语句都有一个图形符号与之对应,显然将PAD转换成与之对应的高级语言程序比较容易。PAD具有如下优点。

(1)使用表示结构优化控制结构的PAD符号所设计出来的程序必然是结构化的程序。

(2)PAD所描述的程序结构十分清晰。

(3)用PAD表示程序逻辑,易读、易懂、易记,PAD是二维数型结构的图形,程序从图中最左边上端的节点开始执行,自上而下、从左到右顺序执行。

(4)很容易将PAD转换成高级程序语言源程序,这种转换可由软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。

(5)既可用于表示程序逻辑,也可用于描述数据结构。

(6)PAD的符号支持自顶向下、逐步求精方法的使用,开始时设计者可以定义一个抽象程序,随着设计工作的深入而使用PAD的基本符号逐步增加细节,直至完成详细设计。

图4-12所示的是PAD的基本符号。

img42

图4-12 PAD的基本符号

4.PDL

PDL(过程设计语言)是一个笼统的名称,目前有许多种不同的过程设计语言。过程设计语言用于描述模块中算法和加工的具体细节,以便在开发者之间进行比较准确的交流。

过程设计语言由外层语法和内层语法构成。外层语法描述结构,采用与一般编程语言类似的确定的关键字(如IF...THEN...ELSE,WHILE...DO等)。内层语法描述操作,可以采用任意的自然语句(英语或汉语)。

例如,下面是一个用过程设计语言描述的算法,其中外层语法IF...THEN...ELSE是确定的,而内层操作“X的平方根为实数”则是不确定的自由格式。

IF X不是负数

THEN

  RETURN(X的平方根为实数)

ELSE

  RETURN(X的平方根为复数)由于过程设计语言同程序很相似,所以也称为伪程序或伪代码。但它仅仅是对算法的一种描述,是不可执行的。另外,同前面介绍的结构化语言相比,过程设计语言更详尽地描述了算法的细节。事实上,结构化语言和过程设计语言的基本思想是一致的,只是侧重点不同。前者用在软件分析阶段描述用户需求,它是给用户看的,可以描述得比较抽象;后者用在详细设计阶段描述模块的内部算法,是给开发者看的,应该详细具体。