第6章详细设计_第1页
第6章详细设计_第2页
第6章详细设计_第3页
第6章详细设计_第4页
第6章详细设计_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

1、第第6章章 详细设计详细设计 目标目标:确定如何具体实现所要求的系统。:确定如何具体实现所要求的系统。不是具体编写程序,而是设计程序的不是具体编写程序,而是设计程序的“蓝蓝图图”。 详细设计的结果决定最终程序代码的详细设计的结果决定最终程序代码的质量。质量。详细设计阶段的目的与任务详细设计阶段的目的与任务目的目的: : 为软件结构为软件结构图图 ( (SC)SC) 中的每一个中的每一个模块确定采用的算法模块确定采用的算法和模块内数据结构,和模块内数据结构,用某种选定的表达工用某种选定的表达工具给出清晰的描述。具给出清晰的描述。主要主要任务任务为每一模块确定算法为每一模块确定算法确定每一模块使用

2、的数据结构确定每一模块使用的数据结构确定模块的外部接口和用户界面确定模块的外部接口和用户界面 E.W.Dijkstra 最早提出结构程序设计:程序最早提出结构程序设计:程序质量与程序中包含的质量与程序中包含的Goto语句的数量成反比语句的数量成反比(1965)。)。 1966 ,Bohm和和Jacopini, 证明了只用证明了只用“顺顺序序”、“选择选择”、“循环循环”控制结构就能实现任控制结构就能实现任何单入口单出口程序。何单入口单出口程序。6.1 结构程序设计结构程序设计 经典定义:如果一个程序的代码块仅仅通过顺经典定义:如果一个程序的代码块仅仅通过顺序、选择和循环这序、选择和循环这3 3

3、种基本控制结构进行连接,种基本控制结构进行连接,而且每个代码块只有一个入口和一个出口,则而且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。称这个程序是结构化的。 比较全面的定义:结构程序设计是尽可能少用比较全面的定义:结构程序设计是尽可能少用GOTOGOTO语句的程序设计方法,最好仅仅在检测出语句的程序设计方法,最好仅仅在检测出错误时才使用错误时才使用GOTOGOTO语句,而且应该总是使用前语句,而且应该总是使用前向的向的GOTOGOTO语句。语句。 结构化程序设计主要原则结构化程序设计主要原则 使用语言中的顺序、选择、重复等有限的基本使用语言中的顺序、选择、重复等有限的基本控制结

4、构表示程序逻辑控制结构表示程序逻辑 选用的控制结构只准许有一个入口和一个出口选用的控制结构只准许有一个入口和一个出口 复杂结构应该用基本控制结构进行组合嵌套来复杂结构应该用基本控制结构进行组合嵌套来实现实现 严格控制严格控制GOTOGOTO语句,仅在下列情形才可使用:语句,仅在下列情形才可使用: 用一个非结构化的程序设计语言去实现一个用一个非结构化的程序设计语言去实现一个结构化的结构化的 构造。构造。 在某种可以改善而不是损害程序可读性的情在某种可以改善而不是损害程序可读性的情况下况下 三种基本控制结构三种基本控制结构1)顺序结构顺序结构:相当于:相当于“A、B” AB(a)顺序结构顺序结构2

5、)选择结构选择结构 相当于相当于“If exp then A else B endif ” (b)IF_THEN_ELSE型选择(分支)结构型选择(分支)结构ABexpTF3)循环结构循环结构:相当于:相当于“While exp do A” (c)DO_WHILE型循环结构型循环结构AexpTFAexpTF或或 理论上,最基本的控制结构只有两种:顺序、理论上,最基本的控制结构只有两种:顺序、循环结构(选择结构可由其两者构造)。循环结构(选择结构可由其两者构造)。 学界认识到,不是简单去掉学界认识到,不是简单去掉Goto语句的问题,语句的问题,而是要创立一种新的程序设计方法。而是要创立一种新的程

