软件工程第6章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第6章详细设计6.1结构程序设计6.2人机界面设计6.3过程设计的工具6.5程序复杂程度的度量详细设计•正确地设计每个模块的内部的处理过程;•设计的过程(流程)应该尽可能简明易懂;•详细设计阶段的任务还不是具体地编写程序;•结构化程序设计;•结构程序设计尽可能少用GOTO语句,通常在检测出错误时才使用GOTO语句。OnErrorGoToerrh:……errh:MsgBoxErr.Description结构程序设计3种基本的控制结构:•顺序•选择•循环流程图分别为图6.1(a),6.1(b)和6.1(c)。6.1结构程序设计6.13种基本的控制结构还可以使用DO-CASE型多分支结构和DO-UNTIL型循环结构。•一般交互指南•信息显示指南•数据输入指南1.一般交互指南6.2.3人机界面设计指南6.2人机界面设计(1)保持一致性。(2)提供有意义的反馈。(3)在执行有较大破坏性的动作之前要求用户确认。(4)允许取消绝大多数操作。(5)减少在两次操作之间必须记忆的信息量。(6)提高对话、移动和思考的效率。-尽量减少用户击键的次数;-设计屏幕布局时应该考虑尽量减少鼠标移动的距离;-应该尽量避免出现用户问“这是什么意思?”的情况.(7)允许犯错误。(8)按功能对动作分类,并据此设计屏幕布局。-设计者应该尽力提高命令和动作组织的“内聚性”.(9)提供对用户工作内容敏感的帮助设施。(10)用简单动词或动词短语作为命令名。2.信息显示指南(1)只显示与当前工作内容有关的信息(数据、菜单、图形)。(2)不要用数据淹没用户,应该用便于用户迅速吸取信息的方式来表示数据。(统计图表)(3)使用一致的标记、标准的缩写和可预知的颜色。(4)允许用户保持可视化的语境。(电子地图)(5)产生有意义的出错信息。(6)使用大小写、缩进和文本分组以帮助理解。(7)使用窗口分隔不同类型的信息。(8)使用“模拟”显示方式表示信息,以使信息更容易被用户提取。(9)高效率地使用显示屏。3.数据输入指南(1)尽量减少用户的输入动作。(2)保持信息显示和数据输入之间的一致性。(文字大小、颜色和位置)(3)允许用户自定义输入。(4)互应该是灵活的,并且可调整成用户最喜欢的输入方式。3.数据输入指南(5)使在当前动作语境中不适用的命令不起作用。(6)让用户控制交互流。–用户应该能够跳过不必要的动作;–改变所需做的动作的顺序(在应用环境允许的前提下);–在不退出程序的情况下从错误状态中恢复正常。(7)对所有输入动作都提供帮助。(8)消除冗余的输入。–不要要求用户指定输入数据的单位–尽可能提供默认值–绝对不要要求用户提供程序可以自动获得或计算出来的信息。程序流程图至今仍在广泛使用。6.3过程设计的工具6.3.1程序流程图图6.4盒图的基本符号6.3.2盒图(N-S图)调用子程序N-S图的嵌套定义形式•PAD是问题分析图(problemanalysisdiagram)。•1973年由日本日立公司发明。6.3.3PAD图图6.5PAD图的基本符号图6.6使用PAD图提供的定义功能来逐步求精的例子x4TFx5ighfkx1TFbx6ajx21cx323dek:例:N-S图与PAD的转换开始结束ajUntilx5iUntilx6bx1kfx4ghdefkx2de123Whilex3c一张判定表由4部分组成:•左上部列出所有条件;•左下部是所有可能做的动作;•右上部是表示各种条件组合的一个矩阵;•右下部是和每种条件组合相对应的动作。6.3.4判定表Ⅰ条件Ⅲ操作Ⅱ条件组合矩阵Ⅳ动作假设某航空公司规定:乘客可以免费托运重量不超过30kg的行李。当行李重量超过30kg时:•对头等舱的国内乘客超重部分每公斤收费4元•对其他舱的国内乘客超重部分每公斤收费6元•对外国乘客超重部分每公斤收费比国内乘客多一倍,•对残疾乘客超重部分每公斤收费比正常乘客少一半。用判定表可以清楚地表示与上述每种条件组合相对应的计算行李费的算法。(P128)国内乘客TTTTFFFF头等仓TFTFTFTF残疾乘客FFTTFFTT行李重量30TFFFFFFFF免费√(W-30)*2√(W-30)*3√(W-30)*4√√(W-30)*6√√(W-30)*8√(W-30)*12√当数据元素的值多于两个时(例如,6.3.4例子中假设对机票需细分为头等舱、二等舱和经济舱等多种级别时),判定表的简洁程度也将下降。6.3.5判定树–表示复杂的条件组合与应做的动作之间的对应关系;–判定树的简洁性不如判定表,但易理解•经常出现同一个值重复写多遍;•且叶端重复次数急剧增加.–由于判定树的分枝次序对于最终画出的判定树的简洁程度有较大影响•所以选择哪一个条件作为第一个分枝是至关重要的.图6.7用判定树表示计算行李费的算法6.3.6过程设计语言PDL(ProgramDesignLanguage)应该具有下述特点:(1)关键字的固定语法,三种控制结构。为了使结构清晰和可读性好,通常在控制结构的头和尾都有关键字,例如,if...fi(或endif).(2)自然语言的自由语法,描述处理。(3)数据说明。纯量、数组、链表或层次等数据结构。(4)模块定义和调用的技术,应该提供各种接口描述模式。(5)可以作为注释直接插在源程序中间。1.declare〈数据名〉as〈限定词〉2.子程序结构//functionprocedure〈子程序名interface〈参数表〈分程序或PDL语句returnend〈子程序名〉3.begin〈分程序名〈PDL语句end〈分程序名〉4.if〈条件〉then〈PDL语句〉else〈PDL语句endif5.WHILEloopwhile〈条件〈PDL语句endloop6.UNTILloopuntil〈条件〈PDL语句组endloop7.CASEcase〈选择因子〉of〈标号〉{,〈标号〉}:〈PDL……endcase8.输入/printreaddisplayinputoutput等PDL:beginexecuteprocessaloopuntilconditionx8Begin//executeprocessbifconditionx1thenbegin//executeprocessfifconditionx6thenloopuntilconditionx7executeprocessiendloopelsebegin//executeprocessgexecuteprocesshend//abx1x2x5fcx3x4deghix6x7x8jendifend//elsecasexiofx2:loopwhileconditionx5executeprocesscendloopx3:executeprocessdx4:executeprocesseendcaseendifend//endloopexceuteprocessjendabx1x2x5fcx3x4deghix6x7x8j6.5程序复杂程度的度量6.5.1McCabe方法1.流图McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度。一个结点(圆)代表一条或多条语句(几个顺序执行语句);一个顺序语句和一个菱形判断框可以对应一个结点;一条边必须终止于一个结点(即使该结点不表示任何结点);当包含复合条件时,需要进行分解。图6.16由PDL翻译成的流图图6.17由包含复合条件的PDL映射成的流图2.计算环形复杂度的方法环形复杂度定量度量程序的逻辑复杂度。有了描绘程序控制流的流图之后,可以用下述3种方法中的任何一种来计算环形复杂度。(1)流图中的区域数等于环形复杂度。(2)流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。(3)流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。3.环形复杂度的用途McCabe研究大量程序后发现,环形复杂度高的程序往往是最困难、最容易出问题的程序。实践表明,模块规模以V(G)≤10为宜,也就是说,V(G)=10是模块规模的一个更科学更精确的上限。

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功