1、第六章第六章 详细设计详细设计(过程设计、模块设计过程设计、模块设计)6.1 详细设计概述详细设计概述6.2 过程设计工具过程设计工具6.3 面向数据结构的设计方法面向数据结构的设计方法6.4 程序复杂度的定量度量程序复杂度的定量度量6.5 详细设计说明书详细设计说明书第1页,共90页。6.1 详细设计概述详细设计概述6.1.1 详细设计阶段的目标与任务详细设计阶段的目标与任务6.1.2 结构化程序设计结构化程序设计第2页,共90页。详细设计阶段的目标:详细设计阶段的目标:确定应该怎样具体地实现所要求的系统。精确地描述整确定应该怎样具体地实现所要求的系统。精确地描述整个目标系统,从而在编码阶段
2、可以把这个描述翻译成用某个目标系统,从而在编码阶段可以把这个描述翻译成用某种程序设计语言书写的程序。种程序设计语言书写的程序。详细设计阶段的任务还不是具体地编写程序详细设计阶段的任务还不是具体地编写程序,而是要设计而是要设计出程序的出程序的“蓝图蓝图”,以后程序员将根据这个蓝图写出实际的以后程序员将根据这个蓝图写出实际的程序代码程序代码.结构程序设计技术是实现上述目标的关键技术结构程序设计技术是实现上述目标的关键技术,是是详细设计的逻辑基础详细设计的逻辑基础.6.1.1 详细设计阶段的目标与任务详细设计阶段的目标与任务第3页,共90页。详细设计的主要任务详细设计的主要任务主要任务主要任务:编写
3、详细设计说明书编写详细设计说明书为此,设计人员应:为此,设计人员应:(1)(1)确定每个模块的算法,用工具表达算法的过确定每个模块的算法,用工具表达算法的过 程,写出模块的详细过程性描述。程,写出模块的详细过程性描述。(2)(2)确定每一模块的数据结构。确定每一模块的数据结构。(3)(3)确定模块接口细节。确定模块接口细节。详细设计是编码的先导。详细设计是编码的先导。第4页,共90页。结构化程序设计结构化程序设计逐步求精逐步求精三种基本结构三种基本结构6.1.2 结构化程序设计结构化程序设计第5页,共90页。结构程序设计的概念最早是由结构程序设计的概念最早是由E.W.Dijstra提出提出.B
4、ohm 和和 Jacobini 证明了只要顺序、选择、循环这三种基本结构就能证明了只要顺序、选择、循环这三种基本结构就能实现任何单入口单出口的程序。实现任何单入口单出口的程序。结构程序设计结构程序设计 结构程序设计的经典的定义是结构程序设计的经典的定义是:“如果一个程序的代码如果一个程序的代码仅仅通过顺序仅仅通过顺序,选择选择,和循环这三种基本控制结构进行连接和循环这三种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口并且每个代码块只有一个入口和一个出口,则称这个程序则称这个程序是结构化的是结构化的”第6页,共90页。逐步求精的含义逐步求精的含义详细设计阶段逐步求精的含义:把一个模块
5、的功能详细设计阶段逐步求精的含义:把一个模块的功能逐步分解细化为一系列具体的处理步骤或某种高级逐步分解细化为一系列具体的处理步骤或某种高级语言的语句。语言的语句。总体设计阶段逐步求精的含义:把一个复杂问题的解总体设计阶段逐步求精的含义:把一个复杂问题的解法分解和细化成一个由许多模块组成的层次结构的软法分解和细化成一个由许多模块组成的层次结构的软件系统件系统第7页,共90页。逐步求精的要领逐步求精的要领不要急于用计算机指令、数字和逻辑符号去表示对问不要急于用计算机指令、数字和逻辑符号去表示对问题的解法,而是用自然语言(或其他工具)描述问题题的解法,而是用自然语言(或其他工具)描述问题的解法,最开
6、始的描述处于比较高的抽象层次,接着的解法,最开始的描述处于比较高的抽象层次,接着对抽象描述逐步分解,直到描述能被计算机理解为止。对抽象描述逐步分解,直到描述能被计算机理解为止。第8页,共90页。例子逐步求精例子逐步求精读入三个数,找出并打印其中的最大数读入三个数,找出并打印其中的最大数 二级求精二级求精将将X1X1与与X2X2的大数存于的大数存于MAXMAX中中If x1x2 then max=x1 elseIf x1x2 then max=x1 else max=x2 max=x2将将X3X3与与MAXMAX的大数存于的大数存于MAXMAX中中If x3max then max=x3If x
7、3max then max=x3一级算法一级算法 输入输入X1,X2,X3X1,X2,X3 将将X1X1与与X2X2的大数存于的大数存于MAXMAX中中 将将X3X3与与MAXMAX的大数存于的大数存于MAXMAX中中 输出结果输出结果第9页,共90页。BexpAABexpAAexpTFTTFF顺序结构顺序结构选择结构选择结构循环结构循环结构1)“当当”型循环型循环2)直到型循环)直到型循环三种基本的控制结构三种基本的控制结构第10页,共90页。结构程序设计技术的优越性结构程序设计技术的优越性(1)自顶向下逐步求精的方法符合人类解决复自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,因此可
8、以显著提高软件杂问题的普遍规律,因此可以显著提高软件开发工程的成功率和生产率。开发工程的成功率和生产率。(2)用先全局后局部、先整体后细节、先抽象用先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰后具体的逐步求精过程开发出的程序有清晰的层次结构,因此容易阅读和理解。的层次结构,因此容易阅读和理解。(3)不使用不使用GO TO语句仅使用单入口单出口语句仅使用单入口单出口的控制结构,使得程序的静态结构和它的动的控制结构,使得程序的静态结构和它的动态执行情况比较一致,易于阅读和理解。态执行情况比较一致,易于阅读和理解。第11页,共90页。(4)控制结构有确定的逻辑模式,编写程
9、序控制结构有确定的逻辑模式,编写程序代码只限于很少几种直截了当的方式,因代码只限于很少几种直截了当的方式,因此源程序清晰流畅。此源程序清晰流畅。(5)程序清晰和模块化使得在修改和重新设程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大。计一个软件时可以重用的代码量最大。(6)程序的逻辑结构清晰,有利于程序正确程序的逻辑结构清晰,有利于程序正确性证明。性证明。第12页,共90页。6.2 6.2 过程设计的工具过程设计的工具 过程设计工具包括过程设计工具包括图形图形,表格表格,语言三类语言三类.不论是哪一类工具不论是哪一类工具,都应该指明控制流都应该指明控制流,处理功能处理功能,数
10、数据组织以及其它方面的实现细节据组织以及其它方面的实现细节,从而在编码阶段能把对从而在编码阶段能把对设计的描述直接翻译成程序代码设计的描述直接翻译成程序代码.描述程序处理过程的工具称为过程设计工具描述程序处理过程的工具称为过程设计工具第13页,共90页。1.1.程序流程图程序流程图2.2.盒图盒图(N-S(N-S图图)3.3.问题分析图问题分析图(PAD)(PAD)5.5.过程设计语言过程设计语言(PDL)(PDL)(伪码伪码)4.4.判定树与判定表判定树与判定表第14页,共90页。第15页,共90页。第16页,共90页。第17页,共90页。盒图盒图(N-S(N-S图图)用方框图代替传统的流程
11、图用方框图代替传统的流程图描述五种基本控制结构的图形构件描述五种基本控制结构的图形构件(1)(1)顺序型顺序型ABC第18页,共90页。(2)选择型(If then else)ABF条件条件TAFT条件条件then 部分部分then 部分部分else部分部分If then elseIf then第19页,共90页。(3)(3)多分支选择型多分支选择型(CASE型型)A1值值1 1A2An.条件条件值值2 2值值n n第20页,共90页。(4)WHILE(4)WHILE重复型重复型 (5)UNTIL(5)UNTIL重复型重复型S(循环体)(循环体)DO-WHILE PS(循环体)(循环体)REP
12、EAT UNTIL P(先测试循环先测试循环)(后测试循环后测试循环)循环条件循环条件第21页,共90页。(6)移出标记ACBFX6TA:D(调用结构调用结构)第22页,共90页。1)功能域)功能域(即一个特定控制结构的作用即一个特定控制结构的作用 域)明确域)明确2)不可能任意转移控制)不可能任意转移控制3)很容易确定局部和全程数据的作用域)很容易确定局部和全程数据的作用域4)很容易表现嵌套关系,也可以表示模块)很容易表现嵌套关系,也可以表示模块 的层次结构的层次结构N-S图的特点图的特点第23页,共90页。N-S图示例图示例ab条条 件件 1TF Case Xi,i=2,3,4X2X3X4
13、当条件当条件3成立成立条条 件件 2直到条件直到条件4成立成立直直 到到 条条 件件 成立成立cdefghij顺序结顺序结构构选择结选择结构构多分支选择结多分支选择结构构先判定型循环结先判定型循环结构构后判定型循环结后判定型循环结构构FTTF第24页,共90页。例例1:TrueFalse G NPFQstart if p then while q do f end do else block g n end block endifstop第25页,共90页。例例2:以下是两个程序流程图,试用以下是两个程序流程图,试用NS图表示。图表示。第26页,共90页。第27页,共90页。第28页,共90页
14、。问题分析图(PAD)(Problem Analysis Diagram)ABCABTF条条件件基本控制结构基本控制结构:(1)顺序结构顺序结构(2)选择结构选择结构 第29页,共90页。(3)(3)重复结构重复结构WHILE CSUNTIL CS(先测试循环先测试循环)(后测试循环后测试循环)等价的等价的PASCALPASCAL语言:语言:REPEAT C UNTIL S等价的等价的PASCALPASCAL语言:语言:WHILE C DO S第30页,共90页。(4)多分支选择型(CASE型)A1A1值值1 1值值2 2值值n n A2A2AnAn.条件条件第31页,共90页。走图走图sta
15、rtstopPWHILE QFGNPAD图的结构类似树型结构,如果按照自上图的结构类似树型结构,如果按照自上而下、自左而右的顺序走树,即可将而下、自左而右的顺序走树,即可将PAD图图转换为相应的算法乃至程序。转换为相应的算法乃至程序。第32页,共90页。例例1:startstopPWHILE QFGNstartif p then while q do f end doelse block g n end blockendifstop第33页,共90页。例例2:以下是两个程序流程图,试用以下是两个程序流程图,试用PAD图表示。图表示。第34页,共90页。第35页,共90页。第36页,共90页。使
16、用使用PAD符号设计的程序必然是结构化的程符号设计的程序必然是结构化的程序序.PAD图所描绘的程序结构十分清晰图所描绘的程序结构十分清晰.用用PAD图表现程序逻辑图表现程序逻辑,易读,易记,易懂易读,易记,易懂.容易将容易将PAD图图 转换成高级语言源程序转换成高级语言源程序.可用软可用软件工具实现自动转换件工具实现自动转换.即可以表示程序逻辑即可以表示程序逻辑,也可以描绘数据结构也可以描绘数据结构.支持自顶向下支持自顶向下,逐步求精方法的使用逐步求精方法的使用.PAD图的优点图的优点:第37页,共90页。判定表判定表 程序流程图、程序流程图、N-S图、图、PAD图都不易清楚的描图都不易清楚的
17、描述含有多重嵌套的条件选择。判定表可以清晰的述含有多重嵌套的条件选择。判定表可以清晰的表示复杂的条件组合与其对应的处理之间的关系表示复杂的条件组合与其对应的处理之间的关系。一张判定表由一张判定表由4部分组成部分组成,左上部列出所有条左上部列出所有条件件,左下部是所有可能做的动作左下部是所有可能做的动作,右上部是表示各右上部是表示各种条件组合的一个矩阵种条件组合的一个矩阵,右下部是和每种条件组右下部是和每种条件组合相对应的动作合相对应的动作.判定表右半部实质上是一条规判定表右半部实质上是一条规则则,规定了与特定条件组合相对应的动作规定了与特定条件组合相对应的动作.第38页,共90页。所有条件所有
18、条件条件组合矩阵条件组合矩阵与每种条件组合与每种条件组合所对应的动作表所对应的动作表所有可能的所有可能的动作列表动作列表国内乘客国内乘客头头 等等 舱舱残疾乘客残疾乘客行李行李30kg 免费免费(W-30)*2(W-30)*3(W-30)*4(W-30)*6(W-30)*8(W-30)*12TTTFTTTTTTTTTTFFFFFFFFFFFFFFFFFFF例例1 假设某航空公司规定,乘客可以免费托运重量不超过假设某航空公司规定,乘客可以免费托运重量不超过30公斤的行李。当行李重量公斤的行李。当行李重量 超过超过30公公斤时,对头等舱的国内乘客超重部分每公斤收费斤时,对头等舱的国内乘客超重部分每
19、公斤收费 4 元,对其它舱的国内元,对其它舱的国内 乘客超重部分每公斤收乘客超重部分每公斤收费费 6 元,对外国乘客超重部分每公斤收费比国内乘客多一元,对外国乘客超重部分每公斤收费比国内乘客多一 倍,对残疾乘客超重部分每公斤收费倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定表来表示与上述比正常乘客少一半。用判定表来表示与上述 每种条件组合相对应的动作。每种条件组合相对应的动作。第39页,共90页。用判定表表示计算行李费算法用判定表表示计算行李费算法第40页,共90页。12345教授 TFFF副教授 FTFF讲师 FFTF助教 FFFT讲座TFFFF50 30 25 20 15 例2:
20、某校制定了教师的讲课课时津贴标准。对于各种性质的讲座,无论教师是什么职称,每课时津贴费一律是50元;而对于一般的授课,则根据教师的职称来决定每课时津贴费:教授30元,副教授25元,讲师20元,助教15元。第41页,共90页。行李费行李费算算 法法行李重量行李重量 W30国内乘客国内乘客外国乘客外国乘客头等舱头等舱其它舱其它舱残疾乘客残疾乘客-(W-30)*2正常乘客正常乘客-(W-30)*4残疾乘客残疾乘客-(W-30)*3正常乘客正常乘客-(W-30)*6头等舱头等舱其它舱其它舱残疾乘客残疾乘客-(W-30)*4正常乘客正常乘客-(W-30)*8残疾乘客残疾乘客-(W-30)*6正常乘客正常
21、乘客-(W-30)*12行李重量行李重量 W30免费免费判定树是判定表的变体判定树是判定表的变体,其优点是形式简单其优点是形式简单,不需要任何说明不需要任何说明,一眼就可以看出它的含义一眼就可以看出它的含义.判定树判定树第42页,共90页。例例1、某厂对部分职工重新分配工作的政策是:、某厂对部分职工重新分配工作的政策是:年龄在年龄在20岁以下者,初中文化程度脱产学习。岁以下者,初中文化程度脱产学习。高中文化程度当电工;年龄在高中文化程度当电工;年龄在2040岁之间者,中岁之间者,中学文化程度男性当钳工,女性当车工,大学文化程学文化程度男性当钳工,女性当车工,大学文化程度都当技术员。年龄在度都当
22、技术员。年龄在40岁以上者,中学文化程度岁以上者,中学文化程度当材料员,大学文化程度当技术员。请用判定表或当材料员,大学文化程度当技术员。请用判定表或判定树描述上述问题的加工逻辑。判定树描述上述问题的加工逻辑。第43页,共90页。分析:本题条件包括年龄、文化程度、性别分析:本题条件包括年龄、文化程度、性别三个,构成的判定条件取值表如表三个,构成的判定条件取值表如表33所示所示 所有的组合条件为所有的组合条件为3X3x218第44页,共90页。第45页,共90页。第46页,共90页。检查定货单过期不过期金额1000发订货单、批准单1000金额2000发通知单、定货单、批准单不发2 2、用判定表描
23、述、用判定表描述“检查定货单检查定货单”的处理逻辑:的处理逻辑:“如果金额如果金额超过超过10001000元而又未过期,则发出批准单和提货单。如果金元而又未过期,则发出批准单和提货单。如果金额超过额超过20002000元,但已过期,则不发出批准单和提货单。如元,但已过期,则不发出批准单和提货单。如果金额低于果金额低于20002000元,则不论是否过期,都发出批准单和提元,则不论是否过期,都发出批准单和提货单,而且对低于货单,而且对低于20002000元已过期的还需发出通知单元已过期的还需发出通知单”。第47页,共90页。Jackson图表示方法图表示方法 Jackson图图 A C B D(a
24、)顺序结构 A Co Bo Do(b)选择结构 A B*(c)重复结构 6.3 面向数据结构的设计方法面向数据结构的设计方法第48页,共90页。Jackson图的优点:图的优点:(1)Jackson图不仅便于表示层次结构,而且也有利图不仅便于表示层次结构,而且也有利于对结构自顶向下分解;于对结构自顶向下分解;(2)Jackson图形象直观,可读性好;图形象直观,可读性好;(3)Jackson图不仅能表示数据结构,也能表示程序图不仅能表示数据结构,也能表示程序结构(因为程序结构也可以由上述结构(因为程序结构也可以由上述3种基本结构组成)。种基本结构组成)。Jackson图的缺点:图的缺点:在选择
25、结构和重复结构中,选择条件或循环结束条在选择结构和重复结构中,选择条件或循环结束条件不能直接在件不能直接在Jackson图中表示出来。这样就影响了图形图中表示出来。这样就影响了图形的表达能力,也不利于直接把图翻译成程序。的表达能力,也不利于直接把图翻译成程序。Jackson图的优点图的优点,缺点缺点第49页,共90页。改进的改进的Jackson图图 (a)顺顺 序序 结结 构构 A C B D (c)选选 择择 结结 构构 A Co Bo Do S(i)(b)可可 选选 结结 构构 A Bo _o S(i)A B*(d)重重 复复 结结 构构 I(i)第50页,共90页。Jackson程序设计
26、方法程序设计方法例:高考后将考生的基本情况文件(简称考生基本情况文例:高考后将考生的基本情况文件(简称考生基本情况文件)和考生高考成绩文件(简称考分文件)合并成一个新文件件)和考生高考成绩文件(简称考分文件)合并成一个新文件(简称考生新文件)。考生基本情况文件和考分文件都是由考(简称考生新文件)。考生基本情况文件和考分文件都是由考生记录组成的。为简便起见,考生基本情况文件中的考生记录生记录组成的。为简便起见,考生基本情况文件中的考生记录的内容包括:准考证号、姓名、通讯地址。考分文件中的考生的内容包括:准考证号、姓名、通讯地址。考分文件中的考生记录的内容包括:准考证号和各门考分。合并后的考生新文
27、件记录的内容包括:准考证号和各门考分。合并后的考生新文件自然也是由考生记录组成,内容包括:准考证号、姓名、通讯自然也是由考生记录组成,内容包括:准考证号、姓名、通讯地址和各门考分。地址和各门考分。第51页,共90页。第一步第一步 利用利用Jackson图描述数据结构图描述数据结构对要求解的问题进行分析,确定输入数据和对要求解的问题进行分析,确定输入数据和输出数据的逻辑结构,并用输出数据的逻辑结构,并用Jackson图描述这些图描述这些数据结构。数据结构。考生新文件 考生记录*准考证号 姓名 通讯地址 考分 考生情况文件 考生记录*准考证号 姓名 通讯地址 考分文件 考生记录*准考证号 考分 I
28、 I(a)输入数据结构输入数据结构(b)输出数据结构输出数据结构 I Jackson程序设计方法由五个步骤组成:程序设计方法由五个步骤组成:第52页,共90页。第二步第二步 找出输入数据结构和输出数据结构找出输入数据结构和输出数据结构 的的对应关系对应关系找出输入数据结构和输出数据结构中有对应关系的数据找出输入数据结构和输出数据结构中有对应关系的数据单元,即有直接因果关系、在程序中可以同时处理的数据单单元,即有直接因果关系、在程序中可以同时处理的数据单元。需要注意的是,对于重复的数据单元,必须是重复的次元。需要注意的是,对于重复的数据单元,必须是重复的次序、次数都相同才有可能有对应关系。序、次
29、数都相同才有可能有对应关系。考生情况文件 考生记录*考生记录*考生新文件 考分文件 考生记录*I I I 第53页,共90页。第三步第三步 确定程序结构图确定程序结构图根据下述三规则,由根据下述三规则,由Jackson图导出相应的程序结构图:图导出相应的程序结构图:(1)为每对有对应关系的数据单元,按照它们在数据)为每对有对应关系的数据单元,按照它们在数据结构图中所处的层次,在程序结构图中的相应层次画一个处结构图中所处的层次,在程序结构图中的相应层次画一个处理框。如果这对数据单元在输入数据结构图和输出数据结构理框。如果这对数据单元在输入数据结构图和输出数据结构图中所处的层次不同,那么应以它们在
30、输入数据结构图和输图中所处的层次不同,那么应以它们在输入数据结构图和输出数据结构图中层次较低的那个层次作为它们在程序结构图出数据结构图中层次较低的那个层次作为它们在程序结构图中的处理框所处的层次;中的处理框所处的层次;(2)对于输入数据结构中剩余的数据单元,根据它们)对于输入数据结构中剩余的数据单元,根据它们所处的层次,在程序结构图的相应层次为每个数据单元画上所处的层次,在程序结构图的相应层次为每个数据单元画上相应的处理框;相应的处理框;(3)对于输出数据结构中剩余的数据单元,根据它们)对于输出数据结构中剩余的数据单元,根据它们所处的层次,在程序结构图的相应层次为每个数据单元画上所处的层次,在
31、程序结构图的相应层次为每个数据单元画上相应的处理框。相应的处理框。第54页,共90页。实际上,这一步是一个综合的过程:每对有对应关系实际上,这一步是一个综合的过程:每对有对应关系的数据单元合画一个处理框,没有对应关系的数据单元则的数据单元合画一个处理框,没有对应关系的数据单元则各画一个处理框。各画一个处理框。产生新文件 处理考生记录*产生准考证号 产生姓名 产生通讯地址 产生考分 I 第55页,共90页。第四步第四步 列出并分配所有操作和条件列出并分配所有操作和条件列出所有操作和条件(包括分支条件和循环结束条件),列出所有操作和条件(包括分支条件和循环结束条件),并把它们分配到程序结构图的适当
32、位置。并把它们分配到程序结构图的适当位置。操作:(操作:(1)停止;)停止;(2)打开两个输入文件;)打开两个输入文件;(3)建立输出文件。)建立输出文件。(4)从输入文件中各读一条记录。)从输入文件中各读一条记录。(5)生成一条新记录。)生成一条新记录。(6)将新记录写入输出文件。)将新记录写入输出文件。(7)关闭全部文件。)关闭全部文件。条件:条件:I(1)文件结束。)文件结束。第56页,共90页。把操作和条件分配到程序结构图的适当位置把操作和条件分配到程序结构图的适当位置 产生新文件 处理考生记录*分析考生记录 产生准考证号 产生姓名 产生通讯地址 产生考分 I(1)3 2 4 7 1
33、6 5 4 第57页,共90页。第五步第五步 用伪码表示程序用伪码表示程序Jackson方法中使用的伪码与方法中使用的伪码与Jackson图是完全对应的。图是完全对应的。针对三种基本程序结构,有相对应的针对三种基本程序结构,有相对应的Jackson伪码。伪码。(1)顺序结构)顺序结构A seq B C DA end第58页,共90页。(2)选择结构)选择结构(3)重复结构)重复结构A select condition1 BA or condition2 CA or condition3 DA endA iter until(或(或while)condition BA end第59页,共90页。
34、Jackson伪码伪码描述的程序描述的程序产生通讯地址产生通讯地址产生姓名产生姓名产生准考证号产生准考证号处理考生记录处理考生记录 seq分析考生记录分析考生记录iter until文件结束文件结束从输入文件中各读一条记录从输入文件中各读一条记录打开两个输入文件打开两个输入文件产生新文件产生新文件 seq产生考分产生考分生成一条新记录生成一条新记录将新记录写入输出文件将新记录写入输出文件从输入文件中各读一条记录从输入文件中各读一条记录处理考生记录处理考生记录 end关闭全部文件关闭全部文件停止停止产生新文件产生新文件 end 分析考生记录分析考生记录end第60页,共90页。6.4 程序复杂度
35、的定量度量程序复杂度的定量度量 利用软件设计的基本原理和概念可以定性利用软件设计的基本原理和概念可以定性的衡量软件模块的质量。但定量的度量程序复杂程度的的衡量软件模块的质量。但定量的度量程序复杂程度的方法很有价值:方法很有价值:估算程序中软件故障的数量;估算程序中软件故障的数量;估算软件开发的工作量;估算软件开发的工作量;比较两个不同的设计或两个不同算法比较两个不同的设计或两个不同算法 的优劣的优劣;作为模块规模的精确上限。作为模块规模的精确上限。程序定量度量方法是一个有待进一步研究的重要程序定量度量方法是一个有待进一步研究的重要领域。领域。第61页,共90页。1)McCabe 方法方法程序图
36、程序图 把程序流程图中每个处理符号都退化成一个把程序流程图中每个处理符号都退化成一个点,原来连接不同处理符号的箭头变成连接不同点的点,原来连接不同处理符号的箭头变成连接不同点的有向弧,这样得到的有向图就称为有向弧,这样得到的有向图就称为流图流图.程序图仅仅描程序图仅仅描述程序内部的控制流程,完全不表现对数据的具体操作以述程序内部的控制流程,完全不表现对数据的具体操作以及分支或循环的具体条件。及分支或循环的具体条件。入口点入口点:程序图中开始点后面的那个节点。:程序图中开始点后面的那个节点。出口点出口点:程序图中停止点前面的那个节点。:程序图中停止点前面的那个节点。用用McCabe方法度量得出的
37、结果称为程序的环形复杂度。方法度量得出的结果称为程序的环形复杂度。程序的环形复杂度程序的环形复杂度=强连通图中线性无关的有向环强连通图中线性无关的有向环的个数。的个数。第62页,共90页。2)环形复杂度的计算方法)环形复杂度的计算方法 在一个强连通的有向图中,线性无关环的在一个强连通的有向图中,线性无关环的 个数由个数由以下公式确定:以下公式确定:V(G)=m n+2 其中:其中:V(G)-有向图有向图 G 中的环数。中的环数。m-有向图有向图 G 中的弧数。中的弧数。n-有向图有向图 G 中的节点数。中的节点数。流图中的区域数等于环形复杂度。流图中的区域数等于环形复杂度。流图的流图的环形复杂
38、度环形复杂度V(G)P1 p表示流图中的判定结点的个数表示流图中的判定结点的个数第63页,共90页。K=0 L=0TOTAL=0输入输入ADo while TOTAL 1000 and A 0A0TOTAL=TOTAL+AK=K+1输入输入AL=L+1停止停止bcdefghik输出输出K,L,TOTALjbcdefghjikV(G)=11-10+2=311 条弧条弧10 个节点个节点第64页,共90页。3)环形复杂度的用途:环形复杂度的用途:程序的环形复杂度与程序控制流的复杂程度,也就程序的环形复杂度与程序控制流的复杂程度,也就是与程序结构的复杂程度有关。程序内分支数或循环个是与程序结构的复杂
39、程度有关。程序内分支数或循环个数增加时,环形复杂度就增加,因此它是对测试难度的数增加时,环形复杂度就增加,因此它是对测试难度的一种度量,也能对软件最终的可靠性给出某种预测。一种度量,也能对软件最终的可靠性给出某种预测。McCabe 发现:环形复杂度高的程序往往是最发现:环形复杂度高的程序往往是最困难、最容易出问题的程序。困难、最容易出问题的程序。实践表明:实践表明:模块规模以模块规模以 V(G)10 为宜。为宜。也就是说也就是说,V(G)=10 是模块规模的一个更科学更精是模块规模的一个更科学更精确的上限。确的上限。第65页,共90页。Halstesd方法方法 它根据程序中运算符和操作数的总数
40、来度量程它根据程序中运算符和操作数的总数来度量程序的复杂程度序的复杂程度.21222121nloglognnnnnnH H表示预测的程序长度表示预测的程序长度,为程序中运算符出现为程序中运算符出现的次数的次数,为程序中操作数出现的次数为程序中操作数出现的次数,为程序长为程序长度度.实践证明实践证明,预测的长度预测的长度 与实际的长度与实际的长度 非常接近非常接近.1n2n21nnnnnH第66页,共90页。6.5 详细设计说明书详细设计说明书引言引言程序系统的组织结构程序系统的组织结构关键程序的设计说明关键程序的设计说明第67页,共90页。详细设计说明书规格详细设计说明书规格第68页,共90页
41、。例例1第69页,共90页。例例2第70页,共90页。例例3第71页,共90页。填空题填空题 1详细设计阶段主要完成的任务是详细设计阶段主要完成的任务是。2软件的详细设计可以采用软件的详细设计可以采用、三种形式的描述工具表示模块的处理过程。三种形式的描述工具表示模块的处理过程。设计出模块的执行过程。设计出模块的执行过程。图、表、过程设计语言图、表、过程设计语言3 3JacksonJackson方法可以实现从方法可以实现从中推导出中推导出程序结构程序结构 数据结构数据结构 第72页,共90页。4.程序流程图称程序流程图称,包括三个基本的成分:包括三个基本的成分:,。5.为了实现使用程序流程图描述
42、结构化程序,为了实现使用程序流程图描述结构化程序,必须限制程序流程图只使用以下五种基本控制结构必须限制程序流程图只使用以下五种基本控制结构 、。6.PAD图是一种描述程序逻辑结构的图形工具,图是一种描述程序逻辑结构的图形工具,这种图形由程序流程图演化而来,它把程序的结构这种图形由程序流程图演化而来,它把程序的结构表示成表示成结构。结构。程序框图程序框图 加工处理步骤加工处理步骤 逻辑条件逻辑条件 控制流向控制流向顺序型顺序型 选择型选择型 先判定(先判定(whilewhile)型循环)型循环 后判定(后判定(untiluntil)型循环)型循环 多情况(多情况(casecase)型选择)型选择
43、二维树型二维树型第73页,共90页。7.7.过程设计语言属于一种过程设计语言属于一种,是一种描述,是一种描述 的语言。的语言。8.Jackson8.Jackson方法简称方法简称JSDJSD,是一种典型的,是一种典型的的设计方法。的设计方法。面向数据结构面向数据结构伪码伪码 模块算法设计及处理细节模块算法设计及处理细节第74页,共90页。1软件详细设计阶段的任务是软件详细设计阶段的任务是()。A.算法设计算法设计 B.功能设计功能设计 C.调用关系设计调用关系设计 D输入输入/输出设计输出设计 选择题选择题2软件详细设计阶段主要采用的工具是软件详细设计阶段主要采用的工具是()A.DFD BPA
44、DC.DD DSA AB第75页,共90页。3.软件详细设计阶段采用自左向右的二维图形软件详细设计阶段采用自左向右的二维图形结构描述算法的是结构描述算法的是().AIPO BJSP CPAD DJSD C4软件详细设计阶段的任务是软件详细设计阶段的任务是()。A.确定程序文件名确定程序文件名 B.确定模块的算法确定模块的算法 C.确定变量名确定变量名 D确定使用的语言确定使用的语言 B第76页,共90页。5.结构化程序设计采用的思想是结构化程序设计采用的思想是()。A.筛选法筛选法 B逐步求精法逐步求精法 C.迭代法迭代法 D递归法递归法 B6.软件详细设计阶段属于软件生存周期的软件详细设计阶
45、段属于软件生存周期的()阶段。阶段。A.需求分析需求分析 B软件设计软件设计 C编码编码 D软件维护软件维护 B第77页,共90页。7.以语言形式描述模块算法的是以语言形式描述模块算法的是()。A.PAD B.程序流程图程序流程图 C.PDL D.盒图盒图 C8、为了使程序能在不同的计算机上运行,、为了使程序能在不同的计算机上运行,程序应当具有较好的()程序应当具有较好的()A.可移植性可移植性 B可重用性可重用性 C.可维护性可维护性 D可适用性可适用性 A第78页,共90页。9、下列属于功能性注释的是、下列属于功能性注释的是()。A.说明模块的用处和功能的注释说明模块的用处和功能的注释 B
46、.说明数据的名称和用处的注释说明数据的名称和用处的注释C.说明程序段的注释说明程序段的注释D.说明程序开发背景的注释说明程序开发背景的注释 C第79页,共90页。10.下面对提高程序编码效率没有影响的是下面对提高程序编码效率没有影响的是()。A.选择良好的设计方法选择良好的设计方法 B选择良好的算法选择良好的算法 C.选择良好的数据结构选择良好的数据结构 D变量名的使用变量名的使用 D第80页,共90页。11.11.软件详细设计的主要任务是确定每个模块的()软件详细设计的主要任务是确定每个模块的()A.A.功能功能 B.B.外部接口外部接口 C.C.算法和使用的数据结构算法和使用的数据结构 D
47、.D.编程实现编程实现12.12.下面关于下面关于PDLPDL语言不正确的说法是()语言不正确的说法是()A.PDLA.PDL的外层语法必须符合一般程序设计语言的外层语法必须符合一般程序设计语言 常用的语法规则常用的语法规则 B.PDLB.PDL是一种伪码是一种伪码 C.PDLC.PDL只是描述加工的具体实现只是描述加工的具体实现 D.PDLD.PDL是描述处理过程怎么做是描述处理过程怎么做13.PAD13.PAD图在()可以大大提高开发效率图在()可以大大提高开发效率 A.A.系统分析系统分析 B.B.自动分析数据自动分析数据 C.C.软件的自动化生成软件的自动化生成 D.D.测试软件测试软
48、件CCC第81页,共90页。14.14.下列工具在软件详细设计过程中不常用的是()下列工具在软件详细设计过程中不常用的是()A.PDL B.NSA.PDL B.NS图图 C.DFDC.DFD图图 D.PADD.PAD图图15.Jackson15.Jackson方法是软件设计中用到的一种常用的设计方法是软件设计中用到的一种常用的设计 方法,使用方法,使用JacksonJackson方法可以实现()。方法可以实现()。A.A.从模块结构中导出数据结构从模块结构中导出数据结构 B.B.从模块结构中导出程序结构从模块结构中导出程序结构 C.C.从数据流图中导出初始的结构图从数据流图中导出初始的结构图
49、D.D.从结构图导出程序结构从结构图导出程序结构C CD D第82页,共90页。应用题应用题begin s1;if x5 then s2 else s3;while yO do begin if z3 then s4 else s5;if w0 s6;s7;end s8;if u0 then s9;s10;end1.将下面的伪码表示转换为将下面的伪码表示转换为PAD图图 第83页,共90页。1.答案第84页,共90页。3.将下图所示的将下图所示的PAD图转换为伪码表示。图转换为伪码表示。第85页,共90页。while A do if x0 then x1 else x2;if y0 then
50、begin y1;if z0 then z1 else z2;end else y2;y3;end;3.答案答案第86页,共90页。4.以下是两个程序流程图,试分别用以下是两个程序流程图,试分别用NS图图和和PAD表示,并计算它们的表示,并计算它们的McCabe复杂性复杂性度量。度量。第87页,共90页。4.答案答案对应的对应的NS图如下:图如下:第88页,共90页。对应的对应的PAD图如下:图如下:McCabe复杂性度量都为复杂性度量都为3。V(G)=m n+2第89页,共90页。作业作业1.1.简要叙述简要叙述NSNS图具有的特点图具有的特点2.2.简要叙述简要叙述PADPAD图具有的特点