6、序设计方法。 结构化程序设计(结构化程序设计(IBM率先成功运用)。率先成功运用)。结构程序设计结构程序设计: 一种设计程序的技术,它采用自顶向一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口下逐步求精的设计方法和单入口单出口的控制结构。的控制结构。使用结构程序设计技术的好处使用结构程序设计技术的好处:1)提高软件开发工程的成功率和生产率;)提高软件开发工程的成功率和生产率;2)系统有清晰的层次结构,容易阅读理解;)系统有清晰的层次结构,容易阅读理解;3)单入口单出口的控制结构,容易诊断纠正;)单入口单出口的控制结构,容易诊断纠正;4)模块化可以使得软件可以重用;)模块化可以

7、使得软件可以重用;5)程序逻辑结构清晰,有利于程序正确性证明。)程序逻辑结构清晰,有利于程序正确性证明。1)UNTIL循环结构循环结构 相当于相当于“Repeat A Until exp” 其他常用的其他常用的控制结构控制结构 (a)DO_UNTIL型循环结构型循环结构AexpFT2)多分支结构多分支结构 相当于相当于“Case I of I=1:C1; I=2:C2; I=3:C3; ; I=n:Cn” CnC3C1C2(b)(b)多分支结构多分支结构I=? start 1 A 2 C B 3 D E stop 结构化 D F T T T F F start 1 A 2 C B 3 D E

8、stop 非结构化 F T T T F F 经典的结构程序设计经典的结构程序设计:只允许使用顺序、:只允许使用顺序、IF_THEN_ELSE选择和选择和DO_WHILE循环;循环;扩展的结构程序设计扩展的结构程序设计:除了三种基本控制结构,:除了三种基本控制结构,还使用还使用DO_CASE和和DO_UNTIL循环;循环;修正的结构程序设计修正的结构程序设计:除了三种基本控制结构:除了三种基本控制结构和两种扩充结构,还使用和两种扩充结构,还使用BREAK等结构。等结构。人机界面设计是人机界面设计是接口设计接口设计的一个组成部分。的一个组成部分。人机界面的设计质量,直接影响用户对软件产人机界面的设

9、计质量,直接影响用户对软件产品的评价,从而影响软件产品的竞争力和寿命,品的评价,从而影响软件产品的竞争力和寿命,因此,必须对人机界面设计给予足够重视。因此,必须对人机界面设计给予足够重视。近年来,人机界面在系统中所占的比例越来越近年来,人机界面在系统中所占的比例越来越大,在个别系统中人机界面的设计工作量甚至占大,在个别系统中人机界面的设计工作量甚至占总设计量的一半以上。总设计量的一半以上。6.2 人机界面设计人机界面设计用户界面应具备的特性用户界面应具备的特性 可使用性可使用性如:使用简单、界面中所用术语应该标准化,并保持一致如:使用简单、界面中所用术语应该标准化,并保持一致性;拥有性;拥有H

10、elpHelp功能;较快的系统响应速度和较低的系统功能;较快的系统响应速度和较低的系统开销;具有容错能力开销;具有容错能力 灵活性灵活性能满足不同用户的要求;可以制定和修改界面方式;能提能满足不同用户的要求;可以制定和修改界面方式;能提供各类的系统响应信息,如反馈、提示、帮助、报错等;供各类的系统响应信息,如反馈、提示、帮助、报错等;与其他软件系统应有标准的界面与其他软件系统应有标准的界面 复杂性复杂性在完成预定功能的前提下,用户界面越简单越好在完成预定功能的前提下,用户界面越简单越好 可靠性可靠性用户界面能保证用户正确、可靠地使用系统,保证有关程用户界面能保证用户正确、可靠地使用系统,保证有

11、关程序和数据的安全性序和数据的安全性6.2.1 设计问题设计问题设计人机界面中的设计人机界面中的4 4个问题:个问题: 1 1)系统响应时间)系统响应时间 2 2)用户帮助设施)用户帮助设施 3 3)出错信息处理)出错信息处理 4 4)命令交互)命令交互 长度和易变性长度和易变性p部分和全部部分和全部p 用户怎样请求帮助用户怎样请求帮助? p 怎样显示帮助信息怎样显示帮助信息?p用户怎样返回到正用户怎样返回到正常的交互方式中常的交互方式中?有有两种选择:屏幕上两种选择:屏幕上的返回按钮和功能的返回按钮和功能键。键。p 怎样组织帮助信息怎样组织帮助信息?快捷键快捷键6.2.2 设计过程设计过程用

