《软件工程详细设计ppt课件》由会员分享,可在线阅读,更多相关《软件工程详细设计ppt课件(52页珍藏版)》请在金锄头文库上搜索。
1、详细设计详细设计 6.1 结构程序设计 6.2 人机界面设计 6.3 过程设计的工具 6.4 小结详细设计的目标 详细设计阶段的根本目标是确定应该怎 样具体地实现所要求的系统,也就是说 ,经过这个阶段的设计工作,应该得出 对目标系统的精确描述,从而在编码阶 段可以把这个描述直接翻译成用某种程 序设计语言书写的程序。详细设计任务 详细设计阶段的任务还不是具体地编写 程序,而是要设计出程序的“蓝图”,以 后程序员将根据这个蓝图写出实际的程 序代码。 因此,详细设计的结果基本上决定了最 终的程序代码的质量。 考虑程序代码的质量时必须注意,程序 的“读者”有两个,那就是计算机和人。6.1 结构程序设计
2、 结构程序设计的概念最早由E.W.Dijkstra 提出。1965年他在一次会议上指出:“可 以从高级语言中取消GO TO语句”,“程 序的质量与程序中所包含的GO TO 语句 的数量成反比”。1966年Bohm和Jacopini 证明了,只用3种基本的控制结构就能实 现任何单入口单出口的程序。这3种基本 的控制结构是“顺序”、“选择”和“循环”, 它们的流程图分别为图6.1(a),6.1(b)和 6.1(c)。6.1 3种基本的控制结构实际上用顺序结构和循环结构(又称DO-WHILE结 构)完全可以实现选择结构(又称IF-THEN-ELSE结 构),因此,理论上最基本的控制结构只有两种。 B
3、ohm和Jacopini的证明给结构程序设计技术奠定 了理论基础。 1968年Dijkstra再次建议从一切高级语言中取消 GO TO语句,只使用3种基本控制结构写程序。他 的建议引起了激烈争论,经过讨论人们认识到,不 是简单地去掉GO TO 语句的问题,而是要创立一 种新的程序设计思想、方法和风格,以显著地提高 软件生产率和降低软件维护代价。 结构程序设计的经典定义如下所述:“如果 一个程序的代码块仅仅通过顺序、选择和循 环这3种基本控制结构进行连接,并且每个 代码块只有一个入口和一个出口,则称这个 程序是结构化的。” 另一种更加全面的定义:结构程序设计是 尽可能少用GO TO语句的程序设计
4、方法。最 好仅在检测出错误时才使用GO TO语句,而 且应该总是使用前向GO TO语句图6.2 其他常用的控制结构6.2 人机界面设计 人机界面设计是接口设计的一个重要的组成部 分。对于交互式系统来说,人机界面设计和数 据设计、体系结构设计及过程设计一样重要。 近年来,人机界面在系统中所占的比例越来越 大,在个别系统中人机界面的设计工作量甚至 占总设计量的一半以上。 人机界面的设计质量,直接影响用户对软件产 品的评价,从而影响软件产品的竞争力和寿命 ,因此,必须对人机界面设计给予足够重视。人机界面设计需要考虑的问题? 用户是怎么样的人呢? 用户怎样学习和新的基于计算机的系统 交互? 用户怎样解
5、释系统产生的信息? 用户对系统有哪些期望?6.2.1 设计问题 在设计人机界面的过程中,几乎总会遇 到下述4个问题:系统响应时间、用户帮 助设施、出错信息处理和命令交互。 如果设计者直到设计过程后期才开始考 虑这些问题,往往导致出现不必要的设 计反复、项目延期和用户产生挫折感。 最好在设计初期就把这些问题作为重要 的设计问题来考虑,这时修改比较容易 ,代价也低。1. 系统响应时间系统响应时间是许多交互式系统用户经常 抱怨的问题。一般说来,系统响应时间指从 用户完成某个控制动作(例如,按回车键或点 击鼠标),到软件给出预期的响应(输出信息 或做动作)之间的这段时间。系统响应时间有两个重要属性,分
6、别是长 度和易变性。如果系统响应时间过长,用户 就会感到紧张和沮丧。但是,当用户工作速 度是由人机界面决定的时候,系统响应时间 过短也不好,这会迫使用户加快操作节奏, 从而可能会犯错误。2. 用户帮助设施几乎交互式系统的每个用户都需要帮助, 当遇到复杂问题时甚至需要查看用户手册以 寻找答案。大多数现代软件都提供联机帮助 设施,这使得用户无须离开用户界面就能解 决自己的问题。3. 出错信息处理出错信息和警告信息,是出现问题时交互 式系统给出的“坏消息”。出错信息设计得不 好,将向用户提供无用的甚至误导的信息, 反而会加重用户的挫折感。 一般说来,交互式系统给出的出错信息或 警告信息,应该具有下述
7、属性。 (1) 信息应该用用户可以理解的术语描述问 题。 (2) 信息应该提供有助于从错误中恢复的建 设性意见。(3) 信息应该指出错误可能导致哪些负面后果(例 如,破坏数据文件),以便用户检查是否出现了这 些问题,并在确实出现问题时及时解决。 (4) 信息应该伴随着听觉上或视觉上的提示,例如 ,在显示信息时同时发出警告铃声,或者信息用闪 烁方式显示,或者信息用明显表示出错的颜色显示 。 (5) 信息不能带有指责色彩,也就是说,不能责怪 用户。 当确实出现了问题的时候,有效的出错信息能提 高交互式系统的质量,减轻用户的挫折感。4. 命令交互命令行曾经是用户和系统软件交互的最常用的方 式,并且也
8、曾经广泛地用于各种应用软件中。 在提供命令交互方式时,必须考虑下列设计问题 。 (1) 是否每个菜单选项都有对应的命令? (2) 采用何种命令形式?有3种选择:控制序列(例 如,Ctrl+P),功能键和键入命令。 (3) 学习和记忆命令的难度有多大?忘记了命令怎 么办? (4) 用户是否可以定制或缩写命令?6.2.2 设计过程 用户界面设计是一个迭代的过程,也就 是说,通常先创建设计模型,再用原型 实现这个设计模型,并由用户试用和评 估,然后根据用户意见进行修改。界面设计评价周期初步设计创建原型 #1界面用户评估 界面设计修改创建界面 #n界面设计者研究 评估结果6.2.3 人机界面设计指南
9、用户界面设计主要依靠设计者的经验。 总结众多设计者的经验得出的设计指南 ,有助于设计者设计出友好、高效的人 机界面。下面介绍3类人机界面设计指南 。1. 一般交互指南 2. 信息显示指南 3. 数据输入指南界面设计黄金规则 置用户控制之下 减少用户的记忆负担 保持界面一致置用户控制之下 以不强迫用户进入不必要的动作的方式 来定义交互模式 提供灵活的交互 允许用户交互可以被中断和撤销 当技能级别增长时可以使交互流水化并 允许定制交互 使用户隔离内部技术细节 设计应允许用户和出现在屏幕上的对象 直接交互减少用户的记忆负担 减少对短期记忆的要求 建立有意义的缺省 定义直觉性的捷径 界面的视觉布局应该
10、基于真实世界的隐 喻 以不断进展的方式揭示信息保持界面一致 允许用户将当前任务放入有意义的语境 在应用系列内保持一致性 如果过去的交互模型已经建立起了用户 期望,不要改变它,除非有不得已得理 由程序流程图又称为程序框图,它是历史最 悠久、使用最广泛的描述过程设计的方法, 然而它也是用得最混乱的一种方法。 在6.1节中已经用程序流程图描绘了一些常 用的控制结构,相信读者对程序流程图中使 用基本符号已经有了一些了解。6.3 过程设计的工具6.3.1 程序流程图程序流程图的主要缺点(1) 程序流程图本质上不是逐步求精的好工 具,它诱使程序员过早地考虑程序的控 制流程,而不去考虑程序的全局结构。 (2
11、) 程序流程图中用箭头代表控制流,因此 程序员不受任何约束,可以完全不顾结 构程序设计的精神,随意转移控制。 (3) 程序流程图不易表示数据结构。6.3.2 盒图(N-S图) 出于要有一种不允许违背结构程序设计精神的 图形工具的考虑,Nassi和Shneiderman提出了 盒图,又称为N-S图。它有下述特点: (1) 功能域(即,一个特定控制结构的作用域)明 确,可以从盒图上一眼就看出来。 (2) 不可能任意转移控制。 (3) 很容易确定局部和全程数据的作用域。 (4) 很容易表现嵌套关系,也可以表示模块的 层次结构。图6.4 盒图的基本符号6.3.3 PAD图 PAD是问题分析图(prob
12、lem analysis diagram)的英文缩写,自1973年由日本日 立公司发明以后,已得到一定程度的推 广。它用二维树形结构的图来表示程序 的控制流,将这种图翻译成程序代码比 较容易。图6.5给出PAD图的基本符号。 PAD图的主要优点如下: (1) 使用表示结构化控制结构的PAD符号 所设计出来的程序必然是结构化程序。图6.5 PAD图的基本符号(2) PAD图所描绘的程序结构十分清晰。图中最左 面的竖线是程序的主线,即第一层结构。随着程序 层次的增加,PAD图逐渐向右延伸,每增加一个层 次,图形向右扩展一条竖线。PAD图中竖线的总条 数就是程序的层次数。 (3) 用PAD图表现程序
13、逻辑,易读、易懂、易记。 PAD图是二维树形结构的图形,程序从图中最左竖 线上端的结点开始执行,自上而下,从左向右顺序 执行,遍历所有结点。 (4) 容易将PAD图转换成高级语言源程序,这种转 换可用软件工具自动完成,从而可省去人工编码的 工作,有利于提高软件可靠性和软件生产率。(5) 即可用于表示程序逻辑,也可用于描绘数据结 构。 (6) PAD图的符号支持自顶向下、逐步求精方法的 使用。开始时设计者可以定义一个抽象的程序,随 着设计工作的深入而使用def符号逐步增加细节, 直至完成详细设计,如图6.6所示。 PAD图是面向高级程序设计语言的,为 FORTRAN,COBOL和PASCAL等每
14、种常用的高级 程序设计语言都提供了一整套相应的图形符号。由 于每种控制语句都有一个图形符号与之对应,显然 将PAD图转换成与之对应的高级语言程序比较容易 。图6.6 使用PAD图提供的定义功能来逐步求精的例子6.3.4 判定表 当算法中包含多重嵌套的条件选择时,用程序 流程图、盒图、PAD图或后面即将介绍的过程 设计语言(PDL)都不易清楚地描述。然而判定 表却能够清晰地表示复杂的条件组合与应做的 动作之间的对应关系。 一张判定表由4部分组成,左上部列出所有条 件,左下部是所有可能做的动作,右上部是表 示各种条件组合的一个矩阵,右下部是和每种 条件组合相对应的动作。判定表右半部的每一 列实质上
15、是一条规则,规定了与特定的条件组 合相对应的动作。 下面以行李托运费的算法为例说明判定表 的组织方法,算法规则如下: 假设某航空公司规定,乘客可以免费托运重量 不超过30kg的行李。 当行李重量超过30kg时,对头等舱的国内乘客 超重部分每公斤收费4元,对其他舱的国内乘客超 重部分每公斤收费6元,对外国乘客超重部分每公 斤收费比国内乘客多一倍,对残疾乘客超重部分 每公斤收费比正常乘客少一半。6.3.5 判定树 判定表虽然能清晰地表示复杂的条件组 合与应做的动作之间的对应关系,但其 含义却不是一眼就能看出来的,初次接 触这种工具的人理解它需要有一个简短 的学习过程。此外,当数据元素的值多 于两个
16、时(例如,6.3.4例子中假设对机票 需细分为头等舱、二等舱和经济舱等多 种级别时),判定表的简洁程度也将下降 。图6.7 用判定树表示计算行李费的算法6.3.6 过程设计语言 过程设计语言(PDL)也称为伪码,这是一个 笼统的名称,现在有许多种不同的过程设计语 言在使用。它是用正文形式表示数据和处理过 程的设计工具。 PDL具有严格的关键字外部语法,用于定义控 制结构和数据结构;另一方面,PDL表示实际 操作和条件的内部语法通常又是灵活自由的, 可以适应各种工程项目的需要。因此,一般说 来,PDL是一种“混杂”语言,它使用一种语言 的词汇,同时却使用另一种语言(某种结构化的 程序设计语言)的语法。PDL应该具有下述特点: (1) 关键字的固定语法,它提供了结构化控制结构 、数据说明和模块化的特点。为了使结构清晰和可 读性好,通常在所有可能嵌套使用的控制结构的头 和尾都有关键字,例如,if