软件工程 第6章_第1页
软件工程 第6章_第2页
软件工程 第6章_第3页
软件工程 第6章_第4页
软件工程 第6章_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、6.3 过程设计的工具过程设计的工具过程设计工具过程设计工具n过程设计的任务:在使用程序设计语言编制过程设计的任务:在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给行分析,设计出全部必要的过程细节,并给予清晰的表达。予清晰的表达。 图形工具图形工具 表格工具表格工具 语言工具语言工具6.3.1 程序流程图程序流程图程序流程图中常用的符号程序流程图中常用的符号 起止端点 数据 处理 准备或预处理 预先定义的处理 条件判断 循环上界限 循环下界限 文档 流线 虚线 省略符 并行方式 注释 也称为程序框图,是历史

2、最悠久、使用最广泛,也称为程序框图,是历史最悠久、使用最广泛,独立于任何一种程序设计语言。独立于任何一种程序设计语言。优点:对控制流程的描绘较直观,便于掌握。优点:对控制流程的描绘较直观,便于掌握。 1 1、循环符号的使用、循环符号的使用 循环名进入循环条件循环体 循环名 S=S+i S=0S=S+iS=0,i=1i=i+1 循环体循环体 A=B AB x=1 x=2 x=3 x=4 =1 =2 =3 =4 =52 2、多出口判断流程符号的使用、多出口判断流程符号的使用 请利用程序流程图描述下列问题的程序结构 某汽车修配厂,有一个存有汽车零件的仓库,其中存有若干种零件,请编写一个查询程序,用于

3、查询该库中某零件的库存量为多少。 设该模块为查询模块。请设计该模块的 程序结构。具体要求: 1、应具有重复查询功能; 2、应具有数据检测功能; 3、请利用程序流程图描述该模块的算法。 零件号零件号10001 10002 10003 10004 10005 10006库存量库存量100012508866920203450 i+ i=0开始输入零件库存输入零件库存S 数组数组输入零件号X输出S0i和S1iYF提示输入错误结束程序流程图的程序流程图的随意性和灵活性随意性和灵活性使它存使它存在一些缺点:在一些缺点:(1)并不是逐步求精的好工具:诱使程序)并不是逐步求精的好工具:诱使程序员过早地考虑程序

4、的具体控制流程,而忽略了程员过早地考虑程序的具体控制流程,而忽略了程序的全局结构;序的全局结构;(2)用箭头代表控制流,这样使得程序员)用箭头代表控制流,这样使得程序员不受任何约束,可以完全不顾结构程序设计的精不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制;神,随意转移控制;(3)程序流程图在表示数据结构方面存在)程序流程图在表示数据结构方面存在不足。不足。6.3.2 盒图(盒图(N-S图)图)不允许违背结构程序设计精神的图形工不允许违背结构程序设计精神的图形工具。它有下述特点:具。它有下述特点:(1) 功能域功能域(即,一个特定控制结构的作即,一个特定控制结构的作用域用域)明确,

5、可以从盒图上一眼就看出来。明确,可以从盒图上一眼就看出来。(2) 不可能任意转移控制。不可能任意转移控制。(3) 很容易确定局部和全程数据的作用很容易确定局部和全程数据的作用域。域。(4) 很容易表现嵌套关系,也可以表示很容易表现嵌套关系,也可以表示模块的层次结构。模块的层次结构。 值 1 Case1 部分 Case条件 第一个任务 第二个任务 第三个任务 (a) 顺序结构 F 条件 T ELSE 部分 THEN 部分 (b) 选择结构 (c) 多分支结构 循环条件 DO_WHILE 部分 循环条件 DO_UNTIL 部分 (d) 循环结构 A (e) 调用子程序 A 值 2 Case2 部分

6、 值 n Casen 部分 N-S图的基本符号 请利用N-S描述下列问题的程序结构 某汽车修配厂,有一个存有汽车零件的仓库,其中存有若干种零件,请编写一个查询程序,用于查询该库中某零件的库存量为多少。 设该模块为查询模块。请设计该模块的 程序结构。具体要求: 1、应具有重复查询功能; 2、应具有数据检测功能; 3、请利用N-S图描述该模块的算法。 零件号零件号100011000210003100041000510006库存量库存量100012508866920203450建立零件库建立零件库 (s数组数组), i=0 输入零件号输入零件号 x do while(x!=s0i)i+i+x=s0i