12、户界面设计是一个迭代的过程。用户界面设计是一个迭代的过程。6.2.3 人机界面设计指南人机界面设计指南 1. 一般交互指南;一般交互指南; 2. 信息显示指南;信息显示指南; 3. 数据输入指南。数据输入指南。一般一般交互界面交互界面1 1、基本、基本设计指南设计指南 保持一致性;保持一致性; 提供有意义的反馈和帮助信息;提供有意义的反馈和帮助信息; 执行较大破坏性动作之前要求用户确认;执行较大破坏性动作之前要求用户确认; 允许犯错误,允许中断或撤销绝大多数操作;允许犯错误,允许中断或撤销绝大多数操作; 减少两次操作之间必须记忆的信息量;减少两次操作之间必须记忆的信息量; 按功能对动作分类,并

13、据此设计屏幕布局;按功能对动作分类,并据此设计屏幕布局; 用简单动词或短语作为命令名。用简单动词或短语作为命令名。交互交互界面的基本类型界面的基本类型 菜单界面菜单界面按显示形象分类:正文菜单、图标菜单、正文图标混合菜单按显示形象分类:正文菜单、图标菜单、正文图标混合菜单 按屏幕位置和操作风格分类:固定、浮动、下拉式、嵌入式按屏幕位置和操作风格分类:固定、浮动、下拉式、嵌入式 对话框对话框 对话形式:必须回答式、无需回答式、警告式对话形式:必须回答式、无需回答式、警告式 对话实现方式:标准对话、定做式对话对话实现方式:标准对话、定做式对话 其他其他 图像图像 窗口窗口2 2、信息显示、信息显示

14、界面界面 界面显示的基本元素界面显示的基本元素数据、字符、图形、报告数据、字符、图形、报告 基本设计指南基本设计指南可用多种不同方式显示信息:可用多种不同方式显示信息: 如用图形表示数据;如用图形表示数据; 只显示与当前工作内容有关的信息;只显示与当前工作内容有关的信息; 使用一致的标记、缩写和可预知的颜色;使用一致的标记、缩写和可预知的颜色; 使用窗口分隔不同类型的信息;使用窗口分隔不同类型的信息; 使用模拟方式表示信息。使用模拟方式表示信息。3 3、数据输入、数据输入界面界面基本设计指南基本设计指南尽量减少用户输入的动作尽量减少用户输入的动作 保持信息显示和数据输入的一致性保持信息显示和数

15、据输入的一致性允许用户自定义输入,如键盘输入或鼠标输入允许用户自定义输入,如键盘输入或鼠标输入 当前动作语境中,不适用的命令不起作用当前动作语境中,不适用的命令不起作用让用户控制交互流,如用户能跳过不必要的动作让用户控制交互流,如用户能跳过不必要的动作消除冗余的输入消除冗余的输入分类分类 图形工具图形工具 程序流程图(程序流程图(FCFC:Flow ChartFlow Chart;PFCPFC:Program Flow Program Flow ChartChart) 盒图(盒图(NSNS:NassiNassi 和和 ShneidermanShneiderman) 问题分析图(问题分析图(PA

16、DPAD:Program Analysis DiagramProgram Analysis Diagram) 表格工具表格工具 判定表判定表 判定树判定树 语言工具语言工具 过程设计语言(过程设计语言(PDLPDL:Process Design LanguageProcess Design Language)6.3 过程设计的工具过程设计的工具 6.3.1 程序流程图程序流程图 程序流程图程序流程图:是一种描述程序的控制结:是一种描述程序的控制结构流程和指令执行情况的有向图。构流程和指令执行情况的有向图。 历史悠久、使用广泛、直观描绘控制流历史悠久、使用广泛、直观描绘控制流程、便于初学者掌握。

17、程、便于初学者掌握。2)程序流程图中用箭头代表控制流,因此程)程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。序设计的精神,随意转移控制。3)程序流程图不易表示数据结构。)程序流程图不易表示数据结构。程序流程图的程序流程图的缺点缺点:1)程序流程图本质上不是逐步求精的好工具,)程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。而不去考虑程序的全局结构。6.3.2 盒图(盒图(N-S图)图) 出于要有一种不允许违背结构程

