软件工程第6章
软件工程第6章 软件编码设计

10
(1)理论标准 1)理想的模块化机制、易于阅读和使用的控制结 构及数据结构 模块化、良好的控制结构和数据结构可以降低编码 工作的难度,增强程序的可理解性,提高程序的可测试 性和可维护性,从而减少软件生存周期中的总成本,并 缩短软件开发所需的时间。 2)完善、独立的编译机制
11
(2)实用标准 1)系统用户的要求 由于用户是软件的使用者,因此软件开发者应充分 考虑用户对开发工具的要求。特别是当用户要负责软件 的维护工作时,用户理所应当地会要求采用他们熟悉的 语言进行编程。 2)工程的规模 3)软件的运行环境 4)可以得到的软件开发工具
16
(3)语句的构造及书写 语句是构成程序的基本单位,语句的构造方式和书 写格式对程序的可读性具有非常重要的决定作用。 在一行内只写一条语句,并且采取适当的移行格式, 使程序的逻辑和功能变得更加明确。 程序编写首先应当考虑清晰性,不要刻意追求技巧 性,使程序编写得过于紧凑。
17
(4)输入/输出 由于输入和输出是用户与程序之间传递信息的渠道, 因此输入、输出的方式往往是用户衡量程序好坏的重要 指标。为了使程序的输入、输出能便于用户的使用,在 编写程序时应对输入和输出的设计格外注意。 1)输入 2)输出
23
良好的编码风格,应该以结构程序设计的原则为指 导,使用单输入口和单输出口的控制结构。倡导源程序 代码的文档化,程序内部良好的文档资料,有规律的数 据说明格式,简单清晰的语句构造和输入输出格式等, 都对程序的可读性有很大作用,也在相当大的程度上改 进了程序的可维护性。程序的输入输出应该充分考虑运 行工程学的要求,在满足数据可靠性的前提下,尽量做 到对用户友善。
19
(1)用于提高运行速度的指导原则 ①编写程序之前,先对需要使用的算术表达式和逻 辑表达式进行化简。 ②尽可能多地采用执行时间短的算术运算。 ③尽量避免使用多维数组、指针和其他复杂的数据 类型。 ④尽量采用整型算术表达式和布尔表达式。 ⑤尽可能减少循环体,特别是内循环中语句的个数。 ⑥尽量使同一表达式中的数据类型保持统一。 ⑦应当对所有的输入和输出安排适当的缓冲区,以 减少频繁通信所带来的额外开销。
《软件工程实用教程》第6_章_面向对象的软件设计

第6 章 面向對象的軟體設計
例:
第6 章 面向對象的軟體設計
2.部署圖 部署圖描述了處理器、設備和軟體構件運行時 的體系結構。 ( 1 )結點:是某種計算資源的物理對象,包括電 腦、設備(如印表機、通信設備)等 (2) 連接:連接用一條直線表示,它指出結點之間 存在著某種通信路徑,並指出通過哪條通信路 徑可使這些結點間交換對象或發送消息
第6 章 面向對象的軟體設計
2.詳細設計 (1)細化、補充類的屬性和操作 (2)設計類操作的實現演算法 (3)優化數據訪問路徑 (4)實現外部互動式的控制 (5)調整類結構,增加繼承性 (6)設計類之間的關聯的實現方式 (7)確定對象屬性的精確表示 (8)把類和關聯打包歸納到模組中
第6 章 面向對象的軟體設計
第6 章 面向對象的軟體設計
3)依賴倒置原則:指的是依賴關係應該是儘量依賴介面 (或抽象類),而不是依賴於具體類。在面向對象 的設計中,高層的類往往與領域的業務有關,這些 類只依賴於一些抽象的類或介面,當具體的實現細 節改變時,不會對高層的類產生影響。 4)介面分離原則:指的是在設計時採用多個與特定客戶 類有關的介面比採用一個通用的介面要好。即一個 類要給多個客戶類使用,那麼可以為每個客戶類創 建一個介面,然後這個類實現所有這些介面,而不 要只創建一個介面,其中包含了所有客戶類需要的 方法,然後這個類實現這個介面。
第6 章 面向對象的軟體設計
2.設計基於類的構件 (1)基本設計原則 2)Liskov替換原則:指的是子類可以替 換父類出現在父類能出現的任何地方。 例如,類ClassA要使用ClassB,ClassC 是ClassB的子類。如果在運行時,用 ClassC代替ClassB,則ClassA仍然可以 使用原來ClassB中提供的方法,而不需 要做任何改動。
软件工程第六章