7、) Y N s0i输出输出 s1i 输入错误输入错误! ! 继续查询继续查询? Y N 跳出循环跳出循环 n问题分析图(问题分析图(Problem Analysis Diagram)采用二维树形结构图表示程序的控制流。采用二维树形结构图表示程序的控制流。6.3.3 PAD图图 A B (a)顺序结构顺序结构 ABP (b)选择结构选择结构 PAD图的基本符号 WHILE P S UNTIL P S (c) WHILE型循环结构型循环结构 (d) UNTIL型循环结构型循环结构A1 A2 P= An P1 P2 Pn (e) 多分支结构 (f)语句标号语句标号(g)定义定义s17s22=0whi

8、le num(1-1000) 输入输入 age s17+ s18+ s19+ s20+ s21+ s22+ while i(17-22) 输出输出 sibeginendPAD图的主要优点如下:( (1) 1) 使用表示结构化控制结构的使用表示结构化控制结构的PADPAD符号所设符号所设计出来的程序必然是结构化程序。计出来的程序必然是结构化程序。(2) PAD(2) PAD图所描绘的程序结构十分清晰,图中图所描绘的程序结构十分清晰,图中竖线的总条数就是程序的层次数。竖线的总条数就是程序的层次数。(3) (3) 用用PADPAD图二维树形结构表现程序逻辑易读、图二维树形结构表现程序逻辑易读、易懂。

9、程序从图中最左竖线上端的结点开始易懂。程序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历执行,自上而下,从左向右顺序执行,遍历所有结点。所有结点。(4) 容易将容易将PAD图转换成高级语言源程序,这图转换成高级语言源程序,这种转换可用软件工具自动完成,有利于提高种转换可用软件工具自动完成,有利于提高软件可靠性和软件生产率。软件可靠性和软件生产率。(5) 既可用于表示程序逻辑,也可用于描绘数既可用于表示程序逻辑,也可用于描绘数据结构。据结构。(6) 支持逐步求精方法的使用。开始时设计者支持逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,使用可以定义一个抽象的程序,使用

10、def符号逐符号逐步增加细节,直至完成详细设计。步增加细节,直至完成详细设计。图6.6 使用PAD图提供的定义功能来逐步求精的例子建立判定表的步骤建立判定表的步骤n左上部左上部:过程执行期间的所有条件:过程执行期间的所有条件(或所有判或所有判断断)。n左下部左下部:与一个具体过程:与一个具体过程(或模块或模块)有关的所有有关的所有处理。处理。n右上部:各种可能的条件组合右上部:各种可能的条件组合。n右下部:每一种条件组合所对应的应做的工作右下部:每一种条件组合所对应的应做的工作。6.3.4 判定表判定表 假设某航空公司规定,乘客可以免费托运重量假设某航空公司规定,乘客可以免费托运重量不超过不超

11、过30kg的行李。当行李重量超过的行李。当行李重量超过30kg时,时,对头等舱的国内乘客超重部分每公斤收费对头等舱的国内乘客超重部分每公斤收费4元,元,对其他舱的国内乘客超重部分每公斤收费对其他舱的国内乘客超重部分每公斤收费6元,元,对外国乘客超重部分每公斤收费比国内乘客多对外国乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定表可以清楚地表示与上述乘客少一半。用判定表可以清楚地表示与上述每种条件组合相对应的计算行李费的算法,如每种条件组合相对应的计算行李费的算法,如表表6.1所示。所示。下面以行李托运费的算法为

12、例:下面以行李托运费的算法为例:用判定表表示计算行李费的算法用判定表表示计算行李费的算法所有条件所有条件所有可能做的动作所有可能做的动作表示做它左边那项动作表示左边那个条件成立表示条件成立与否不影响对动作的选择n当算法中包含多重嵌套的条件选择时,用判定表可以当算法中包含多重嵌套的条件选择时,用判定表可以清晰地表示复杂的条件组合与应做的动作之间的对应清晰地表示复杂的条件组合与应做的动作之间的对应关系。关系。判定表不适于作为判定表不适于作为一种通用的设计工具,没有一种简单的方法使它能同一种通用的设计工具,没有一种简单的方法使它能同时清晰地表示顺序和重复等处理特性。时清晰地表示顺序和重复等处理特性。

13、n是判定表的变种,也能清晰地表示复杂是判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关的条件组合与应做的动作之间的对应关系。系。n形式简单,易于掌握和使用。形式简单,易于掌握和使用。n分支的次序可能对最终的判定树的简洁分支的次序可能对最终的判定树的简洁程度有较大的影响。程度有较大的影响。6.3.5 判定树判定树 用判定树计算行李费的算法用判定树计算行李费的算法某校制定了教师的讲课课时津贴标准。对于各某校制定了教师的讲课课时津贴标准。对于各种性质的讲座,无论教师是什么职称,每课时津贴种性质的讲座,无论教师是什么职称,每课时津贴费一律是费一律是50元;而对于一般的授课,则根据教师

14、的元;而对于一般的授课,则根据教师的职称来决定每课时津贴费:教授职称来决定每课时津贴费:教授30元,副教授元,副教授25元,讲师元,讲师20元,助教元,助教15元。元。用判定表和判定树表示课时费的计算方法。用判定表和判定树表示课时费的计算方法。 12345教授 TFFF副教授 FTFF讲师 FFTF助教 FFFT讲座TFFFF5030 25 20 15 教师课时津贴判定树 课时津贴 一般授课 讲座 教授 副教授 讲师 助教 30 25 20 15 50 是一种用于描述功能模块的算法设计和是一种用于描述功能模块的算法设计和加工细节的语言,使用自然语言的词汇,同时加工细节的语言,使用自然语言的词汇

15、,同时使用程序设计语言的语法,称为设计程序用语使用程序设计语言的语法,称为设计程序用语言。它是一种伪代码言。它是一种伪代码(Pseudo code) -关键词关键词+自然语言自然语言伪代码伪代码-文字形式的表达工具,不能在计算机上执行,文字形式的表达工具,不能在计算机上执行,但形式上与代码相似。用它来描述程序的结构,工作量但形式上与代码相似。用它来描述程序的结构,工作量要比画图小,又比较容易转换真正的代码。要比画图小,又比较容易转换真正的代码。6.3.6 过程设计语言过程设计语言结构化语言的结构分为外层和内层:结构化语言的结构分为外层和内层:n外层:外层:具有严格的关键字外语法,用于定义控制具

16、有严格的关键字外语法,用于定义控制结构和数据结构。包括有简单陈述句、判定和结构和数据结构。包括有简单陈述句、判定和重复结构等三种。重复结构等三种。n内层:内层:采用自然语言短语表示实际操作和条件。采用自然语言短语表示实际操作和条件。使用数据词典中定义的名字和有限的自定义词,使用数据词典中定义的名字和有限的自定义词,还可以使用一些简单的算术运算和逻辑运算符还可以使用一些简单的算术运算和逻辑运算符号。号。下面是商店业务处理系统中检查发货单的例子nIF 发货单金额超过$500 THENIF 欠款超过60天 THEN在偿还欠款前不予批准ELSE (欠款未超期)发批准书及发货单ENDIFELSE (发货

17、单金额未超过$500)IF 欠款超过60天 THEN发批准书,发货单及催款通知ELSE (欠款未超期)发批准书及发货单ENDIFENDIF(1)(1)、数据说明数据说明:格式格式: TYPE AS 其功能是定义数据的类型和作用域其功能是定义数据的类型和作用域说明:1.变量名:是一个模块内部使用的变量或模块间共用的全局变量名。2.限定词1:标明数据类型3.限定词2:标明该变量的作用域TYPEnumberASSTRINGLENGTH(12)(2)(2)、程序块程序块:PDL的过程成分是由块结构构成的,而块将作为的过程成分是由块结构构成的,而块将作为一个单个的实体来执行。一个单个的实体来执行。 BE

18、GIN END(3)(3)、子、子程序结构程序结构:把把 PDL 中的过程称为子程序。中的过程称为子程序。 PROCEDURE INTERFACE END(4)(4)、基本控制结构、基本控制结构: IF THEN ; ELSE ; ENDIF - - 选择型结构选择型结构 DO WHILE ; ENDDO REPEAT UNTIL ; ENDREP - - 重复型结构重复型结构 DO LOOP ; EXIT WHEN ENDLOOP DO FOR ; ENDFOR - - 重复型结构重复型结构 - - 多路选择结构多路选择结构 CASE OF ; WHEN SELECT ; WHEN SELE

19、CT ; DEFAULT: 缺省或错误缺省或错误case: ; ENDCASE READ/WRITE TO - - 输入输入/ /输出结构输出结构 PDL语言具有下述优点:语言具有下述优点:(1) PDL描述可以直接作为注释插在源程序描述可以直接作为注释插在源程序中,有助于保持文档和程序的一致性。中,有助于保持文档和程序的一致性。(2)用)用PDL写出的程序,可抽象可具体,易写出的程序,可抽象可具体,易实现自顶向下逐步求精的设计原则。实现自顶向下逐步求精的设计原则。(3)同自然语言很接近易于理解。可使用普)同自然语言很接近易于理解。可使用普通的文字处理系统完成通的文字处理系统完成PDL的书写和