18、序设计精神的出于要有一种不允许违背结构程序设计精神的图形工具的考虑,图形工具的考虑,NassiNassi和和SchneidermanSchneiderman提出了提出了盒图,又称为盒图,又称为N-SN-S图。图。盒图没有箭头,因此不允许盒图没有箭头,因此不允许随意转移控制随意转移控制。坚。坚持使用盒图作为详细设计的工具,可使程序员逐持使用盒图作为详细设计的工具,可使程序员逐步养成用步养成用结构化的方式结构化的方式思考问题和解决问题的习思考问题和解决问题的习惯。惯。盒图的特点有:盒图的特点有: 1)功能域明确,可以从盒图上一眼就看出来;)功能域明确,可以从盒图上一眼就看出来; 2)不可能任意转移

19、控制;)不可能任意转移控制; 3)很容易确定局部和全程数据的作用域;)很容易确定局部和全程数据的作用域; 4)很容易表现嵌套关系,也可以表示模块的层)很容易表现嵌套关系,也可以表示模块的层次结构。次结构。 缺点:缺点:u 当程序内嵌套层数增多时,内层方块越画越小当程序内嵌套层数增多时,内层方块越画越小,增加了画图的困难,并使图形的清晰性受到,增加了画图的困难,并使图形的清晰性受到影响。影响。ABC条件条件FTElseBThenACase条件条件Case1ACase2BCasenN循环条件循环条件循环条件循环条件Do-While部部分分Do-Until部分部分Aa.顺序结构顺序结构b.选择结构选

20、择结构c.多分支结构多分支结构d.当型循环结构当型循环结构e.直到型循环结构直到型循环结构f.调用子程序调用子程序A图图6.4 盒图的基本符号盒图的基本符号N-SN-S图的嵌套定义形式图的嵌套定义形式 PAD(Problem Analysis Diagram)是问题分)是问题分析图。析图。 日立公司发明和推广(日立公司发明和推广(19731973)。用二维树形结)。用二维树形结构的图来表示程序的控制流,控制流程自上而下,构的图来表示程序的控制流,控制流程自上而下,从左往右地执行。从左往右地执行。 它即克服了传统的流程图不能清晰表现程序结它即克服了传统的流程图不能清晰表现程序结构的缺点,又不像构

21、的缺点,又不像N-S图那样受到把全部程序约束图那样受到把全部程序约束在一个方框内的限制,这就是其优势所在。在一个方框内的限制,这就是其优势所在。6.3.3 PAD图图P1P2WHILE CUNTIL CPPP2P1CP1P2PnX=L1L2Lndefa.顺序结构顺序结构b.当型循环结构当型循环结构c.直到型循环结构直到型循环结构d.选择结构选择结构e.多分支结构多分支结构f.语句标号语句标号g.定义定义图图6.5 PAD图的基本符号图的基本符号PAD图的优点:图的优点:1)使用表示结构化控制结构的)使用表示结构化控制结构的PAD符号所设计符号所设计出来的程序必然是结构化程序;出来的程序必然是结

22、构化程序;2)PAD图所描绘的程序结构十分清晰。图所描绘的程序结构十分清晰。 图中最左面的竖线是程序的主线,即第一层结图中最左面的竖线是程序的主线,即第一层结构。随着程序层次的增加,构。随着程序层次的增加,PAD图逐渐向右延图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数;图中竖线的总条数就是程序的层次数; 3)用)用PAD图表现程序,通俗易懂,程序从图中图表现程序,通俗易懂,程序从图中最左竖线上端的结点开始执行,自上而下,最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点;从左向右顺序执行

