第6章详细设计 6,1结构程序设计 6.2人机界面设计 63过程设计的工具 64面向数据结构的设计方法 6.5程序复杂程度的定量度量
第6章 详细设计 6.1 结构程序设计 6.2 人机界面设计 6.3 过程设计的工具 6.4 面向数据结构的设计方法 6.5 程序复杂程度的定量度量
详细设计阶段的根本目标:确定应该怎样具体地实现 所要求的系统。经过这个阶段的设计工作,应该得出 对目标系统的精确描述,从而在编码阶段可以把这个 描述直接翻译成用某种程序设计语言书写的程序 结构程序设计技术是实现上述目标的关键技术,因此 是详细设计的逻辑基础 详细设计阶段的任务:包括数据结构设计、数据库设 计、算法设计、界面设计、其他设计、编写设计说明 书、评审。还不是具体地编写程序,而是要设计出程 序的“蓝图
◼ 详细设计阶段的根本目标:确定应该怎样具体地实现 所要求的系统。经过这个阶段的设计工作,应该得出 对目标系统的精确描述,从而在编码阶段可以把这个 描述直接翻译成用某种程序设计语言书写的程序。 ◼ 结构程序设计技术是实现上述目标的关键技术,因此 是详细设计的逻辑基础。 ◼ 详细设计阶段的任务:包括数据结构设计、数据库设 计、算法设计、界面设计、其他设计、编写设计说明 书、评审。还不是具体地编写程序,而是要设计出程 序的“蓝图”
61结构程序设计 结构程序设计的概念最早由 EWDijkstra提出。1965 年他在一次会议上指出:“可以从高级语言中取消GO TO语句”,“程序的质量与程序中所包含的GOTO语句 的数量成反比”。 1966年Bohm和 Jacopini证明了,只用3种基本的控制 结构就能实现任何单入口单出口的程序。这3种基本的控 制结构是“顺序”、“选择”和“循环”,它们的流程图 分别为图61(a),6,1(b)和6(c) 实际上用顺序结构和循环结构(又称DO-WHLE结构) 完全可以实现选择结构(又称 IF-THEN-ELSE结构),因此, 理论上最基本的控制结构只有两种。Bohm和 Jacobin的证 明给结构程序设计技术奠定了理论基础
6.1 结构程序设计 ◼ 结构程序设计的概念最早由E.W.Dijkstra提出。1965 年他在一次会议上指出:“可以从高级语言中取消GO TO语句”,“程序的质量与程序中所包含的GO TO 语句 的数量成反比”。 ◼ 1966年Bohm和Jacopini证明了,只用3种基本的控制 结构就能实现任何单入口单出口的程序。这3种基本的控 制结构是“顺序”、“选择”和“循环”,它们的流程图 分别为图6.1(a),6.1(b)和6.1(c)。 ◼ 实际上用顺序结构和循环结构(又称DO-WHILE结构) 完全可以实现选择结构(又称IF-THEN-ELSE结构),因此, 理论上最基本的控制结构只有两种。Bohm和Jacopini的证 明给结构程序设计技术奠定了理论基础
习题: F T 6-1假设只有 A xp SEQUENCE和Do A B WHE两种控制结构, 怎样利用它们完成I TTHIEN-ELSE操作? exp 62假设只允许使用 T A 或 T SEQUENCE和IF-THEN A ELSE两种控制结构,怎 样利用它们完成Do WHLE操作?
习题: 6-1 假设只有 SEQUENCE和DOWHILE两种控制结构, 怎样利用它们完成IFTHEN-ELSE操作? 6-2 假设只允许使用 SEQUENCE和IF-THENELSE两种控制结构,怎 样利用它们完成DOWHILE操作?
经典定义:如果一个程序的代码块仅仅通过顺序、 选择和循环这3种基本控制结构进行连接,并且每 个代码块只有一个入口和一个出口,则称这个程 序是结构化的。 更全面定义:结构程序设计是尽可能少用GOTO 语句的程序设计方法。最好仅在检测出错误时才 使用GOTO语句,而且应该总是使用前向GOTO 语句
◼ 经典定义:如果一个程序的代码块仅仅通过顺序、 选择和循环这3种基本控制结构进行连接,并且每 个代码块只有一个入口和一个出口,则称这个程 序是结构化的。 ◼ 更全面定义:结构程序设计是尽可能少用GOTO 语句的程序设计方法。最好仅在检测出错误时才 使用GOTO语句,而且应该总是使用前向GOTO 语句
如果只允许使用顺序、 IF-THEN-ELSE型分支和DO WHLE型循环这3种基本控制结构,则称为经典的结构程序 设计; 如果除了上述3种基本控制结构之外,还允许使用DO CASE型多分支结构和 DO-UNT型循环结构,则称为扩展 的结构程序设计; 有时需要立即从循环(甚至嵌套的循环)中转移出来,允 许使用 LEAVE(或 BREAK)结构,则称为修正的结构程序设计 LEAVE或 BREAK结构实质上是受限制的GOTO语句,用于 转移到循环结构后面
如果只允许使用顺序、IF-THEN-ELSE型分支和DOWHILE型循环这3种基本控制结构,则称为经典的结构程序 设计; 如果除了上述3种基本控制结构之外,还允许使用DOCASE型多分支结构和DO-UNTIL型循环结构,则称为扩展 的结构程序设计; 有时需要立即从循环(甚至嵌套的循环)中转移出来,允 许使用LEAVE(或BREAK)结构,则称为修正的结构程序设计。 LEAVE或BREAK结构实质上是受限制的GOTO语句,用于 转移到循环结构后面
DO A CASE exp CASE 1 CASE 2 CASE n a 其他常用的控制结构
其他常用的控制结构
62人机界面设计 人机界面设计是接口设计的重要组成部分。对于交互式系 统来说,人机界面设计和数据设计、体系结构设计及过程 设计一样重要。近年来,人机界面在系统中所占的比例越 来越大,在个别系统中人机界面的设计工作量甚至占总设 计量的一半以上。 人机界面的设计质量,直接影响用户对软件产品的评价, 从而影响软件产品的竞争力和寿命,必须对人机界面设计 给予足够重视
6.2 人机界面设计 ◼ 人机界面设计是接口设计的重要组成部分。对于交互式系 统来说,人机界面设计和数据设计、体系结构设计及过程 设计一样重要。近年来,人机界面在系统中所占的比例越 来越大,在个别系统中人机界面的设计工作量甚至占总设 计量的一半以上。 ◼ 人机界面的设计质量,直接影响用户对软件产品的评价, 从而影响软件产品的竞争力和寿命,必须对人机界面设计 给予足够重视
三条“黄金规则”: 置界面于用户的控制之下。 减少用户记忆负担 ■保持界面的一致性
三条“黄金规则”: ◼ 置界面于用户的控制之下。 ◼ 减少用户记忆负担。 ◼ 保持界面的一致性
621设计问题 在设计人机界面的过程中,总会遇到下述4个 问题:系统响应时间、用户帮助设施、出错信息处 理和命令交互。不幸的是,许多设计者直到设计过 程后期才开始考虑这些问题,这样做往往导致出现 不必要的设计反复、项目延期和用户产生挫折感。 最好在设计初期就把这些问题作为重要的设计问题 来考虑,这时修改比较容易,代价也低。下面讨论 这4个设计问题
6.2.1 设计问题 在设计人机界面的过程中,总会遇到下述4个 问题:系统响应时间、用户帮助设施、出错信息处 理和命令交互。不幸的是,许多设计者直到设计过 程后期才开始考虑这些问题,这样做往往导致出现 不必要的设计反复、项目延期和用户产生挫折感。 最好在设计初期就把这些问题作为重要的设计问题 来考虑,这时修改比较容易,代价也低。下面讨论 这4个设计问题