20、编辑工作。的书写和编辑工作。(4) PDL描述与程序结构相似,可以利用自描述与程序结构相似,可以利用自动处理程序自动由动处理程序自动由PDL生成程序代码。生成程序代码。PDL的缺点是不如图形描述形象直观,因此人的缺点是不如图形描述形象直观,因此人们常常将们常常将PDL描述与一种图形描述结合起来使用。描述与一种图形描述结合起来使用。6.4 面向数据结构的设计方法面向数据结构的设计方法 程序复杂性主要是指模块内部程序的复杂性程序复杂性主要是指模块内部程序的复杂性。它直接关系到软件开发费用的多少,开发周期。它直接关系到软件开发费用的多少,开发周期的长短和软件内部潜伏错误的多少。同时它也是的长短和软件

21、内部潜伏错误的多少。同时它也是软件可理解性的另一种度量。软件可理解性的另一种度量。6.5 程序复杂程度的定量度量n程序的复杂程度乘以适当常数即可估算出程序的复杂程度乘以适当常数即可估算出软件中故障的数量以及软件开发需要的工软件中故障的数量以及软件开发需要的工作量。作量。n可以比较两个不同的设计和算法的优劣。可以比较两个不同的设计和算法的优劣。n定量的复杂程度可作为模块规模的精确限定量的复杂程度可作为模块规模的精确限度。度。程序复杂程度定量度量意义:程序复杂程度定量度量意义: 原理原理: :程序的复杂性很大程度上取决程序的复杂性很大程度上取决于程序控制流的复杂程度。单一的顺序结于程序控制流的复杂