23、,遍历所有结点;4)容易将)容易将PAD图转换成高级语言源程序,这图转换成高级语言源程序,这种转换可以用软件工具自动完成;种转换可以用软件工具自动完成;5)可用于表示程序逻辑,也可用于描绘数据)可用于表示程序逻辑,也可用于描绘数据结构;结构;6)PAD图的符号支持自顶向下、逐步求精的图的符号支持自顶向下、逐步求精的方法。方法。例子:例子: P1P2UNTIL C2P7P4P3Cdefa.初始的初始的PAD图图图图6.6 PAD图例子图例子b.使用使用def符号细化处理框符号细化处理框P2P5P2P8C1UNTIL C2P9P10P6STARTIF p THENWHITE q DOfEND DO

24、ELSEBLOCKgnEND BLOCKEND IFSTOP 判定表能够清晰地表示复杂的条件组合与判定表能够清晰地表示复杂的条件组合与应做的动作之间的对应关系。应做的动作之间的对应关系。 如果数据流处理时需要依赖多个逻辑条件如果数据流处理时需要依赖多个逻辑条件的取值,用判定表来描述比较合适。的取值,用判定表来描述比较合适。6.3.4 判定表判定表判定表由四部分组成:判定表由四部分组成: 左上部列出所有左上部列出所有条件条件 左下部是所有可能做的左下部是所有可能做的动作动作 右上部表示各种右上部表示各种条件组合条件组合 右下部是和每种条件组合相右下部是和每种条件组合相对应的动作对应的动作 判定表

25、右半部的每一列实质判定表右半部的每一列实质上是一条规则,规定了与特上是一条规则,规定了与特定的条件组合相对应的动作。定的条件组合相对应的动作。建立判定表的步骤建立判定表的步骤 列出与一个具体过程列出与一个具体过程( (或模块或模块) )有关的所有处有关的所有处理。理。 列出过程执行期间的所有条件列出过程执行期间的所有条件( (或所有判断或所有判断) )。 将特定条件取值组合与特定的处理相匹配,将特定条件取值组合与特定的处理相匹配,消去不可能发生的条件取值组合。消去不可能发生的条件取值组合。 将右部每一纵列规定为一个处理规则,即对将右部每一纵列规定为一个处理规则,即对于某一条件取值组合将有什么动

26、作。于某一条件取值组合将有什么动作。假设某航空公司规定,乘客可以免费托运重量不超假设某航空公司规定,乘客可以免费托运重量不超过过30kg的行李,当行李重量超过的行李,当行李重量超过30kg时,对头等时,对头等舱的国内乘客超重部分每公斤收费舱的国内乘客超重部分每公斤收费4元,对其他舱元,对其他舱的国内乘客超重部分每公斤收费的国内乘客超重部分每公斤收费6元,对国外乘客元,对国外乘客超重部分每公斤收费比国内乘客多一倍,对残疾乘超重部分每公斤收费比国内乘客多一倍,对残疾乘客超重部分每公斤收费比正常乘客少一半。客超重部分每公斤收费比正常乘客少一半。 123456789国内乘客国内乘客 TTTTFFFF头

27、等舱头等舱 TFTFTFTF残疾乘客残疾乘客 FFTTFFTT行李重量行李重量W30 TFFFFFFFF 免费免费 (W-30)2 (W-30)3 (W-30)4 (W-30)6 (W-30)8 (W-30)12 判定树判定表的变种,也能清晰地表示复杂的判定树判定表的变种,也能清晰地表示复杂的条件组合与应做的动作之间的对应关系。条件组合与应做的动作之间的对应关系。优点:它的形式简单到不需要任何说明,一眼优点:它的形式简单到不需要任何说明,一眼就可以看出其含义,因此易于掌握和使用。就可以看出其含义,因此易于掌握和使用。多年来判定树一直受到人们的重视,是一种比多年来判定树一直受到人们的重视,是一种

