1、第四章第四章 软件设计概述软件设计概述n软件设计任务软件设计任务n软件设计基本概念软件设计基本概念n模块化设计模块化设计n设计需要处理问题设计需要处理问题n设计文档及其复审设计文档及其复审第1页第1页什么是设计?什么是设计?n把问题转化为处理方案创造性过把问题转化为处理方案创造性过程;处理方案描述也称为设计。程;处理方案描述也称为设计。第2页第2页设计和需求有什么不同?n张君和李丽想张君和李丽想建建一栋新居子。他们需求一栋新居子。他们需求下列:下列:n三个小孩有玩耍空间,并独立拥有各自睡房三个小孩有玩耍空间,并独立拥有各自睡房n一间主人卧房一间主人卧房n一个厨房一个厨房n冬天可取暖,夏天可制冷
2、冬天可取暖,夏天可制冷n室内通水通电室内通水通电n等等等等第3页第3页设计和需求有什么不同?n设计师方案设计师方案:n屋子楼上有四间睡房,楼下有一间客房,一屋子楼上有四间睡房,楼下有一间客房,一间厨房,一个玩具房和一个杂物室等等。间厨房,一个玩具房和一个杂物室等等。n尚有其它方案吗?尚有其它方案吗?第4页第4页软件设计两个阶段软件设计两个阶段n设计者必须同时满足用户和系统开发人员要求设计者必须同时满足用户和系统开发人员要求n概要设计书概要设计书n详细设计书详细设计书n设计者迂回于各种活动中:设计者迂回于各种活动中:n理解需求理解需求n提出也许方案提出也许方案n测试方案也许性测试方案也许性n向用
3、户描述各种也许向用户描述各种也许n向编程人员提供设计文档向编程人员提供设计文档第5页第5页软件设计内容软件设计内容n体系结构设计体系结构设计n定义软件部件间关系定义软件部件间关系n接口设计接口设计n软件内部、外部及与人之间通信软件内部、外部及与人之间通信n数据设计数据设计n信息模型信息模型 软件数据结构软件数据结构n过程设计过程设计n软件组件过程性描述软件组件过程性描述第6页第6页软件设计任务软件设计任务n分析模型分析模型 设计模型设计模型 设计文档设计文档n回答回答How to do?n能够分为概要设计、详细设计能够分为概要设计、详细设计n软件设计包括软件设计包括n数据设计数据设计n体系结构
4、设计体系结构设计n接口设计接口设计n过程设计过程设计第7页第7页分解和模块化分解和模块化n系统设计办法:系统设计办法:n功效分解:将功效作为组件功效分解:将功效作为组件n面向数据分解:基于外部数据结构面向数据分解:基于外部数据结构n面向事件分解:基于系统必须处理事件面向事件分解:基于系统必须处理事件n外部输入设计:基于系统用户输入外部输入设计:基于系统用户输入n面向对象设计:定义对象类及其互相联系面向对象设计:定义对象类及其互相联系第8页第8页分解层次化分解层次化第9页第9页模块和模块化模块和模块化n模块化:当系统每项功效正好由一个输入输出模块化:当系统每项功效正好由一个输入输出都明拟定义组件
5、完毕时候,我们称这个系统模都明拟定义组件完毕时候,我们称这个系统模块化。块化。n模块模块表示能够用计算机程序代码实现,相表示能够用计算机程序代码实现,相对独立单一数据处理功效,因此模块有时也叫对独立单一数据处理功效,因此模块有时也叫功效模块。功效模块。n进一步明确模块是拥有明拟定义输入、输出和进一步明确模块是拥有明拟定义输入、输出和特性程序实体。特性程序实体。第10页第10页设计办法选择设计办法选择n应该允许不同设计者使用他们喜欢技巧,只要他们文档能让其它设计者明白就能够了。n设计方法选择又是取决于设计者偏好,而更多时候取决于系统要求结构或数据。第11页第11页软件设计中涉及问题软件设计中涉及
6、问题n抽象(抽象(abstract)与细化)与细化(refinement)n抽象:分层次考虑和处理问题抽象:分层次考虑和处理问题(数据和过程数据和过程)n细化:从高到低逐步分解过程细化:从高到低逐步分解过程n信息隐藏信息隐藏n对其它模块隐藏模块内部数据和过程对其它模块隐藏模块内部数据和过程第12页第12页抽抽 象象n抽象是对详细对象(问题)进行概括,抽出抽象是对详细对象(问题)进行概括,抽出这一类对象公共性质并加以描述过程。这一类对象公共性质并加以描述过程。n先注意问题本质及描述,另一方面是实现过程或先注意问题本质及描述,另一方面是实现过程或细节。细节。n数据抽象:描述某类对象属性或状态(对象
7、互相数据抽象:描述某类对象属性或状态(对象互相区别物理量)。区别物理量)。n代码抽象:描述某类对象共有行为特性或含有功代码抽象:描述某类对象共有行为特性或含有功效。效。n抽象实现:通过类申明。抽象实现:通过类申明。第13页第13页模块化设计好处模块化设计好处n信息隐藏n从不同角度了解系统n将难以处理问题独立出来;抽象层次经过逐层分析来了解问题n允许不同模块采取不同设计方法第14页第14页模块化设计模块化设计n把大型软件按照要求原则划分成一个个较把大型软件按照要求原则划分成一个个较小、相对独立但又互相关联模块小、相对独立但又互相关联模块n主要指导思想:主要指导思想:n分解分解n模块独立性模块独立
8、性第15页第15页分解(分解(Decomposition)n模块化是为了使一个复杂大型程序能被模块化是为了使一个复杂大型程序能被人智力所管理人智力所管理n设函数设函数c(x)定义问题定义问题x复杂程度,函数复杂程度,函数E(X)拟定处理问题拟定处理问题x需要工作量(时间)需要工作量(时间)。对于两个问题。对于两个问题P1 和和P2,假如,假如显然显然第16页第16页模块化依据模块化依据n人类处理普通问题时一个有趣规律:人类处理普通问题时一个有趣规律:C(P1+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)n结论:各个击破结论:各个击破把复杂问题分解成把复杂问题分解成容易处理
9、小问题,本来问题也就容易处容易处理小问题,本来问题也就容易处理了理了第17页第17页问题提出问题提出n假如无限分割软件,最后为了开发软假如无限分割软件,最后为了开发软件而需要工作量也就小得能够忽略了。件而需要工作量也就小得能够忽略了。?第18页第18页模块数与开发工作量关系模块数与开发工作量关系模块数模块数接口成本接口成本最小成本区最小成本区M软软件件开开发发工工作作量量总成本总成本模块成本模块成本第19页第19页模块划分基本原则模块划分基本原则n概括了把软件划分为模块时要遵守准则,概括了把软件划分为模块时要遵守准则,也是判断模块结构是不是合理原则。也是判断模块结构是不是合理原则。n但是到当前
10、为止,没有统一原则判断一但是到当前为止,没有统一原则判断一个系统化分成几种模块是最优。个系统化分成几种模块是最优。第20页第20页模块划分四项基本原则模块划分四项基本原则1.模块独立性强模块独立性强n块内联系强块内联系强 n块间联系弱块间联系弱2.高内聚高内聚n模块内部各成份之间模块内部各成份之间3.低耦合低耦合n一个模块与其它模块之间一个模块与其它模块之间4.公共(共享)公共(共享)模块模块n多个模块公用多个模块公用第21页第21页模块独立性模块独立性n为何模块独立性很重要?n有效模块化软件容易开发出来n独立模块比较容易测试和维护n人独立性强如何?n人没有独立性,什么都依赖别人如何?第22页
11、第22页内聚内聚、耦合定义、耦合定义n内内聚聚是是模模块块功功效效强强度度(一一个个模模块块内内部部各各个元素彼此结合紧密程度)度量。个元素彼此结合紧密程度)度量。n耦合是对软件内部块间联系度量。耦合是对软件内部块间联系度量。一一个个模模块块内内部部各各个个元元素素之之间间联联系系越越紧紧密密,则则它它内内聚聚性性就就越越高高,相相对对地地,它它与与其其它它模模块块之之间间耦耦合合就就会会减减低低,而而模模块块独独立性就越强。立性就越强。第23页第23页内聚与耦合内聚与耦合n内聚和耦合是相互关联。在程序结构中各模块内聚程度越高,模块间耦合程度就越低。但这也不是绝正确。软件概要设计目标是力争增加
12、模块内聚,尽也许降低模块间耦合,但增加内聚比降低耦合更主要,应该把更多注意力集中到提升模块内聚程度上来。第24页第24页内聚内聚等级划分等级划分 弱弱 强强低内聚低内聚 中内聚中内聚 高内聚高内聚 第25页第25页低低 内内 聚聚n.偶然性内聚n模块内各部分没有联络,或者即使有联络,这种联络也很涣散。n.逻辑性内聚n这种模块把几个相关功效组合在一起,每次调用时,由传送给模块鉴定参数来确定该模块应执行哪一个功效。这种模块是单入口多功效模块。类似有错误处理模块。它接受犯错信号,对不同类型错误打印出不同犯错信息。第26页第26页低低 内内 聚聚.时间性内聚时间性内聚时间内聚又称为典型内聚。这种模块大
13、多时间内聚又称为典型内聚。这种模块大多为多功效模块,但模块各个功效执行与时为多功效模块,但模块各个功效执行与时间相关,通常要求所有功效必须在同一时间相关,通常要求所有功效必须在同一时间段内执行。比如初始化模块和终止模块。间段内执行。比如初始化模块和终止模块。第27页第27页中中 内内 聚聚.过程性内聚过程性内聚n假如一个模块内处理是相关,并且必须以特假如一个模块内处理是相关,并且必须以特定顺序执行,则称这个模块为过程内聚模块。定顺序执行,则称这个模块为过程内聚模块。.通讯性内聚通讯性内聚n假如一个模块内各功效部分都使用了相同输假如一个模块内各功效部分都使用了相同输入数据,或产生了相同输出数据,
14、则称之为入数据,或产生了相同输出数据,则称之为通信内聚模块。通信内聚模块。第28页第28页高高 内内 聚聚.顺序性内聚顺序性内聚n假假如如一一个个模模块块内内处处理理元元素素和和同同一一个个功功效效密密切切相相关关,并并且且这这些些处处理理必必须须顺顺序序执执行行(通通常常一一个个处处理元素输出数据作为下一个处理元素输入数据)理元素输出数据作为下一个处理元素输入数据).功效性内聚功效性内聚n一个模块中各个部分都是某一详细功效必不可一个模块中各个部分都是某一详细功效必不可少构成部分,或者说该模块中所有部分都是为少构成部分,或者说该模块中所有部分都是为了完毕一项详细功效而协同工作,紧密联系,了完毕
15、一项详细功效而协同工作,紧密联系,不可分割。则称该模块为功效内聚模块。不可分割。则称该模块为功效内聚模块。第29页第29页七种内聚优劣评分七种内聚优劣评分n功效内聚 10分n顺序内聚 9分n通信内聚 7分n过程内聚 5分n时间内聚 3分n逻辑内聚 1分n偶然内聚 0分高内聚高内聚低内聚低内聚第30页第30页逻辑逻辑内聚内聚模块模块 判断判断调用模块调用模块读读一一个个记记录录写写一一个个记记录录被被调调用用模模块块第31页第31页常见内聚类型常见内聚类型第32页第32页常见内聚类型常见内聚类型第33页第33页耦耦 合合n对一个软件结构内不同模块之间互连程度度量。耦合强弱取决于模块间接口复杂程度
16、、调用模块方式以及哪些信息通过接口。n在软件设计中应该追求尽也许涣散耦合系统第34页第34页耦合七种类型(低耦合七种类型(低高)高)1.非非直直接接耦耦合合:假假如如两两个个模模块块之之间间没没有有直直接接关关系系,它它们们之之间间联联系系完完全全是是通通过过主主要要模模块块控控制制和和调调用用来来实现,这就是非直接耦合。实现,这就是非直接耦合。2.数据耦合:数据耦合:假如一个模块访问另一个模块时,彼假如一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来互换输入、输出信息,则据结构或外部变量)来互换输入、输出信息
17、,则称这种耦合为数据耦合。称这种耦合为数据耦合。3.标识标识(特性)(特性)耦合耦合:假如一组模块通过参数表传假如一组模块通过参数表传递统计信息,就是标识耦合。事实上,这组模块递统计信息,就是标识耦合。事实上,这组模块共享了这个统计,它是某一类数据结构子结构,共享了这个统计,它是某一类数据结构子结构,而不是简朴变量。这要求这些模块都必须清楚该而不是简朴变量。这要求这些模块都必须清楚该纪录结构,并按结构要求对此统计进行操作。纪录结构,并按结构要求对此统计进行操作。第35页第35页耦合七种类型(续)耦合七种类型(续)4.控制耦合控制耦合:假如一个模块通过传递开关、标志、假如一个模块通过传递开关、标
18、志、名字等控制信息,明显控制选择另一模块功效,就名字等控制信息,明显控制选择另一模块功效,就是控制耦合。是控制耦合。5.外部耦合外部耦合:一组模块都访问同一全局简朴变量而一组模块都访问同一全局简朴变量而不是同一全局数据结构,并且不是通过参数表传递不是同一全局数据结构,并且不是通过参数表传递该全局变量信息,则称之为外部耦合。该全局变量信息,则称之为外部耦合。6.公共耦合公共耦合:若一组模块都访问同一个公共数据环若一组模块都访问同一个公共数据环境,则它们之间耦合称为公共耦合。公共数据环境境,则它们之间耦合称为公共耦合。公共数据环境能够是全局数据结构、共享通信区、内存公共覆盖能够是全局数据结构、共享
19、通信区、内存公共覆盖区等。区等。7.内容耦合:假如一个模块能够直接调用另一模块中内容耦合:假如一个模块能够直接调用另一模块中数据,或者允许一个模块直接转移到另一个模块中数据,或者允许一个模块直接转移到另一个模块中去,则称它们间耦合为内容耦合。去,则称它们间耦合为内容耦合。第36页第36页弱弱 耦耦 合合数据耦合数据耦合非直接非直接耦合耦合模块模块2模块模块1模块模块4模块模块3特性耦合(参数表特性耦合(参数表传递数据结构)传递数据结构)第37页第37页公公 共共 耦耦 合合第38页第38页公公 共共 耦耦 合合公共耦合会引起下列问题:公共耦合会引起下列问题:1 1.所所有有公公共共耦耦合合模模
20、块块都都于于某某一一个个公公共共数数据据环环境境内内部部各各项项物物理理安安排排相相关关,若若修修改改某某个个数数据据大大小,将会影响到所有模块。小,将会影响到所有模块。2 2.无无法法控控制制各各个个模模块块对对公公共共数数据据存存取取,严严重重影影响软件模块可靠性和适应性。响软件模块可靠性和适应性。3 3.公共数据名使用,明显减少了程序可读性。公共数据名使用,明显减少了程序可读性。第39页第39页内内 容容 耦耦 合合n假如出现下列情况之一,两个模块间就假如出现下列情况之一,两个模块间就发生了内容耦合:发生了内容耦合:n一个模块访问另一个模块内部数据一个模块访问另一个模块内部数据n一个模块
21、不通过正常入口而转到另一个模一个模块不通过正常入口而转到另一个模块内部块内部n两个模块有一部分程序代码重叠(只也许两个模块有一部分程序代码重叠(只也许出现在汇编程序中)出现在汇编程序中)n一个模块有多个入口(这意味着一个模块一个模块有多个入口(这意味着一个模块有几种功效)有几种功效)第40页第40页(a)(a)进入另一模块内部进入另一模块内部(b b)模块代码重叠)模块代码重叠(c c)多入口模块)多入口模块ABABEnty1enty2内内 容容 耦耦 合合第41页第41页n内容耦合内容耦合 0分分n公共耦合公共耦合 1分分n外部耦合外部耦合 3分分n控制耦合控制耦合 5分分n特性耦合特性耦合
22、 7分分n数据耦合数据耦合 9分分n非直接耦合非直接耦合 10分分高耦合高耦合低耦合低耦合七种耦合优劣评分七种耦合优劣评分第42页第42页关于耦合设计原则关于耦合设计原则n尽也许使用数据(特性)耦合n少用控制耦合n限制公共环境耦合范围n完全不用内容耦合第43页第43页建立公共(共享)模块建立公共(共享)模块 建建立立公公共共模模块块目目的的是是减减少少冗冗余余,减减少少不不必必要要重重复复工工作作,划划出出某某项项功功效效成成为为一一个个能能被被几几种种模模块块共共同同利利用用模模块块。也也就就模模块块结结构构图图形形态态是中层宽敞,上下小。是中层宽敞,上下小。例:球场,田径场例:球场,田径场
23、第44页第44页哪种设计方案更加好呢哪种设计方案更加好呢?第45页第45页自顶向下和自底向上设计自顶向下和自底向上设计n自顶向下自顶向下n顶层开始顶层开始n逐步分解逐步分解n由底向上由底向上 n选择关键部分先设计选择关键部分先设计n扩展到整个系统扩展到整个系统第46页第46页两种设计办法比较两种设计办法比较3.假如在可行性上出现问题,假如在可行性上出现问题,能够较早发觉能够较早发觉3.需要进行详细需要进行详细可行性论可行性论证证2.整体测试也许在模块接口整体测试也许在模块接口间发觉不一致等问题间发觉不一致等问题2.整体测试较易通过整体测试较易通过1.也许造成较大重新设计也许造成较大重新设计1.
24、易于修改和扩展易于修改和扩展由底向上设计由底向上设计自顶向下设计自顶向下设计第47页第47页4.4.1 协同设计协同设计n谁最适当设计系统某首先?谁最适当设计系统某首先?n如何使组内组员互相理解别人设计?如何使组内组员互相理解别人设计?n如何协调设计组件使整个系统统一如何协调设计组件使整个系统统一第48页第48页4.4.2 用户用户(人机人机)界面设界面设计计n让用户驾驭软件,不是软件驾驭用户让用户驾驭软件,不是软件驾驭用户 n减少用户记忆减少用户记忆 n保持界面一致性保持界面一致性第49页第49页 人机界面设计人机界面设计 人机界面通常也称为人机界面通常也称为用户界面用户界面。(Human
25、ComputerInterface,简称简称HCI)界面设计界面设计主要包括三个方面:主要包括三个方面:n设计软件构件之间接口设计软件构件之间接口n设计模块和其它非人信息生产者和设计模块和其它非人信息生产者和消费者界面消费者界面n设计人(如用户)和计算机间界面设计人(如用户)和计算机间界面 第50页第50页 界面设计原则界面设计原则n分析用户类型n应用程序和界面分离n一致性n尽也许降低用户工作n提供反馈n犯错处理和帮助功效n增加可视化图形表示第51页第51页界面设计界面设计-黄金规则黄金规则在相关界面设计中在相关界面设计中三条三条黄金原则黄金原则:n置于用户控制之下置于用户控制之下n减少用户记
26、忆承担减少用户记忆承担n保持界面一致保持界面一致 第52页第52页黄金规则:黄金规则:置于用户控制之下置于用户控制之下 Mandel定义一组允许用户操作控制原则定义一组允许用户操作控制原则:n以不逼迫用户进入不必要或不希望动作方式来定以不逼迫用户进入不必要或不希望动作方式来定义交互方式义交互方式n提供灵活交互提供灵活交互n允许用户交互能够被中断和撤消允许用户交互能够被中断和撤消n当技能级别增长时能够使交互流水化并允许定制当技能级别增长时能够使交互流水化并允许定制交互交互n使用户隔离内部技术细节使用户隔离内部技术细节n设计应允许用户和出现在屏幕上对象直接交互设计应允许用户和出现在屏幕上对象直接交
27、互第53页第53页黄金规则:黄金规则:减少用户记忆承担减少用户记忆承担 Mandel定义了一组设计原则,使界面能定义了一组设计原则,使界面能够减少用户记忆承担够减少用户记忆承担:n减少对短期记忆要求减少对短期记忆要求n建立故意义缺省建立故意义缺省n定义直觉性捷径定义直觉性捷径n界面视觉布局应当基于真实世界隐喻界面视觉布局应当基于真实世界隐喻n以不断进展方式揭示信息以不断进展方式揭示信息第54页第54页第55页第55页缺省值第56页第56页黄金规则:黄金规则:保持界面一致保持界面一致 用户应以一致方式展示和获取信息:用户应以一致方式展示和获取信息:n所有可视信息组织均按照均按照贯穿所有屏幕显所有
28、可视信息组织均按照均按照贯穿所有屏幕显示所保持设计原则示所保持设计原则n输入机制被约束到有限集合,在整个应用中被一输入机制被约束到有限集合,在整个应用中被一致地使用致地使用n从任务到任务导航机制被一致地定义和实现从任务到任务导航机制被一致地定义和实现Mandel定义了一组帮助保持界面一致性设计原则:定义了一组帮助保持界面一致性设计原则:n允许用户将允许用户将当前任务当前任务放入故意义语境放入故意义语境n在应用系列内保持一致性在应用系列内保持一致性n如过去交互模型已建立起了用户盼望,除非有迫如过去交互模型已建立起了用户盼望,除非有迫不得已理由,不要改变它不得已理由,不要改变它第57页第57页界面
29、设计界面设计-用户友好性设计用户友好性设计 用户友好性用户友好性普通属软件性能特性,普通属软件性能特性,它独立于所有详细功效,却影响着它独立于所有详细功效,却影响着所有功效重用性。所有功效重用性。用户友好性用户友好性应表达在与用户有接应表达在与用户有接口软件特性上。口软件特性上。用户友好性主线目的是为了用户友好性主线目的是为了软件可重用性、可维护性。软件可重用性、可维护性。第58页第58页用户友好性标志用户友好性标志n可操作性可操作性n健壮性健壮性n易学习性易学习性n可扩展性可扩展性 第59页第59页 系统闭合等级系统闭合等级:n极限闭合等级极限闭合等级:15:15秒秒n复杂闭合等级:复杂闭合
30、等级:4 41515秒秒n简朴闭合等级:简朴闭合等级:2 24 4 秒秒n最简朴闭合等级最简朴闭合等级:1:12 2 秒秒n瞬时响应瞬时响应:1:1秒秒界面设计界面设计-反馈响应时间反馈响应时间(系统延系统延迟迟)第60页第60页用户界面设计用户界面设计-界面设计模型界面设计模型设计用户界面要考虑四种模型:设计用户界面要考虑四种模型:软件工程师创建软件工程师创建设计模型设计模型 人员工程师创建人员工程师创建用户模型用户模型 终端用户对未来终端用户对未来系统假想系统假想系统实现后得到系统实现后得到系统映象系统映象四种模型可四种模型可能相差甚远,能相差甚远,界面设计人界面设计人员任务就是员任务就是
31、消除这些差消除这些差距,导出一距,导出一致界面表示致界面表示第61页第61页用户界面设计过程用户界面设计过程n用户界面设计过程包含四种不同框架:n用户、任务和环境分析及建模n界面设计n界面结构n界面确认第62页第62页用户分析用户分析n偶然型偶然型n生疏型生疏型n纯熟型纯熟型n专家型专家型新手新手对系统有理解中级用户对系统有理解中级用户对系统有理解经惯用户对系统有理解经惯用户用户类型用户类型:第63页第63页影响用户行为特性原因影响用户行为特性原因n人人-机匹配性机匹配性n人固有技能人固有技能n人固有弱点人固有弱点n用户知识经验用户知识经验n用户对系统盼望和态度用户对系统盼望和态度第64页第6
32、4页用户对计算机系统要求用户对计算机系统要求n让用户灵活地使用n适应不同类型用户n系统行为及效果对用户透明n用户对系统盼望和态度n提供联机帮助功效n人机交互尽也许和人际通信相同第65页第65页用户技能方面使用需求用户技能方面使用需求n应让系统去适应用户应让系统去适应用户n使用易于理解、掌握准自然语言使用易于理解、掌握准自然语言n一致性系统设计一致性系统设计n用户对系统盼望和态度用户对系统盼望和态度n能通过系统学习能通过系统学习n系统提供演示及范例系统提供演示及范例第66页第66页用户习性方面使用需求用户习性方面使用需求n系统应让用户有耐心n系统应很好地对付人易犯错误n系统应对不同用户提供不同交
33、互方式第67页第67页用户经验、知识方面使用需求用户经验、知识方面使用需求n系统应能让未经专门训练用户使用n系统能对不同经验用户做出不同反应n提供同一系统一致性,建立标准化人-机界面n系统必须适应用户在应用领域知识改变,提供动态自适应设计第68页第68页用户对系统盼望方面要求用户对系统盼望方面要求n用户界面应提供形象、生动、美观布局显示和操作环境n系统处理问题应尽也许简朴,提供学习机制n系统应对不同用户提供不同交互方式第69页第69页人人-机界面机界面8 8种种交互方式交互方式1 1 菜单界面菜单界面 按显示形象分类按显示形象分类:n正文菜单正文菜单n图标菜单图标菜单n正文图标混合菜单正文图标
34、混合菜单按屏幕位置和操作风格分类按屏幕位置和操作风格分类:n固定固定n浮动浮动n下拉式下拉式n嵌入式嵌入式第70页第70页图标式菜单图标式菜单菜单条菜单条弹出式菜单弹出式菜单弹出式帮助文本弹出式帮助文本第71页第71页下拉式菜单、瀑布式菜单下拉式菜单、瀑布式菜单瀑布式菜单瀑布式菜单第72页第72页第73页第73页第74页第74页第75页第75页2 2 对话对话 对话形式对话形式:(1)(1)必须回答式必须回答式(2)(2)无需回答式无需回答式(3)(3)警告式警告式 对话实现方式对话实现方式:(1)(1)原则对话原则对话(2)(2)定做式对话定做式对话人人-机界面机界面8 8种种交互方式交互方
35、式第76页第76页3.3.功效键功效键4.4.图符界面图符界面5.5.填表界面填表界面6.6.命令语言界面命令语言界面7.7.查询语言界面查询语言界面8.8.自然语言界面自然语言界面人人-机界面机界面8 8种种交互方式交互方式第77页第77页控制界面设计控制界面设计(1)(1)用控制对话选择操作命令用控制对话选择操作命令(2)(2)用菜单界面进行控制用菜单界面进行控制(3)(3)用功效键定义操作命令用功效键定义操作命令(4)(4)用图标表示对象或命令用图标表示对象或命令第78页第78页 界面设计开发界面设计开发 界面设计过程环节界面设计过程环节:n建立任务目的和意图建立任务目的和意图n为每个目
36、的和意图制定特定动作序列为每个目的和意图制定特定动作序列n按在界面上执行方式对动作序列进行规约按在界面上执行方式对动作序列进行规约n指明系统状态,即执行动作时界面表现指明系统状态,即执行动作时界面表现 n定义控制机制,即用户可用改变系统状态设备和定义控制机制,即用户可用改变系统状态设备和动作动作n指明控制机制如何影响系统状态指明控制机制如何影响系统状态n指明用户如何通过界面上信息解释系统状态指明用户如何通过界面上信息解释系统状态第79页第79页 一、一、定义界面对象和动作定义界面对象和动作 为创建描述图符图形设计和放置、为创建描述图符图形设计和放置、描述性屏幕文字定义、窗口规约和命描述性屏幕文
37、字定义、窗口规约和命名、菜单项规约屏幕布局提供基础。名、菜单项规约屏幕布局提供基础。响应时间、命令和动作结构、错误响应时间、命令和动作结构、错误处理和帮助设施等设计问题应当在精处理和帮助设施等设计问题应当在精化设计模型时考虑。化设计模型时考虑。第80页第80页二、二、导航方式导航方式层次层次线性线性第81页第81页混合式混合式网络式网络式二、二、导航方式导航方式第82页第82页三、三、数据输入数据输入界面设计界面设计数据输入规则数据输入规则n明确输入明确输入n明确动作明确动作n明确取消明确取消n确认删除确认删除n提供反馈提供反馈n允许编辑允许编辑n提供复原(提供复原(UndoUndo)n自由格
38、式自由格式n提醒输入范围提醒输入范围第83页第83页四、四、数据显示界面设计数据显示界面设计n数据显示规则n只显示必要数据n在一起使用数据显示在一起n显示出数据应与用户执行任务相关n每一屏数据数量不应超出整个屏幕面积30%n屏幕布局规则n尽也许少用代码和缩写n多个显示画面,应建立统一格式n提供明了标题、标栏及其它提醒信息n遵照用户习惯n采取颜色、字符大小、下划线、不同字体等方式强化主要数据第84页第84页第85页第85页第86页第86页第87页第87页第88页第88页五、五、实现工具实现工具 用户界面工具箱用户界面工具箱 用户界面开发系统用户界面开发系统(UIDS):采用预包装软件构件来结构用
39、户界面采用预包装软件构件来结构用户界面 UIDS固有机制固有机制:n管理输入设备管理输入设备n确认用户输入确认用户输入n处理错误和显示犯错信息处理错误和显示犯错信息n提供反馈提供反馈(如自动输入响应如自动输入响应)n提供帮助和提醒提供帮助和提醒n处理窗口、域和窗口内滚动处理窗口、域和窗口内滚动n建立应用软件和界面间连接建立应用软件和界面间连接n将应用程序与界面管理将应用程序与界面管理功效分开功效分开n允许用户定制界面允许用户定制界面 第89页第89页六、六、设计评估设计评估-界面设计评价周期界面设计评价周期初步设计初步设计创建原型创建原型#n界面界面修改设计修改设计用户评估用户评估界面界面设计
40、者研究设计者研究评估结果评估结果创建原型创建原型#1界面界面第90页第90页HELP系统设计系统设计 HELP HELP系统设计不属于界系统设计不属于界面设面设 计范围,涉及系统整体计范围,涉及系统整体结构,是结构,是 结构级用户友好性结构级用户友好性设计。设计。第91页第91页 帮助方式:帮助方式:n 操作指南文档操作指南文档 (植入系统、未植入系统植入系统、未植入系统)n 基于帮助文献要求性帮助基于帮助文献要求性帮助 (命令级帮助命令级帮助)n 阐明性帮助阐明性帮助n 嵌入系统要求性帮助嵌入系统要求性帮助n 嵌入培训功效智能帮助系统嵌入培训功效智能帮助系统HELP系统设计系统设计第92页第
41、92页设计模板和复用设计模板和复用Design with reuse,design for reuse第93页第93页并发系统设计并发系统设计如何确保同时执行组件间对共享如何确保同时执行组件间对共享数据一致性数据一致性?第94页第94页并发处理(顺序执行)并发处理(顺序执行)1、组件组件1查询查询X是否为空。是否为空。2、组件组件1被告知被告知X不为空。不为空。3、组件组件2查询查询X是否为空。是否为空。4、组件组件2被告知被告知X不为空。不为空。5、组件组件1出栈,删除最后一个元素。出栈,删除最后一个元素。6、组件组件2想出栈,但想出栈,但X已为空,系统已为空,系统进入非法状态。进入非法状态
42、。第95页第95页并发处理并发处理1、组件组件1问询栈问询栈X是否为空。是否为空。2、组件组件1被告知栈被告知栈X不为空。不为空。3、组件组件2问询栈问询栈X是否为空。是否为空。4、组件组件2被告知栈被告知栈X不为空。不为空。5、组件组件1出栈,删去最后一个元素,并锁住栈出栈,删去最后一个元素,并锁住栈X。6、组件组件2想出栈,但被告知想出栈,但被告知X已上锁。已上锁。7、另一个组件加了一个元素到栈另一个组件加了一个元素到栈X中。中。8、组组件件2被被告告知知X已已开开锁锁(由由于于外外部部进进程程或或者者由由于于组组件件2 再次尝试)再次尝试)9、组件组件2出栈。出栈。第96页第96页好设计
43、具备特性好设计具备特性n模块独立性模块独立性n异常辨认和处理异常辨认和处理n检错和容错机制检错和容错机制第97页第97页软件设计文档软件设计文档n软件设计阐明书软件设计阐明书n1)范围范围 n2)数据设计数据设计 n3)体系结构设计体系结构设计n4)接口设计接口设计 n5)模块过程设计模块过程设计 n6)其它其它 包括测试考虑,确保设计满足所有包括测试考虑,确保设计满足所有需求,设计约束和一些特殊注解等内容。需求,设计约束和一些特殊注解等内容。第98页第98页设计复审(设计复审(design review)n及早发觉设计中缺点及早发觉设计中缺点n差错传播差错传播n复审内容复审内容n概要设计复审
44、概要设计复审 n系统总体结构,模块划分,内外接口系统总体结构,模块划分,内外接口 n详细设计复审详细设计复审 n各个模块详细设计各个模块详细设计 第99页第99页差错传播模型差错传播模型第100页第100页有有/无设计复审纠错费用比较无设计复审纠错费用比较202 80412367.0交付使用后交付使用后315 12308215.0综合综合-系统测试系统测试234 1432236216.5综合测试前综合测试前33221.5设计阶段设计阶段纠错代纠错代价价揭发错误时间揭发错误时间第101页第101页1.在老式软件设计中,概要设计复审与在老式软件设计中,概要设计复审与过程设计复审应当分开进行,不允许
45、过程设计复审应当分开进行,不允许合并为一次复审。合并为一次复审。2.除软件开发人员外,概要设计复审必除软件开发人员外,概要设计复审必须有用户代表参与,必要时还可邀请须有用户代表参与,必要时还可邀请相关领域专家到会。过程设计复审普相关领域专家到会。过程设计复审普通不邀请用户和其它领域代表。通不邀请用户和其它领域代表。复审复审5条条指导原则指导原则第102页第102页复审复审5条条指导原则指导原则3.参与复审设计人员应欢迎别人提出批评参与复审设计人员应欢迎别人提出批评和提议,不要为设计缺点和提议,不要为设计缺点“护短护短”。4.复审中提出问题应详细统计,但不要寻复审中提出问题应详细统计,但不要寻求当场处理。求当场处理。5.复审结束时,应作出本次复审能否通过复审结束时,应作出本次复审能否通过结论。结论。第103页第103页设计复审(设计复审(design review)n复审方式复审方式nFormal reviewnDesign review meetingnInformal reviewnWalk-through第104页第104页作作 业业 习习 题题 P85n1.n2.n3n5n7?第105页第105页