22、程度。单一的顺序结构最简单,循环和选择构成的环路越多,构最简单,循环和选择构成的环路越多,程序就越复杂。程序就越复杂。6.5.16.5.1、McCabe McCabe 度量法度量法 该方法是利用程序模块的程序图中环该方法是利用程序模块的程序图中环路的个数,来计算程序的复杂性的。为此路的个数,来计算程序的复杂性的。为此,该方法也称为环路复杂度计算法。,该方法也称为环路复杂度计算法。 1. 流图(程序图)流图(程序图)一种退化了的程序流程图。用圆表示结点,一种退化了的程序流程图。用圆表示结点,一个圆代表一条或多条语句。程序流程图中的一一个圆代表一条或多条语句。程序流程图中的一个顺序的处理框序列和一

23、个菱形判定框,可以映个顺序的处理框序列和一个菱形判定框,可以映射成流图中的一个结点。射成流图中的一个结点。流图中的箭头线称为边,它和程序流程图中流图中的箭头线称为边,它和程序流程图中的箭头线类似,代表控制流。的箭头线类似,代表控制流。在流图中一条边必须终止于一个结点,即使在流图中一条边必须终止于一个结点,即使这个结点并不代表任何语句这个结点并不代表任何语句(实际上相当于一个空实际上相当于一个空语句语句)。由边和结点围成的面积称为区域,当计算区由边和结点围成的面积称为区域,当计算区域数时应该包括图外部未被围起来的那个区域。域数时应该包括图外部未被围起来的那个区域。(1)(1)程序图符号程序图符号