28、比较常用的系统分析和设计的工具。较常用的系统分析和设计的工具。6.3.5 判定树判定树行李重量行李重量W30行李重量行李重量W30国内乘客国内乘客外国乘客外国乘客头等舱头等舱其他舱其他舱头等舱头等舱其他舱其他舱残疾乘客残疾乘客正常乘客正常乘客残疾乘客残疾乘客正常乘客正常乘客残疾乘客残疾乘客正常乘客正常乘客残疾乘客残疾乘客正常乘客正常乘客(W-30)2(W-30)4(W-30)3(W-30)6(W-30)4(W-30)8(W-30)6(W-30)12免费免费图图6.7 用判定树表示计算行李费的算法用判定树表示计算行李费的算法行李费算法行李费算法PDLPDL是一种用于描述功能模块的是一种用于描述功

29、能模块的算法设计算法设计和和加工加工细节细节的语言。称为设计程序用语言。它是一种伪的语言。称为设计程序用语言。它是一种伪码。码。伪码的语法规则分为伪码的语法规则分为“外语法外语法”和和“内语法内语法”。PDLPDL具有严格的具有严格的关键字外语法关键字外语法,用于定义控制结,用于定义控制结构和数据结构,同时它的构和数据结构,同时它的表示实际操作和条件的表示实际操作和条件的内语法内语法可使用自然语言的词汇。可使用自然语言的词汇。6.3.6 过程设计语言(过程设计语言(PDL)如:如:if I0 then 执行订单数据输入模块执行订单数据输入模块 else 报告出错信息报告出错信息 end if

30、PDL的优点的优点:1)可以作为注释直接插在源程序中间;)可以作为注释直接插在源程序中间;2)可以使用普通的正文编辑程序或文字处理)可以使用普通的正文编辑程序或文字处理系统来完成系统来完成PDL的书写和编辑工作;的书写和编辑工作;3)现在已经有一些自动处理程序可以自动地)现在已经有一些自动处理程序可以自动地把把PDL生成程序代码。生成程序代码。 PDL的缺点的缺点:不如图形工具形象直观。:不如图形工具形象直观。6.4 程序复杂度的定量度量程序复杂度的定量度量 定量度量程序复杂度的作用:定量度量程序复杂度的作用: (1)把程序的复杂程度乘以适当常数即可估把程序的复杂程度乘以适当常数即可估算出软件

31、中错误的数量以及软件开发需要用的工算出软件中错误的数量以及软件开发需要用的工作量;作量; (2)定量度量的结果可以用来比较两个不同定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;的设计或两个不同算法的优劣; (3)程序的定量的复杂程度可以作为模块规程序的定量的复杂程度可以作为模块规模的精确限度。模的精确限度。软件复杂性软件复杂性是软件度量的一个重要分支。主是软件度量的一个重要分支。主要参数有:要参数有: 规模:即总共的指令数,或源程序行数。规模:即总共的指令数,或源程序行数。 难度:通常由程序中出现的操作数的数目所决难度:通常由程序中出现的操作数的数目所决定的量来表示。定的量来表

32、示。 结构:通常用与程序结构有关的度量来表示。结构:通常用与程序结构有关的度量来表示。 智能度:即算法的难易程度。智能度:即算法的难易程度。p程序复杂性主要指程序复杂性主要指模块内程序的复杂性模块内程序的复杂性。它直。它直接关联到软件开发费用的多少,开发周期的长接关联到软件开发费用的多少,开发周期的长短和软件内部潜伏错误的多少。短和软件内部潜伏错误的多少。p减少程序复杂性,可提高软件的简单性和可理减少程序复杂性,可提高软件的简单性和可理解性,并使软件开发费用减少,开发周期缩短,解性,并使软件开发费用减少,开发周期缩短,软件内部潜藏错误减少。软件内部潜藏错误减少。p为了度量程序复杂性,要求复杂性

