资源预览内容
第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
第9页 / 共40页
第10页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第6章 详细设计 (Program Design Coding)本章主要介绍在详细设计中采用的结构程序设计技 术、图形工具、面向数据结构的设计方法以及程序复杂 性的度量方法。详细设计的目的:是为软件模块结构中的每一模块确定算法和数 据结构,用某种表达工具给出清晰的描述。详细设计的任务: 过程设计,即设计软件体系结构中所包含的每个模块的实现算 法。 数据设计,即设计软件中所需要的数据结构。 接口设计,即设计软件内部各模块之间、软件与协作系统之间 以及软件与使用者之间的通信方式。1. 结构程序设计 结构程序设计的特点: 程序中使用三种基本控制结构 程序应当单入口、单出口 GOTO语句的限制使用详细设计的结果基本上决定了最终的程序代码的质量,因此其目标不仅仅是逻辑上正确地实现每个模块的功能,更 重要的是设计出的处理过程应该尽可能简明易懂,为使过程 描述清晰易读、正确、可靠,须采用结构程序设计技术。2. 人机界面设计 人机界面设计是接口设计的一个重要组成部分。对人机界面的评价在很大程度上是由人的主观因素决定,所 以,使用基于原型的系统化的设计策略是成功地设计人机界面 的关键。1、应该考虑的设计问题(1)系统响应时间系统响应时间指从用户完成某个控制动作到软件给出预期响 应之间的这段时间。 长度 易变性(2)用户帮助实施2. 人机界面设计 集成的帮助实施 附加的帮助实施(3)出错信息处理 信息应该用用户可以理解的术语描述问题 信息应该提供有助于从错误中恢复的建设性意见 信息应该指出错误可能导致的负面后果 信息应该伴随着听觉或视觉上的提示 信息不能带有职责色彩(4)命令交互 窗口菜单交互方式 命令行交互方式2、人机界面设计过程2. 人机界面设计 保持一致性 提供有意义的反馈 在执行有较大破坏性的动作之前要求确认 允许取消绝大多数操作 减少在两次操作之间必须记忆的信息量 提高对话、鼠标移动和思考的效率 允许用户犯错误 按功能对动作分类设计屏幕布局 提供对工作内容敏感的帮助实施 用简单动词或动词短语作命令名人机界面设计是一个迭代的过程,即通常先创建设计模型,再用原型 实现这个设计模型,并由用户试用和评估,然后根据用户的意见进行修 改,直至满意为止。 3、人机界面设计指南 (1)一般交互指南2. 人机界面设计 只显示与当前工作有关的信息 用便于用户迅速吸取信息的方式来显示 使用一致的标记、标准的缩写和可预知的颜色 允许用户保持可视化的语境 产生有意义的出错信息 使用大小写、缩进和文本分组来帮助理解 使用窗口分隔不同类型的信息 使用模拟方式显示信息 高效率地使用显示屏(2)信息显示指南(3)数据输入指南 尽量减少用户的输入动作 保持信息显示和数据输入之间的 一致性 允许用户自定义输入 交互应该是灵活的 使在当前动作语境中不使用的命 令不起作用 让用户控制交互 对所有输入动作提供帮助 消除冗余的输入3. 过程设计的工具 1、程序流程图(Program Flow Chart)5种基本控制结构:描述模块程序处理过程的工具就是过程设计的工具,利用这 些工具指明控制流程、处理功能、数据组织及其实现细节,从而 在编码阶段可以直接地将其描述翻译成程序代码。(1)顺序结构(sequential structure)(2)选择结构(selective structure)ABPBAFT(3)先判定型循环结构 (while-loop structure)TPSF(4)后判定型循环结构(until- loop structure)FSTP(5)多情况选择(case structure)TA1 FP=1TA2 FP=2TAn FP=n3. 过程设计的工具 任何复杂的程序流程图都应由以 上5种基本结构组合而成。 ISO 认可的规定符号:P.125 图 6.3 优点:对控制流程的描述直观清晰,易于使用,能随意表达 任何程序的逻辑结构。 缺点: 不易反映逐步求精的过程,往往反映的是最后结果;不受约束地画控制流线,导致在编码阶段造成非结构化的程序结构;不易表示数据结构。SequentialABPFT ABSelectivePFT BDo-While PSWhileDo-Until PSUntilCaseP12nA1A2AnCall subroutineA3. 过程设计的工具Nassi nv 是结点数(number of nodes)。对CFG G,其环形复杂度V(G)的计算公式:V(G) = 环形(线性无关区域)个数= 判定结点数 + 1= ne nv + 2关于环形计算公式,事实上在图论中,有向平面图中环的 数目:V(G) = ne nv + 2p 1对流图而言,一定是连通的,由于计算环形个数时要包括 不封闭的那个环形。因而 p = 1 , ne 1 才是流图的实际边数。a(开始 ) b(入口 )cdefghij(出口 )k(停止 ) 通过CFG的边数结点数计算,ne = 12 nv = 115. 程序复杂程度的定量度量 通过CFG环形个数计算,须从 开始到停止画一条虚弧。例如: 通过CFG判定结点计算。V(G) = 环形个数 = 3V(G) = 判定结点数 + 1 = 3V(G) = ne nv + 2= 12 11 + 2 = 3再如:P. 138环形复杂度的缺点: 没有区分不同种类控制结构的复杂性,例如 IF 与 LOOP,嵌 套 IF 与 CASE 等; 顺序结构中程序大小与复杂性无关。5. 程序复杂程度的定量度量McCabe 环形复杂度的特点: 环形复杂度取决于程序控制结构的复杂度,即选择或循环分支增多时,环形复杂度也随之增大。 环形复杂度可以度量软件测试的难易度。 环形复杂度是可加的。 实践经验表明,对于环形复杂度10的模块,应考虑重新划分模块。Halstead方法根据程序中运算符和操作数的总数来度量程 序的复杂程度。 The primitive measures aren1 the number of distinct operators that appear in a programn2 the number of distinct operands that appear in a programN1 the total number of operator occurrencesN2 the total number of operand occurrences注:成对出现的运算符,如 BEGINEND, IFTHENELSE 等都算1个运算符。5. 程序复杂程度的定量度量2. Halsteads Theory (M. Halstead, 1977) Halsteads laws:(1) 实际程序长度(program length):N = N1 + N2(2) 程序词汇表(program vocabulary):n = n1 + n2(3) 预测程序长度(estimated length):H = n1log2n1 + n2log2n2注意:H可由词汇表算出,即程序长度可通过词汇表预估。(4) 程序量(program volume):V = N log2nminimum # of bits required to specify a program.# of bits required to represent n different identifiers.5. 程序复杂程度的定量度量(5) 程序级别(program level):L = V * / V其中 potential volume V * = (2+n2*)log2 (2+n2*),n2* 为I/O 变量 的个数 。这里V * 是V 的最小值,2表示程序中至少有2个运算符 赋值符和调用符。L 体现了抽象程度,编码语言越高级,L 越接近1。5. 程序复杂程度的定量度量(6) 工作量(effort):E=V / L。(7) 潜在错误(potential error):B = N log2 n /3000 。注:It should be noted that Halsteads “laws“ have generated substantial controversy and that not everyone agrees that the underlying theory is correct. However, experimental verification of Halsteads findings have been made for a number of programming languages.5. 程序复杂程度的定量度量3. 交点复杂度 (M. R. Woodward, 1979)交点复杂度根据程序图中各控制线相交的交点数目来度量 程序的复杂程度。注意: 程序图中所有结点 画在一直线上,所有有 向边画在直线的同一 侧。 从程序图计算出的 交点复杂度不唯一。 交点复杂度对非结 构化的反映比环形复杂 度灵敏,当k越小时结 构化程度越高。a(开始 ) b(入口 ) cdefghij(出口)k(停止 )a(开始 ) b(入口 ) cdefghij(出口)k(停止 )交点复杂度k = 1
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号