24、TC1C2CABED(2)(2)从流程图导出程序图从流程图导出程序图 A开始开始C1BCED结束结束C2T A B C D E F G H K L J 由点和边围成的面积称为区域。由点和边围成的面积称为区域。图6.16 由PDL翻译成的流图用任何方法表示的过程设计结果,都可以翻译成流图:用任何方法表示的过程设计结果,都可以翻译成流图:图6.17 由包含复合条件的PDL映射成的流图 把复合条件把复合条件分解为若干个简分解为若干个简单条件,每个简单条件,每个简单条件对应流图单条件对应流图中一个判定结点。中一个判定结点。从每个判定结点从每个判定结点引出两条或多条引出两条或多条边。边。当过程设计中包含

25、复合条件,即在条件中包含当过程设计中包含复合条件,即在条件中包含了一个或多个布尔运算符了一个或多个布尔运算符(逻辑逻辑OR,AND,NAND,NOR)时:时: 环形复杂度定量度量程序的逻辑复杂度。环形复杂度定量度量程序的逻辑复杂度。可用下述可用下述3种方法来计算环形复杂度种方法来计算环形复杂度:(1) 流图中的区域数等于环形复杂度。流图中的区域数等于环形复杂度。(2) 流图流图G的环形复杂度的环形复杂度V(G)=E-N+2,其中,其中,E是流图中边的条数,是流图中边的条数,N是结点数。是结点数。(3) 流图流图G的环形复杂度的环形复杂度V(G)=P+1,其中,其中,P是流图中判定结点的数目。是

26、流图中判定结点的数目。2. 计算环形复杂度的方法计算环形复杂度的方法 A B C D E F G H K L I V(G)=E-N+2 =12-11+2=3V(G)=P+1=3 当程序内分支数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。3. 环形复杂度的用途环形复杂度的用途nMcCabe研究大量程序后发现,环形复杂研究大量程序后发现,环形复杂度高的程序往往是最困难、最容易出问题度高的程序往往是最困难、最容易出问题的程序。的程序。n McCabe用实例证实了在用实例证实了在McCabe复杂度为复杂度为10的附近,存在出错率的间断跃

27、变。的附近,存在出错率的间断跃变。他他建建议,议,对于复杂度超过对于复杂度超过10的程序,应分成几的程序,应分成几个小程序,以减少程序中的错误。个小程序,以减少程序中的错误。用3种方法计算下图所示流图的环形复杂度原理:原理:根据程序中运算符和操作数的总数来度量根据程序中运算符和操作数的总数来度量程序的复杂程度。程序的复杂程度。n令令N1为运算符出现的总次数,为运算符出现的总次数,N2为操作数为操作数出现的总次数,程序长度出现的总次数,程序长度N定义为:定义为:N=N1+N2nHalstead给出预测程序长度的公式如下:给出预测程序长度的公式如下:H=n1 log2 n1+n2 log2 n2。

28、 n1为不同运算为不同运算符符(包括关键字包括关键字)的个数,的个数, n2为不同操作数为不同操作数(变量变量和常数和常数)的个数。的个数。多次验证都表明,预测的长度多次验证都表明,预测的长度H与实际长度与实际长度N非常接近。非常接近。6.5.2 Halstead方法方法Z=0;While X0Z=Z+Y;X=X-1;End_while;Print(Z);H=n1 log2 n1+n2 log2 n28 log2 85log25=35.6N=N1+N2=26Z=0;While X0Z=Z+Y;X=X-1;End_while;Print(Z);Halstead还给出了预测程序中包含错误的个数的公式如下:E=N log2 (n1+n2)/3000有人曾对从300条到12000条语句范围内的程序核实了上述公式,发现预测的错误数与实际错误数相比误差在8%之内。6.6 小结n详细设计阶段的关键任务是确定怎样具体详细设计阶段的关键任务是确定怎样具体地实现用户需要的软件系统,也

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论