33、度量应满足以为了度量程序复杂性,要求复杂性度量应满足以下假设:下假设:l 对于不合理的程序,例如对于长度动态增长的对于不合理的程序,例如对于长度动态增长的程序,或者对于原则上无法排错的程序,不应程序,或者对于原则上无法排错的程序,不应当使用它进行复杂性计算;当使用它进行复杂性计算;l 如果程序中指令条数、附加存储量、计算时间如果程序中指令条数、附加存储量、计算时间增多,不会减少程序的复杂性。增多,不会减少程序的复杂性。McCabeMcCabe度量法,又称环路复杂性度量,是一种基于度量法,又称环路复杂性度量,是一种基于程序控制流的复杂性度量方法。程序控制流的复杂性度量方法。它基于一个程序模块的程

34、序图中环路的个数,因此它基于一个程序模块的程序图中环路的个数,因此计算它先要画出程序图。计算它先要画出程序图。程序图是退化的程序流程图。流程图中每个处理都程序图是退化的程序流程图。流程图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧退化成一个结点,流线变成连接不同结点的有向弧(边)。(边)。程序图仅描述程序内部的控制流程,完全不表现对程序图仅描述程序内部的控制流程,完全不表现对数据的具体操作,以及分支和循环的具体条件。数据的具体操作,以及分支和循环的具体条件。6.4.1 McCabe方法方法 流图用圆表示流图用圆表示节点节点,一个圆代表,一个圆代表一条或多条一条或多条语语句。句。 程

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

36、图符号一个圆代表一条或多条语句;一个圆代表一条或多条语句;一个顺序结构可以合并成一个结点;一个顺序结构可以合并成一个结点;汇点也是结点;汇点也是结点;一个顺序处理框序列和一个判断框可一个顺序处理框序列和一个判断框可映射成一个结点。映射成一个结点。复合条件:复合条件: 包含了一个或包含了一个或多个布尔运算符多个布尔运算符(OR、AND、NOR等)。等)。 应把复合条件应把复合条件分解为简单条件,分解为简单条件,每个条件对应一每个条件对应一个结点。个结点。2. 计算环形复杂度的方法计算环形复杂度的方法 1)环形复杂度)环形复杂度 V(G)等于流图中的区域数)等于流图中的区域数(包括图外区域);(包

37、括图外区域); 2)环形复杂度)环形复杂度 V(G)EN+2,其中,其中E是流是流图中边的条数,图中边的条数,N是结点数;是结点数; 3)环形复杂度)环形复杂度 V(G)P1,其中,其中P为流图中为流图中判定结点的数目。判定结点的数目。procedure: sort1: do while records remainread record;2: if record field 1 = 03: then process record;store in buffer;increment counter;4: else if record field 2 = 05: then reset count

38、er;6: else process record;store in file;7a: end if end if7b: end do8: end例:计算下列程序图的程序复杂度例:计算下列程序图的程序复杂度由由PDLPDL翻译成的流图翻译成的流图解:解: 方法一:程序图把平面分为方法一:程序图把平面分为4个区域,程序复个区域,程序复杂度杂度V(G)4; 方法二:边的条数方法二:边的条数E11,结点数,结点数N9,程序,程序复杂度复杂度V(G)EN24 ; 方法三:判定结点为方法三:判定结点为1、2、4点,数目为点,数目为P3个,所以个,所以V(G)P14。3. 环形复杂度的用途环形复杂度的用途

39、程序的环形复杂度取决于程序控制流的复杂程度,程序的环形复杂度取决于程序控制流的复杂程度,也即是取决于程序结构的复杂程度。也即是取决于程序结构的复杂程度。当程序内分支当程序内分支数或循环个数增加时,环形复杂度也随之增加,因数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也能对软件最此它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。终的可靠性给出某种预测。McCabe研究大量程序后发现,研究大量程序后发现,环形复杂度高的程环形复杂度高的程序往往是最困难、最容易出问题的程序。序往往是最困难、最容易出问题的程序。实践表明实践表明,模块规模以,模块规模以V(G)10为宜为宜,也就是说,也就是说,V(G)=10是模块规模的一个更科学更精确的上限。是模块规模的一个更科学更精确的上限。这种度量的缺点是这种度量的缺点是: 对于不同种类的控制流的复杂性不能区分。对于不同种类的控制流的复杂性不能区分。 简单简单IFIF语

温馨提示

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

评论

0/150

提交评论