1、程序步骤图 程序步骤图独立于任何一个程序设计语言,比较直观、清楚,易于学习掌握。但步骤图也存在部分严重缺点。比如步骤图所使用符号不够规范,常常使用部分习惯性使用方法。尤其是表示程序控制步骤箭头能够不受任何约束,随意转移控制。这些现象显然是和软件工程化要求相背离。为了消除这些缺点,应对步骤图所使用符号做出严格定义,不许可大家随心所欲地画出多种不规范步骤图。比如,为使用步骤图描述结构化程序,必需限制步骤图只能使用图3.25所给出五种基础控制结构。 图4.3 步骤图基础控制结构 任何复杂程序步骤图全部应由这五种基础控制结构组合或嵌套而成。作为上述五种控制结构相互组合和嵌套实例
2、图示给出一个程序步骤图。图中增加了部分虚线组成框,目标是便于了解控制结构嵌套关系。显然,这个步骤图所描述程序是结构化。 图4.4步骤图基础控制结构 N-S图 Nassi和Shneiderman 提出了一个符合结构化程序设计标准图形描述工具,叫做盒图,也叫做N-S图。为表示五种基础控制结构,在N-S图中要求了五种图形构件。参看图4.5。 为说明N-S图使用,仍用图4.4给出实例,将它用图4.6所表示N-S图表示。 如前所述,任何一个N-S图,全部是前面介绍五种基础控制结构相互组合和嵌套结果。当问题很复杂时,N-S图可能很大。 图4.5 N-S图五种基础控制结构
3、 图4.6 N-S图实例 PAD PAD是Problem Analysis Diagram缩写,它是日本日立企业提出,由程序步骤图演化来,用结构化程序设计思想表现程序逻辑结构图形工具。现在已为ISO认可。 PAD也设置了五种基础控制结构图式,并许可递归使用。 图4.7 PAD基础控制结构 做为PAD应用实例,图4.8给出了图4.4程序PAD表示。PAD所描述程序层次关系表现在纵线上。每条纵线表示了一个层次。把PAD图从左到右展开。伴随程序层次增加,PAD逐步向右展开。 PAD实施次序从最左主干线上端结点开始,自上而下依次实施。 每碰到判定或循环,就自左而右进入下一层
4、从表示下一层纵线上端开始实施,直到该纵线下端,再返回上一层纵线转入处。如此继续,直到实施到主干线下端为止。 图4.8 PAD实例 判定表 当算法中包含多重嵌套条件选择时,用程序步骤图、N-S图或PAD全部不易清楚地描述。然而,判定表却能清楚地表示复杂条件组合和应做动作之间对应关系。仍然使用图4.4例子。为了能适应判定表条件取值只能是"T"和"F"情形,对原图稍微做了些改动,把多分支判定改为两分支判定,但整个图逻辑没有改变。见图4.9。 和图3.31表示步骤图对应判定表图3.32所表示。在表右上半部分中列出全部条件,"T"表示该条件取值为真,"F"表示该条件取值为假,空白表
5、示这个条件不管取何值对动作选择不产生影响。在判定表右下半部分中列出全部处理,画"Y"表示要做这个动作,空白表示不做这个动作。判定表右半部每一列实质上是一条规则,要求了和特定条件取值组合相对应动作。 图4.9 不包含多分支结构步骤图实例 PDL(Program Design Language) PDL是一个用于描述功效模块算法设计和加工细节语言。称为设计程序用语言。它是一个伪码。通常地,伪码语法规则分为"外语法"和"内语法"。外语法应该符合通常程序设计语言常见语句语法规则;而内语法能够用英语中部分简单句子、短语和通用数学符号,来描述程序应实施功效。 使用PDL语言,能够做到逐
6、步求精:从比较概括和抽象PDL程序起,逐步写出更具体更正确描述。 PDL就是这么一个伪码。它含有严格关键字外语法,用于定义控制结构和数据结构,同时它表示实际操作和条件内语法又是灵活自由,可使用自然语言词汇。下面举一个例子,来看PDL使用。 从上例能够看到,PDL 语言含有正文格式,很像一个高级语言。大家能够很方便地使用计算机完成PDL书写和编辑工作。 PROCEDURE spellcheck IS 查找错拼单词 BEGIN split document into single words 把整个文档分离成单词 lood up words in dictionary 在字典中
7、查这些单词 display words which are not in dictionary 显示字典中查不到单词 create a new dictionary 造一新字典 END spellcheck PDL作为一个用于描述程序逻辑设计语言,含有以下特点: ·有固定关键字外语法,提供全部结构化控制结构、数听说明和模块特征。属于外语法关键字是有限词聚集,它们能对PDL正文进行结构分割,使之变得易于了解。为了区分关键字,要求关键字一律大写,其它单词一律小写。 ·内语法使用自然语言来描述处理特征。内语法比较灵活,只要写清楚就能够,无须考虑语法错,以利于大家可把关键精力放在描述算法
8、逻辑上。 ·有数听说明机制,包含简单(如标量和数组)和复杂(如链表和层次结构)数据结构。 ·有子程序定义和调用机制,用以表示多种方法接口说明。 HIPO图(Hierarchy plus Input Process Output) HIPO最初只用做文档编写格式要求,随即发展成比较有名软件设计手段。HIPO图采取功效框图和PDL来描述程序逻辑,它由两部分组成:可视目录表和IPO图。可视目录表给出程序层次关系,IPO图则为程序各部分提供具体工作细节。 1、可视目录表 可视目录表由体系框图、图例、描述说明三部分组成。 (1)体系框图 又称层次图(H图),是可视目录表主体,用它表
9、明各个功效隶属关系。它是自顶向下逐层分解得到,是一个树形结构。它顶层是整个系统名称和系统概括功效说明;第二层把系统功效展开,分成了多个框;第二层功效深入分解,就得到了第三层、第四层,…,直到最终一层。每个框内全部应有一个名字,用以标识它功效。还应有一个编号,以统计它所在层次及在该层次位置。 (2)图例 每一套HIPO图全部应该有一个图例,即图形符号说明。附上图例,不管大家在什么时侯阅读它全部能对其符号意义一目了然。 (3)描述说明 它是对层次图中每一框补充说明,在必需说明时才用,所以它是可选。描述说明能够使用自然语言。 比如,应用HIPO法对盘存/销售系统进行分析。得到图4
10、10所表示工作步骤图。 分析此工作步骤图,可得图3.34所表示可视目录表。图4.11(a)是系统层次图,图4.11(b)是后面IPO图图例,图4.11(c)是描述说明。 图4.10 盘存/销售系统工作步骤图 图4.11 盘存/销售系统可视目录表 2、IPO图 IPO图为层次图中每一功效框具体地指明输入、处理及输出。通常,IPO图有固定格式,图中处理操作部分总是列在中间,输入和输出部分分别在其左边和右边。因为一些细节极难在一张IPO图中表示清楚,常常把IPO图又分为两部分,简单概括称为概要IPO图,细致具体部分称为具体IPO图。 概要IPO图用于表示对
11、一个系统,或对其中某一个子系统功效概略表示,指明在完成某一功效框要求功效时需要哪些输入,哪些操作和哪些输出。图4.12是表示销售/盘存系统第二层对应于H图上1.1.0框概要IPO图。 图4.12 对应H图上1.1.0框概要IPO图 在概要IPO图中,没有指明输入―处理―输出三者之间关系, 用它来进行下一步设计是不可能。故需要使用具体IPO 图以指明输入―处理―输出三者之间关系,其图形和概要IPO图一样,但输入、输出最好用具体介质和设备类型图形表示。图4.13是销售/盘存系统中对应于1.1.2框一张具体IPO图。 图4.13 对应于H图1.1.2框具体
12、IPO图 3、利用HIPO进行迭代式细化设计 在软件设计时,处理设计问题通常需要经历一个认识逐步发展过程,而且对部分问题还要经过反复考虑才可能达成比较满意设计效果。我们称此为迭代式细化设计。HIPO能很好地适应这一要求。图4.14是利用HIPO进行迭代式细化设计示意图。从图中可看到,把可视目录表和IPO图结合起来,反复交替地使用它们,可使得设计工作逐步深化,最终取得完满设计结果。其实这正是自顶向下,逐步求精结构化程序设计思想。 HIPO有自己特点。首先,这一图形表示方法轻易看懂。其次,HIPO适用范围很广,绝不限于具体设计。实际上,画可视目录表就是和概要设计亲密相关工作。假如利用它仅仅表示软件要达成功效,则是需求分析中描述需求很好工具。因为HIPO是在开发过程中表示工具,所以它又是开发文档编制工具。开发完成后,HIPO图就是很好文档,而无须在设计完成以后,专门补写文档。 图4.14 利用HIPO进行迭代式细化设计
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818