判定树的缺点:
例题:
某校制定了教师的讲课课时津贴标准。对于各 种性质的讲座,无论教师是什么职称,每课时 津贴费一律是50元;
对于一般的授课,则根据教师的职称来决定每
课时津贴费:教授30元,副教授25元,讲师20
元,助教15元。
请分别用判定表和判定树表示津贴标准。
判定表:
1
教授 副教授 讲师 助教 讲座 50 30 25 20 15
盒图具有下述特点: 功能域明确。 不可能任意转移控制。 很容易确定局部和全程数据的作用域。 很容易表现嵌套关系,也可以表示模块的层次 结构。
盒图的基本符号
6.3.3 PAD图
PAD是问题分析图(problem analysis diagram)
的英文缩写,自1973年由日本日立公司发明以 后,已得到一定程度的推广。 它用二维树形结构的图来表示程序的控制流, 将这种图翻译成程序代码比较容易。
多年来判定树一直受到人们的重视,是一种比 较常用的系统分析和设计的工具。
用判定树表示计算行李费的算法
判定树的优点:
它的形式简单,一眼就可以看出其含义,因此 易于掌握和使用。
简洁性不如判定表,数据元素的同一个值往往 要重复写多遍,而且越接近树的叶端重复次数 越多。 画判定树时分枝的次序可能对最终画出的判定 树的简洁程度有较大影响。
PAD图的基本符号
PAD图的主要优点如下:
使用表示结构化控制结构的PAD符号设计出来 的程序必然是结构化程序。 PAD图所描绘的程序结构十分清晰。 PAD图表现程序逻辑易读、易懂、易记。 容易将PAD图转换成高级语言源程序,这种转 换可用软件工具自动完成。
软件工程导论第6章

70年代初N.Wirth在Pascal语言中设置支持“顺序 结构”、“IF-THEN-ELSE选择结构”、“DO-WHILE 重复结构”或“DO-UNTIL重复结构”三种基本控制 结构语句。
25
3种基本控制结构
(1) 顺序型
A B
(2) 选择型
F P A B T
(2) 多情况选择型(case)
T T
P=1 F P=2 F P=n F
…
A1 A2
T
An
(3) 先判定型循环
后判定型循环
(do-while)
F
(do-until)
P T S
S P F
T
例1、某模块有两个输入a和b,一 个输出c,当满足条件(a>0)and(b<2) 时,c=a+b,否则c=a-b。画出该模 块的程序流程图。
a b
第6章 详细设计
6.1 结构程序设计 6.2 人机界面设计 6.3 过程设计的工具 6.4 面向数据结构的设计方法 6.5 程序复杂程度的定量度量 6.6 小结 习题
1
详细设计阶段的根本目标:确定应该怎样具体地 实现所要求的系统。 为软件结构图中的每一个模块确定使用的算法和 块内数据结构,并用某种选定的表达工具给出清晰 的描述。
100 110
120
130 140
Eq:等于 ne:不等于 gt:大于 lt:小于 ge:大于等于 le:小于等于
例:打印A、B、C三数中最小者的程序 if (A.LT.B .AND. A.LT.C)then write(6,*) A else if (A.GE.B .AND. B.LT.C) then write(6,*) B else write(6,*) C endif endif
(完整版)软件工程第六章答案

