当前课程知识点:软件工程 > 第12章 软件交互设计 > 12.4 KLM效率模型 > Video
设计原理方面
下面我需要给大家
介绍两个非常有用的量化方法
它关乎我们界面设计的
交互效率
就是大家使用起来的
这种速度体验
第一个是我们叫做KLM模型
中文叫击键层的效率模型
就是Keystroke-level model
它是用来测量任务完成的时间
有具体交互任务完成的时间
那么我们的界面设计本身
实际上决定了这样一个时间量
下面我们来介绍一下
这个模型的组成和计算规则
进一步地我们还会讨论
基于这个模型
我们如何来做界面效率的优化
那么它叫做击键层这个模型
有这样几个方面
就是说我刚才要
介绍它的组成和优化
那么我们来看一下
具体的这个模型的组成
那么它考虑两类
很简单
但是非常基本的
一共四种击键动作
所以它叫Keystroke-level
那么一类是关于键盘的操作
就是键盘的键的按键操作
一类我们称为GID
叫Graphical Input Devices
就是图形输入设备
就是很典型的
我们的鼠标 我们的触屏
那么在键盘的操作上
我们只考虑这个Tap
就是按下这个键
那么鼠标的操作就如表上所示
有单击 双击和拖拽
这样严格的定义
比如Tap就定义为按下
并且松开一个键
就是在我们的键盘上
按下并且松开
而Click
大家都知道是什么意思了
Drag就是一个拖拽动作
用鼠标拽着一个对象
到它的目的地以后要松开
这是一个非常细节的
就是关于击键动作的定义
两类 四个动作
那么这个键盘
也就是说在这个图形输入
以及键盘上
按键方式的详细定义
和简化表示
大家可以阅读
我们用KLM描述的界面操作
我们有这样的一些定义
我们可以看到
比如这里有一个复杂的
组合按键
有一些简化的
比如我们这个是表示
我按下Shift
但是并没有松开
而我们完整地按一个键
我们可以有三种表示
像这个T按下并松开
按下并松开
就不再重复讲这个T了
或者是非常简单
就是表示一个字母
我们来举一个
比较复杂一点的例子
这个是苹果的
硬键盘上的一个操作
比如把Shift键按下去
这个时候并不松开
而我们再敲一个N这个键
然后再把Ctrl键按下去
也不松开
再敲一个K
然后再把我们刚才按的
这个Shift键松开
再敲一个W
然后把刚才按下的Ctrl松开
这是苹果其实隐含了
一个界面的一个命令
大家可以试一下
那么这是我们前面
就是说我们KLM的组成
那下面是这个KLM是
要以时间来进行度量的
它定义了就是说
接口操作的一些典型的时间
这个也非常简单
它就是用了大量
就是用户研究做实验以后
得到了这样一些典型的值
这个是用来
将来我们带入到模型中计算
来进行使用的
我们看到有这样几个参数
一个叫做Key
我们平均按一个键
就是敲键盘敲一下 是0.2秒
然后我们Pointing
就是说我们
鼠标移动到一个点上
这个Pointing的过程
平均是1.1秒
这个值可能我们平时不去考虑
叫Homing
也就是说我们如果有
俩图形输入设备
包括键盘和鼠标以及其他的
那么我们在一个界面上
有可能运用两类输入设备
那你要在设备之间进行切换
我们叫Homing
所以这个是0.4秒
就是我把手从键盘移到鼠标上
或者反过来
那么这个时间叫
我们是说心理准备的一个时间
也就是我在界面上
我并不是说人是很机械的
一个一个就下去了
人可能要判断一下
我什么时候要进行什么操作
以及这个时间
我们叫心理准备的时间
当然每个人的值不一样
这都是一个平均的典型的值
那么系统还要
对用户的交互请求有反应
那么如果实时的话就是零
现在机器很快
这个时间看实际的测试了
通常我们希望它是比较小的
规则实际上一共有六条
都是关于M的
一旦我们设计出来
一个用户界面以后
就有了跟某个任务相对应的
KLM的序列
包括我们刚才提到的
这个K P以及R H
这样的一些操作
但是中间是没有M的
也就是说我们事先准备好的
这个时间
那么六条计算规则中
只有一条是关于加进去M的
另外五条都是关于
减掉多余的M的
加法是发生在几乎每一个敲键
和指点动作
也就是K和P之前我们做加法
就是规则零
要把前面全部加上M
但是加显然是
有一些是没必要的
就是加多了的
所以下面我们一共有五条规则
都是如何把它减掉的
那么第一种
我们称为是可预知的M
比如固定的连续操作
像我们指点以后
要有一个点击
根据规则零
这个之间会有一个M
就是我们在Pointing之后
要Click
那么按照规则零
它会加入一个M
而这个是我们一个固定的
连续的动作
除非初学者
因为现在我们很少
有这样的初学者
所以这个M是不必要的
我们就把它简化为PK
把这个M去掉
那么规则二是说
要删除一个认知单元内
除了第一个M
其他的M
比如这个例子就是说
如果现在我有一个对话框
用户需要输入这样4567.89
我们看有七个敲键
按照规则零前面的都有M
但是整个数值
实际上在用户敲的时候
他就知道是整体的数值
只不过他组成要使用这七个键
所以除了第一个
剩下的那些M
我们都要把它删除掉
那么规则三是说
要删掉连续终止符前的
那些多余的M
也就是说它属于一个认知单元
结束时比较冗余的
分隔符的这个K之间的这个M
比如一个命令
就是说我们要敲一个命令
它的分隔符连着一个
参数的一个分隔符的情况
这个在语法上
在语法定义本身上
我们认为用户应该知道
它是一个整体
所以要把中间插上的
多余的M给它删掉
那么这个规则四
是删除命令终止符前的M
也就是说我命令终止符
如果是我的一个语法定义的
连续操作的话
前面多余的M
我要把它删掉
但是最后一个是说
系统响应之前这个R之前
如果有M
不管怎么样原因加上的
我们要把它删掉
就是要把多余的删掉
那么我们利用这个KLM模型
来计算完成一个任务的
界面操作效率
这里我们可以用它
来做这样的一个事情
也就是界面设计出来了
它的效率到底是怎么样
我们可以用这个KLM模型
来计算你一个任务
需要用户花多长时间
当然这个不是实测的
是根据前面典型值代入的
这是一个例子
这个例子非常简单
是说让计算机做这样一个事
就是说我可以做温度转换器
也就是做一个华氏温度到
摄氏温度或者是反过来
摄氏温度到华氏温度的
这样一个转换器
那么计算大家可能脑子想一下
这个公式很简单
那么界面需要表达
转换的温度的数值
和进行什么方向的转换
这个可能是我们很容易想到的
一种界面形式
也就是说我进行这个选择
看起来也很简洁
那么我们这时候就用一下
这个KLM模型来计算一下
温度转换器的界面设计的效率
我们来看一下
首先我们默认用户的初始位置
是在键盘上
这个时候我需要去选择
它的这种转换的方向
所以有一个H
然后选择了这个转换的方向
也就是在我的
Radio button上
来进行一个选择
然后我再指到那并Click
看到我再回到
这个时候
因为我就可以输入这个数值了
我再回到键盘
去在这个输入框里面
来输入就要进行转换的数值
比如我敲了假定是四个字符
组成的一个值
完了以后回车
也就表示结束
那么又敲了一个K
那么我们用KLM模型
用规则零要把所有的M要加上
用规则以后
我们会看到有一些不必要的M
也就是说我们在
同一个认知单元内的
加进去的这个M把它删掉
比如我们四个字母
组成的这样一个数值
像这四个K
我们就只保持它前面这个M
那么这些规则运用完成以后
我们还可以代入这个典型的值
那么这个典型的值
因为代入过程很简单
我们可以计算出来
这种方式也就是一开始
我的转换方向
默认的转换方向
不是我希望的转换方向的话
那么是这样7.15秒
我们还有另外一种
就是说如果现在就是我的
转换的方向
也就是说我不用再进行
Radio button的选择
这个操作序列要简化的多
那么得到的值是3.7秒
我们也知道
一个平均值的计算方法
这个可以到5.4秒
对这个任务完成的
这样的一个效率
那么大家可能问题就来了
同一个任务
可能有多种界面设计
那么KLM模型
我们用它来进行计算结果
肯定有大有小
就是说刚才比如温度转行器
我们作为作业布置给过同学们
大家上来有各种各样的
这种设计
那么用KLM模型
可以为每个设计它的交互效率
来排个序
就是计算出来的
平均操作的时间
这种有大有小
当然是越小越好
如果我们是来追求效率的转化
那么有没有所谓的最快的设计
这个时候我们就要回到
一开始讲的人机交互的
基本的定义
讲是人与机之间的
一个信息交换的过程
那么界面是我们
进行信息交换的媒介
它应该只携带和我任务所需的
这种必要的信息
此外的设计
都应该是所谓冗余的
那么具体的这个温度转换器
我们必须要告诉他的
不管是我们通过键盘
还是别的方式
就是转换的这个温度
因为你不告诉他转换的
你可能有人设计的是说
我的天气预报的
你可以从天气预报的程序
直接给他
但是更多的时候
我只是要它计算一个
温度的转换
你必须把原始的数值告诉他
比如这里我们假定就是说
是一个四位的表示的一个数值
就为了一致
我们就这样来进行表示
因为前面的那个例子里面
我们也说是一个四个字符
组成的一个数值
这个是我们必须告诉
你的界面的
就是在界面上
我们必须来提供的信息
那么如果我们设计一个界面
它只要求用户输入
这样四个敲键来组成的
一个需要转换的数值
我们就认为这是有最高的
这种交互效率的
那这个有没有
如果有
其实用我们KLM模型设计出来
就是它只需要输入
四个字母组成的一个数值
那么要想一下它具体的形式
所以它代入KLM模型以后
是2.15秒
要远小于前面我们的5.4秒
这样的界面存在吗
有还是没有
其实是有的
我们这里给了这样
虽然只是个形式
可能没有画的很漂亮
故意来这样来表示一下
它的基本功能
只有一个
没有方向的选择
而方向的选择是靠用户
他的视觉来进行选择
因为计算资源
本身已经不是问题了
我可能一个数值进去以后
F到C和C到F我同时计算
也就是有两个输出
至于用户你要做的选择
你要通过视觉来进行选择
不需要手的动作系统
来进行选择了
所以如果从这个方面
我们也看到
就是说一旦你设计出来
一个界面以后
我们还可以再分析一下
界面必要的交互任务
然后可以力争
使得交互效率
所谓达到最优
-1.1 软件无处不在
--讲课视频
-1.2 软件的本质特性
--讲授视频
-1.3 软件工程的产生与发展
--讲授视频
-1.4 软件工程的基本概念
--讲授视频
-1.5 软件质量实现
--讲授视频
-1.6 业界人士谈软件工程
-测验题--作业
-讨论题
--讨论题
-作业题
--第一张 作业题
-2.1 编程过程与规范
--讲课视频
-2.2 良好的编程实践
--讲课视频
-2.3 Python集成开发环境
--讲课视频
-2.4 代码静态检查
--讲课视频
-2.5 代码性能分析
--讲课视频
-2.6 结对编程实践
--讲课视频
-2.7 刘贺谈软件工程
--讲课视频
--讨论
-测验题--作业
-作业题
--第二章 作业题
-3.1 单元测试概述
--讲课视频
-3.2 黑盒测试方法
--黑盒测试方法
-3.3 白盒测试方法
--基本概念
--代码覆盖标准
--基本路径测试
-3.4 单元测试工具
--单元测试工具
--html
-测验题--作业
-作业题
--第三章 作业题
--作业题附件
-4.1 软件过程
--讲课视频
-4.2 软件过程模型
--讲课视频
-4.3 敏捷开发过程
--讲课视频
-4.4 微软公司开发过程
--邹欣经理自我介绍
--微软开发过程之一
--微软开发过程之二
-测验题--作业
-5.1 团队组织与管理
--讲课视频
-5.2 项目沟通管理
--讲课视频
-5.3 软件项目计划
--讲课视频
-5.4 软件项目估算
--讲课视频
-测验题--作业
-讨论题
--讨论
-6.1 敏捷开发之Scrum
-- 敏捷开发之Scrum
--html
-6.2 用户故事与估算
--讲课视频
-6.3 团队协作工具Tower
-6.4 配置管理
--讲课视频
-6.5 配置管理工具Git
--讲课视频
-测验题--作业
-作业题--作业
-7.1 需求工程师
--讲课视频
-7.2 需求定义
--讲课视频
-7.3 需求的类型
--讲课视频
--讲课视频(2)
-7.4 需求工程过程
--讲课视频
-7.5 需求的主要来源
--讲课视频
-7.6 需求获取技术
--讲课视频
--讲课视频二
--讲课视频三
-7.7 撰写需求文档
--讲课视频
-测验题--作业
-讨论题
--讨论
-8.1 用例建模概念
--讲课视频
-8.2 用例建模过程
--讲课视频
-8.3 用例建模精讲
--讲课视频
-8.4 建模工具介绍
--讲课视频
-8.5 微信抢票应用案例
--讲课视频
-测验题--作业
-讨论题
--讨论
-9.1 面向对象分析
--讲课视频
-9.2 CRC卡片分拣法
--讲课视频-1
--讲课视频-2
-9.3 面向对象设计
--讲课视频-1
--讲课视频-2
-9.4 类图建模
--讲课视频-1
--讲课视频-2
-第9章 面向对象分析与设计--测验题
-讨论题
--讨论
-10.1 顺序图概念
--讲课视频
-10.2 顺序图建模
--讲课视频
-10.3 顺序图风格
--讲义视频
-10.4 状态建模
--讲课视频
-10.5 状态图
--讲课视频
-10.6 状态图精讲
--讲义视频
-测验题--作业
-讨论题
--讨论
-11.1 软件体系结构概念
--讲授视频
-11.2 软件设计原则
--讲授视频
-11.3 软件体系结构风格(一)
--讲授视频
-11.4 软件体系结构风格(二)
--讲授视频
-11.5 软件体系结构风格(三)
--讲授视频
-11.6 软件设计过程
--讲授视频
-11.7 Web系统架构设计
--讲授视频
-11.8 数据库选择策略
--讲授视频
-测验题--作业
-作业题
--html
--html
--html
-作业题--作业
-12.1 交互设计概述
--讲授视频
-12.2 交互设计目标
--讲授视频
-12.3 GUI设计原则
--讲课视频
-12.4 KLM效率模型
--Video
-12.5 Fitts定律
--讲授视频
-12.6 交互设计过程
--讲授视频
-测验题--作业
-13.1 软件测试概念
--讲课视频
-13.2 软件测试类型
--讲课视频
-13.3 软件功能测试
--讲课视频
-13.4 软件性能测试
--讲课视频
-测验题--作业
-14.1 软件部署与交付
--讲课视频
-14.2 软件演化与维护
--讲课视频
-测验题--作业
-第一部分:基础知识
-第二部分:编程与测试(选做)