作业4参考答案1.假设只有SEQUENCE和DO_WHILE两种控制结构,怎样利用它们完成IF_THEN_ELSE操作?答:转化如下:K = 1DO WHILE (条件.AND. K.EQ.1)程序块1K=K+1END DODO WHILE ((.NOT. 条件) .AND. K.EQ.1)程序块2K=K+1END DO2.假设允许使用SEQUENCE和IF_THEN_ELSE两种控制结构,怎样利用它们完成DO_WHILE操作?答:转化如下;label: IF (条件) THEN程序块GOTO labelELSE程序块END IF3.画出下列伪码程序的程序流程图和盒图:STARTIF p THENWHILE q DOfEND DOELSEBLOCKgnEND BLOCKEND IFSTOP答:(1)流程图如图4-1所示:图4-1 从伪码变成的程序流程图(2)该程序的盒图如图4-2所示:图4-2 从伪码变成的程序盒图4.下图给出的程序流程图代表一个非结构化的程序,请问:(1)为什么说它是非结构化的?(2)设计一个等价的结构化程序。
(3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag 的程序;若用了,再设计一个不用flag的程序。
答:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。
图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。
(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,图4-3描绘了等价的结构化程序的盒图。
(a)解法1(b)解法2图4-3 与该图等价的结构化程序(用flag)(3)不使用flag把该程序改造为等价的结构化程序的方法如图4-4所示。
图4-4 与该图等价的结构化程序(不用flag)5.研究下面的伪代码程序:LOOP: Set I to (START+FINISH)/2If TABLE(I)=ITEM goto FOUNDIf TABLE(I)<ITEM Set START to (I+1)If TABLE(I)>ITEM Set FINISH to (I-1)If (FINISH-START )>1 goto LOOPIf TABLE(START)=ITEM goto FOUNDIf TABLE(FINISH)=ITEM goto FOUNDSet FLAG to 0Goto DONEFOUND: Set FLAG to 1DONE:Exit(1)画出程序流程图。
软件工程导论第6章(第4版)

二. 人机界面设计
人机界面设计是接口设计的一个重要的组成部 分。对于交互式系统来说,人机界面设计和数据设 计、体系结构设计及过程设计一样重要。
1.指导规则
T.Mandel在《用户界面设计要素》中,提出了3 条指导规则: 让用户驾驭软件,不是软件驾驭用户 减少用户的记忆 保持界面的一致性
2. 应该考虑的设计问题
4. 人机界面设计指南
(3) 数据输入指南 尽量减少用户的输入动作。 保持信息显示和数据输入之间的一致性。 允许用户自定义输入。 交互应该是灵活的,可调整成用户喜欢的输入方式。 使在当前动作语境中不适用的命令不起作用。 让用户控制交互流。 对所有输入动作都提供帮助。 消除冗余的输入。
三. 过程设计
1.过程设计的目的与任务 目的 确定模块采用的算法和块内数据结构,用某种 选定的表达工具给出清晰的描述。 任务:编写软件的“过程设计说明书” 为每个模块确定采用的算法 (模块的详细过程性 描述) 确定每一模块使用的数据结构 确定模块接口的细节 (包括对系统外部的接口和 用户界面,对系统内部其他模块的接口,以及关 于模块输入数据、输出数据及局部数据的全部细 节)
三. 过程设计
2.过程设计的原则与方法
清晰第一的设计风格 结构化的控制结构 结构程序设计的经典定义为: “如果一个程序的代码块仅仅通过顺序、选择和循环这3 种基本控制结构进行连接,并且每个代码块只有一个入口和 一个出口,则称这个程序是结构化的。” 结构程序设计技术是一种实现在逻辑上正确描述每个模 块的功能,并且使设计出的处理过程尽可能简明易懂的关键 技术,是过程设计的逻辑基础。 逐步细化的实现方法 例:在一组数中找出其中的最大数
(4) 命令交互 命令行现在仍然是许多高级用户偏爱的交互方式。在 多数情况下,用户既可以从菜单中选择软件功能,也可以 通过键盘命令序列调用软件功能。 在提供命令交互方式时,必须考虑下列设计问题: 是否每个菜单选项都有对应的命令? 采用何种命令形式?有3种选择:控制序列(例如Ctrl+P), 功能键和键入命令。 学习和记忆命令的难度有多大?忘记了命令怎么办? 用户是否可以定制或缩写命令? 在理想的情况下,所有应用软件都有一致的命令使用 方法。
软件工程与实践第6章
6.1 6.2 6.3 6.4 6.5 6.6
结构程序设计 人机界面设计 过程设计的工具 面向数据结构的设计方法 程序复杂程度的定量度量 小结
详细设计阶段的根本目标是确定应该怎样具体地实 现所要求的系统。 详细设计阶段的任务还不是具体地编写程序,而是 要设计出程序的“蓝图”,以后程序员将根据这个 蓝图写出实际的程序代码。 详细设计的目标不仅仅是逻辑上正确地实现每个模 块的功能,更重要的是设计出的处理过程应该尽可 能简明易懂。 结构程序设计技术是详细设计的逻辑基础。
6.2.3 人机界面设计指南
用户界面设计主要依靠设计者的经验,总结众多设 计者的经验得出的设计指南,有助于设计者设计出 友好、高效的人机界面。下面介绍3类人机界面设 计指南。 1. 一般交互指南 一般交互指南涉及信息显示、数据输入和系统整体 控制,因此,这类指南是全局性的,忽略它们将承 担N-ELSE型分支和 DO-WHILE型循环这3种基本控制结构,则称为经 典的结构程序设计;如果除了上述3种基本控制结 构之外,还允许使用DO-CASE型多分支结构和 DO-UNTIL型循环结构,则称为扩展的结构程序设 计;如果再加上允许使用LEAVE(或BREAK)结构, 则称为修正的结构程序设计。
6.3.6 过程设计语言
过程设计语言(PDL)也称为伪码,它是用正文形 式表示数据和处理过程的设计工具。 PDL应该具有下述特点: (1) 关键字的固定语法,它提供了结构化控制结构、 数据说明和模块化的特点。 (2) 自然语言的自由语法,它描述处理特点。 (3) 数据说明的手段。应该既包括简单的数据结构 (例如纯量和数组),又包括复杂的数据结构(例如, 链表或层次的数据结构)。 (4) 模块定义和调用的技术,应该提供各种接口描 述模式。
软件工程考核知识点-第6章-软件编码
软件工程考核知识点-第6章-软件编码6.1 程序设计语言的特性及选择程序设计语言是人机通信的工具之一,使用这类语言“指挥”计算机干什么,是人类特定的活动。
我们从以下三个方面介绍语言的特性。
6.1.1 程序设计语言特性1. 心理特性(1)歧义性。
(2)简洁性。
(3)局部性和顺序性。
(4)传统性。
2. 工程特性(1)可移植性。
(2)开发工具的可利用性。
(3)软件的可重用性。
(4)可维护性。
3. 技术特性支持结构化构造的语言有利于减少程序环路的复杂性,使程序易测试、易维护。
6.1.2 程序设计语言的选择1. 项目的应用领域(1)科学工程计算。
需要大量的标准库函数,以便处理复杂的数值计算,可供选用的语言有:FORTRAN语言、C语言等。
(2)数据处理与数据库应用SQL为IBM公司开发的数据库查询语言4GL称为第4代语言(3)实时处理实时处理软件一般对性能的要求很高,可选用的语言有:汇编语言、Ada语言等。
(4)系统软件。
如果编写操作系统、编译系统等系统软件时,可选用汇编语言、C语言、Pascal语言和Ada语言。
(5)人工智能。
如果要完成知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别等人工智能领域内的系统,应选择Prolog、Lisp语言。
2. 软件开发的方法(详见第9章)有时编程语言的选择依赖于开发的方法,如果要用快速原型模型来开发,要求能快速实现原型,因此宜采用4GL。
如果是面向对象方法,宜采用面向对象的语言编程。
3. 软件执行的环境良好的编程环境不但有效提高软件生产率,同时能减少错误,有效提高软件质量。
4. 算法和数据结构的复杂性科学计算、实时处理和人工智能领域中的问题算法较复杂,而数据处理、数据库应用、系统软件领域内的问题,数据结构比较复杂,因此选择语言时可考虑是否有完成复杂复杂算法的能力,或者有构造复杂数据结构的能力。
5. 软件开发人员的知识编写语言的选择与软件开发人员的知识水平及心理因素有关,开发人员应仔细地分析软件项目的类型,敢于学习新知识,掌握新技术。
软件工程第6章面向数据流的设计方法
21
变换分析
输入流 变换流 输出流
A C
B E D F G H
主控模块 输入流 控制模块
变换流 控制模块
输出流 控制模块
图6-5 一级分解
22
变换分析
图6-5展示的是一个简单三叉结构,实际处 理大型系统的复杂数据流时,可能需要多 个模块对应图6-5中一个模块的功能。“一 级分解”总的原则是,在完成控制功能并 保持低耦合度、高内聚度的前提下尽可能 地减少模块的数量。 “传感器监测子系统”一级分解如图6-6所 示,其中控制模块的名字概括了所有下属 模块的功能。
E
输出流控制模块 G
A
C
F
主控模块
H
输入流控制模块 B A D C
E F
G H
图6-8 结构的优化
31
监控传感器执行者
警报输出控制器 获得响应信息 建立警报条件
产生显示 读传感器
生成警报信号
建立与电话网络的 连接
产生脉冲
32
变换分析
上述七个设计步骤的目标是给出软件的 一个整体描述。 一旦有了这样一个描述,设计人员即可 从整体角度评价和精化软件的总体结构, 此时修改所需耗费不多,却能大大提高 软件质量。
39
无效口令
图6-2-1 用户交互子系统的二级数据流图
事务分析
事务分析法可概括为七个步骤:
步骤一、复审基本系统模型; 步骤二、复审并精化软件数据流图; 步骤三、确定数据流图的特征; 步骤四、指出事务中心,确定接收部分和发送部分 的流界; 步骤五、映射出系统上层模块结构; 步骤六、分解并精化事务结构以及每条动作路径所 对应的结构。根据流经每一动作路径的数据流特征, 参考前面所述“变换设计” 相关步骤可以逐一导出 这些子结构.
软件工程(第6章(精)
软件工程(第6章 软件测试)
4.可靠性分析
通过收集和分析测试结果数据,对软件建立可靠性 模型 利用可靠性分析,评价软件质量:
软件工程(第6章 软件测试)
换言之,测试的目的是
– 想以最少的时间和人力,系统地找出软件 中潜在的各种错误和缺陷。如果我们成功地 实施了测试,我们就能够发现软件中的错误。 – 测试的附带收获是,它能够证明软件的功 能和性能与需求说明相符合。 – 实施测试收集到的测试结果数据为可靠性 分析提供了依据。 – 测试不能表明软件中不存在错误,它只能 说明软件中存在错误。
5. 充分注意测试中的群集现象。 经验表明,测试后程序中残存的错误数 目与该程序中已发现的错误数目成正比。 6. 严格执行测试计划,排除测试的随意 性。 7. 应当对每一个测试结果做全面检查。 8. 妥善保存测试计划,测试用例,出错 统计和最终分析报告,为维护提供方便。
软件工程(第6章 软件测试)
.
测试数据
期望结果 输入有效
覆盖范围 等价类(1)(2)(3)
—
20010 5
软件工程(第6章 软件测试)
案例—报表日期输入测试用例
6 3 黑 盒 测 试 及 测 试 不能出 用 现相同 例
步骤3:设计无效类的测试用例 对上表中每个无效类至少设计一个测试用例 测试数据 期望结果 覆盖范围
.
的测试 等 用例
.
报表日期的 3位数字字符(1) 类型及长度 年份范围 在2001~2005之间 (2) 在1~12之间(3)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.3 过程设计的工具
6.3.1 程序流程图
又称为程序框图,是以往软件设计的主要工具。 优点:对控制流程的描绘很直观,便于初学者掌握。 缺点:
(1) 程序流程图本质上不是逐步求精的好工具,它诱使程序员 过早地考虑程序的控制流程,而不去考虑程序的全局结构。 (2) 程序流程图中用箭头代表控制流,无法强制体现结构程序 设计的精神。 (3) 程序流程图不易表示数据结构。
38
结构化英语
介于自然语言和形式化语言之间的语言 语言的正文用基本控制结构进行分割, 加工中的操作用自然语言短语来表示 其基本控制结构有三种: 简单陈述句结构:避免复合语句; 重复结构:while_do 或 repeat_until 结构。 判定结构:if_then_else 或 case_of 结构;
27
判定表步骤
(1)构造条件取值表:标出条件的取值。 为绘制判定表 方便, 用符号代替条件的取值;
28
判定表步骤
(3) 计算所有条件的组合数N: N=mi=3×2×2=12; (4) 提取可能采取的动作或措施: 适用于A类保险、B类 保险、C类保险和额外收费; (5) 制作判定表:
17
6.3.2 盒图(N-S图)
特点:
(1) 功能域(即,一个特定控制结构的作用域) 明确,可以从盒图上一眼就看出来。 (2) 不可能任意转移控制。 (3) 很容易确定局部和全程数据的作用域。 (4) 很容易表现嵌套关系,也可以表示模块的 层次结构。
帮助程序员逐步养成用结构化的方式 思考问题和解决问题的习惯。
18
盒图的基本符号
19
6.3.3 PAD图
PAD是问题分析图(problem analysis diagram)
它用二维树形结构的图来表示程序的 控制流
程序从图中最左竖线上端的结点开始执行,自上而 下,从左向右顺序执行,遍历所有结点。
PAD图表示的设计结果容易翻译成程
序代码
20
PAD图的基本符号
40
6.3.6 过程设计语言
过程设计语言(PDL)也称为伪码
它是用正文形式表示数据和处理过程 的设计工具。 特点:
(1) 关键字外层语法提供结构化控制结构、数据说明 和模块化的特点 (2) 内层语法用自然语言描述实际操作和条件 (3) 数据说明可使用简单、复杂的数据结构 (4) 模块定义和调用提供接口描述模式
详细设计的结果基本上决定了最终的 程序代码的质量。
2
详细设计
衡量程序的质量不仅要看它的逻辑是 否正确,性能是否满足要求,更主要的 是要看它是否容易阅读和理解。
详细设计更重要的目标是设计出的处 理过程应该尽可能简明易懂。
结构程序设计技术是详细设计的逻辑 基础。
3
6.1 结构程序设计
3种基本的控制结构
41
PDL程序结构
1) 顺序结构 2) 选择结构 (1) IF-结构: (2) IF-ORIF-ELSE结构: (3) CASE结构: 3) 重复结构 (1) FOR 结构: (2) WHILE 结构:
(3) UNTIL 结构: ……
43
示例: 拼词检查程序
PROCEDURE spellcheck IS BEGIN split document into single words look up words in dictionary display words which are not in dictionary create a new dictionary END spellcheck
15
人机界面设计指南
3. 数据输入指南
(1) 尽量减少用户的输入动作。 (2) 保持信息显示和数据输入之间的一致性。显示的 视觉特征应该与输入域一致。 (3) 允许用户自定义输入。 (4) 交互应该是灵活的,可自定义的输入方式。 (5) 使在当前动作语境中不适用的命令不起作用。 (6) 让用户控制交互流。 (7) 对所有输入动作都提供帮助。 (8) 消除冗余的输入。
45
IF word not in dictionary THEN --* display words not in dictionary display word prompt on user terminal IF user response says word OK THEN add word to good word list ELSE add word to bad word list ENDIF ENDIF EXIT WHEN all words processed END LOOP
29
判定表步骤
(6)完善判定表:初始的判定表可能不完善,有两 种情况 缺少判定列中应采取的动作。
第9、 10两列就无选取的动作,应将其补充完整
有冗余的判定列。两个或多个规则中,具有相 同的动作,而与它所对应的各个条件组合中有 取值无关的条件。
第1和第2、 第5和第6、第9和第10、第11和第12都与第 三个条件“婚姻”取值无关,应分别合并。
30
判定表动作的规则合并
合并后的规则还可进一步合并:
下图中“Y”表示逻辑条件取值为“真” “N”表示逻辑条件取值为“假” “—”表示与取值无关。
Y N Y √ Y N N √ 两 规则 并 条 合 Y N — √ Y N — √ Y N N √ 进 步合 一 并 Y N N √
31
行李计费算法的判定表
人机界面设计指南
2. 信息显示指南
(1) 只显示与当前工作内容有关的信息。 (2) 不要用数据淹没用户,应该用图形或图表的方式 来表示数据。 (3)使用一致的标记、标准的缩写和可预知的颜色。 (4) 允许用户保持可视化的语境。 (5) 产生有意义的出错信息。 (6) 使用大小写、缩进和文本分组以帮助理解。 (7) 使用窗口分隔不同类型的信息。 (8) 使用“模拟”显示方式表示信息,以使信息更容 易被用户提取。 (9) 高效率地使用显示屏。
23
6.3.4 判定表
能清晰表示复杂的条件组合与应做的 动作之间的对应关系 适合算法中包含多重嵌套的条件选择
25
“检查发货单”逻辑的判定 表
26
判定表实例
例:某数据流图中有一个“确定保险类别”的加工, 指的是申请汽车驾驶保险时,要根据申请者的情况 确定不同的保险类别。加工逻辑为: 如果申请者的 年龄在21岁以下,要额外收费;如果申请者是21岁 以上并是26岁以下的女性,适用于A类保险;如果 申请者是26岁以下的已婚男性,或者是26岁以上的 男性, 适用于B类保险; 如果申请者是21岁以下 的女性或是26岁以下的单身男性, 适用于C类保险。 除此之外的其他申请者都适用于A类保险。
用户界面工具箱或用户界面开发系统 简化界面元素和交互环境的创建
12
6.2.3 人机界面设计指南
用户界面设计主要依靠设计者的经验。 1. 一般交互指南
(1) 保持一致性。 (2) 提供有意义的反馈。 (3) 在执行有较大破坏性的动作之前要求用户确认。 (4) 允许取消绝大多数操作。 (5) 减少在两次操作之间必须记忆的信息量。 (6) 提高对话、移动和思考的效率。 (7) 允许犯错误。 (8) 按功能对动作分类,并据此设计屏幕布局。 (9) 提供对用户工作内容敏感的帮助设施。 14 (10) 用简单动词或动词短语作为命令名。
A 条件 B F B 顺序 选择 „ 值n 多分支选择 M A T CASE 值1 值2 A B
d ef WHILE条件 A UNTIL条件 A A
S1 S2
“当型”循环
“直到型”循环 S3 定义A( 对A细化)
21
使用PAD图逐步求精
开始 输入A( 1 ) 到 1 0) 的值 A( 置初值:n=1 0 sort 输入A( 1 ) 到 1 0) 的值 A( 结束 j=i+1 max=A(i) d ef sort WHILE i n-1 ≤ A(i)=max i=i+1 i=1 WHILE j n ≤ j=j+1 T max<A(j) F B=max max=A(j) A(j)=B
A B 顺序 C A 选择 B A B C
„
C
多分支选择
C T A
F
A C T F
其中A或B为: ①非转移语句(可以是空) ②三种基本结构之一 C为判定条件
“当型”循环
“直到型”循环
4
结构化程序设计方法
程序的代码块仅使用顺序、选择和循环 3种基本的控制结构 每个代码块单入口单出口 尽可能少用GO TO语句
5
6.2 人机界面设计
人机界面设计是接口设计的一个重要 的组成部分。
人机界面的设计质量,直接影响用户 对软件产品的评价,必须给予足够重视。 4个设计问题:系统响应时间、用户帮 助设施、出错信息处理和命令交互。
6
6.2.2 设计过程
用户界面设计是一个迭代的过程
先创建设计模型 再用原型实现这个设计模型 由用户试用和评估 根据用户意见进行修改
46
--* create a new words dictionary dictionary := merge dictionary and good word list END spellcheck
47
6.5 程序复杂程度的定量度量
McCabe方法和Halstead方法:定量度量程序 复杂程度的方法 把程序的复杂程度乘以适当常数即可估算出软 件中错误的数量以及软件开发需要用的工作量 定量度量的结果可以用来比较两个不同的设计 或两个不同算法的优劣 程序的定量的复杂程度可以作为模块规模的精 确限度
第6章 详细设计
6.1 结构程序设计 6.2 人机界面设计 6.3 过程设计的工具 6.4 面向数据结构的设计方法 6.5 程序复杂程度的定量度量 6.6 小结 习题
详细设计
根本目标是确定“应该怎样具体地实 现所要求的系统?”