Skip to content

Lec 5 效率

引言

image-20260506233453535

当你试图在 Windows 资源管理器中删除 Internet Explorer 的缓存内容时,这条消息曾经会出现(也就是说,你进入缓存目录,选中一个包含 IE 浏览器 cookie 的文件,然后尝试删除它)。它过于激动的语气(“!”), 它是否给了用户足够的信息来做出决定呢?

image-20260506233743145

假设你一次性选中了所有 cookie 文件并尝试全部删除。结果你会为每一个要删除的 cookie 都看到一个对话框!那么,这个对话框缺少了什么按钮呢?

image-20260506233720698

解决“问题太多”的一种方式是提供“全部是(Yes To All)”和“全部否(No To All)”按钮,它们可以通过一次性给出统一答案来跳过后续的重复问题。这确实是一种有用的快捷方式,可以提升效率,但这个例子说明它并不是万能的解决方案。

这个对话框来自 Microsoft 的 Web Publishing Wizard(网页发布向导),它用于将本地文件上传到远程网站。由于网页发布的常见流程是:先在本地完整开发网站,然后一次性上传到服务器,因此该向导会建议删除服务器上那些在本地文件中不存在的文件,因为它们可能是新版本网站中的“孤立文件”。

但如果你明确知道服务器上有一个文件是你不想删除的,那你该怎么办呢?

image-20260506233836069

如果你的界面需要向用户提出一组可能数量很大的相关问题,那么更好的做法是把它们整合到一个对话框中。你可以列出文件清单,让用户自己选择哪些需要删除。“全选(Select All)”和“取消全选(Unselect All)”按钮可以分别起到“全部是(Yes to All)”和“全部否(No to All)”的作用。

需要注意的是,“全选”和“取消全选”是针对常见情况的有效优化,比如用户想要删除(几乎)所有内容或(几乎)什么都不删。但对于不常见的情况,用户仍然可以通过逐个查看复选框来进行精细选择。

上面是一个做得比较好的例子,来自 Eclipse。如果要批评它的对话框设计,可能的问题在于:它一开始没有直接显示文件名,而只是显示文件数量——你必须点击“Details(详情)”才能看到完整列表。仅仅知道有多少个未纳入版本控制的文件,通常不足以让用户决定是“确认”还是“取消”,因此大多数用户最终都会点击“Details”。

效率(Efficiency)包含

  • 任务效率:减少完成目标所需的高层步骤;
  • 思维效率:“不要让我思考”“不要让我记住”;
  • 操作效率:精细的手部操作是困难的,应尽量减少机械性的操作步骤;

人类的信息处理

从一个非常高层次,来看人类的认知能力。这是“人类处理模型(Model Human Processor, MHP)”的一个版本,它由 Card、Moran 和 Newell 提出,用来将几十年的心理学研究总结成一个工程模型 《The Psychology of Human-Computer Interaction,1983》,《Engineering Psychology and Human Performance,1984》。

当然,这个模型是一个抽象。但它是一个能够给出数值参数、描述人类行为方式的抽象。就像计算机有内存和处理器一样,我们对人类的模型也有类似结构。实际上,这个模型包含多种不同类型的“内存”和多个“处理器”。

来自眼睛和耳朵的输入首先会被存储在短期感觉存储器中。从计算机硬件类比来看,这种记忆类似于帧缓冲区,用来存储一帧感知信息。

感知处理器会对这些感官输入进行识别,尝试从中识别出符号,例如字母、单词、音素、图标等。这一识别过程会受到长期记忆的辅助,因为长期记忆中存储了你已经学会识别的各种符号。

认知处理器会对感知处理器识别出的符号进行比较与决策。它也可能在工作记忆中存取符号(可以类比为 RAM,不过容量很小)。认知处理器承担了我们通常所说的“思考”的大部分工作。

运动处理器接收来自认知处理器的动作指令,并指挥肌肉执行这些动作。这里存在一个隐式的反馈循环:动作的结果(无论是身体位置变化还是外界状态变化)会被感官系统观察到,并用于持续修正动作过程。

最后,还有一个与注意力对应的组件,可以类比为计算机系统中的控制线程。需要注意的是,这个模型并不是在描述神经系统的具体结构。例如,大脑中可能并不存在某个专门对应“感知处理器”的区域。但作为抽象模型,它依然非常有用。

image-20260507002654101

处理器的一个主要特性是它的周期时间,这类似于计算机处理器的时钟周期时间。它指的是处理器接收一个输入并产生一个输出所需的时间。和 MHP 模型中的所有参数一样,上面所示的周期时间是基于大量心理学研究的统计结果得出的。每个参数都给出了一个典型值以及一个观测范围。例如,感知处理器的典型周期时间 Tp 是 100 毫秒,但过去几十年的不同心理学研究报告的平均值范围在 50 到 200 毫秒之间。

同样地,认知处理器在某些负载情况下实际上运作得更快。例如,当你在开车或玩电子游戏时,大脑的反应速度通常比你安静坐着阅读时更快。此外,对于经过大量练习的任务,认知处理器也会更快。 认知处理器Tc的典型处理时间是70ms [30ms ~ 100ms];运动处理器Tm则是70ms[25~179ms]

因此,在进行工程设计决策时,合理的做法是考虑这种不确定性,不仅使用一个典型值,还要同时参考其范围(上下限)

感知融合

感知处理器的一个有趣现象:感知融合(perceptual fusion)。 下面是对这种融合机制的直观理解。

在每一个周期中,感知处理器都会“抓取一帧”(相当于拍一张照片)。如果两个事件发生的间隔小于一个周期时间,它们很可能会出现在同一帧中。如果这些事件是相似的——例如米老鼠先出现在一个位置,短时间后又出现在另一个位置——那么这些事件就可能被融合为一个单一的感知事件,也就是看到“一个正在移动的米老鼠”。

感知融合还会显著影响我们对因果关系的判断。如果一个事件紧接着另一个事件发生——例如按下键盘后屏幕立即发生变化——并且这两个事件之间的间隔小于 Tp,那么我们更容易认为第一个事件导致了第二个事件的发生。

认知处理

认知处理器(cognitive processor)负责进行比较和决策。认知是一个非常丰富且复杂的过程。其中最容易被理解的一部分是“基于技能的决策”。

所谓技能,是通过反复练习而熟练掌握的一种过程,例如走路、说话、指点、阅读、驾驶、打字等,都是大多数人已经掌握的技能。基于技能的决策是一种自动化的反应,几乎不需要或完全不需要注意力。由于这种决策非常机械化,因此也最容易用我们正在讨论的这种机械模型来描述。

另外还有两种决策方式:一种是“基于规则的决策”(rule-based),另一种是“基于知识的决策”(knowledge-based)。

基于规则的决策是指人有意识地按照“如果 X,则做 Y”这样的规则集合来进行思考和判断。这类决策通常发生在新手或偶尔执行某项任务的人身上。例如,一个学车的学生在接近路口时,必须明确思考每种情况该如何应对(“有没有停车标志?是否有其他车辆进入路口?谁拥有优先通行权?”)。随着练习的增加,这些规则会逐渐转化为技能,人们就不再需要有意识地思考这些步骤。

基于知识的决策则用于处理不熟悉或意外的问题,例如判断为什么汽车无法启动。

在本讲中,我们主要关注基于技能的决策,因为它是最容易理解的,同时在已经熟练的任务中,效率也是最重要的因素。

运动处理器

运动处理器可以以两种方式运行。

第一种是自主运行模式,它会反复向肌肉发出相同的指令。这被称为“开环控制”(open-loop control),因为运动处理器不会从感知系统获得反馈来判断自己的指令是否正确。在开环控制下,系统的最大运行速度是每隔 Tm ≈ 70 毫秒执行一个周期。

另一种方式是“闭环控制”(closed-loop control),它包含一个完整的反馈回路。感知系统会观察运动处理器的动作结果,认知系统根据观察结果决定如何修正动作,然后运动系统再发出新的指令。在最理想的情况下,这个反馈回路需要三个处理器各运行一个周期,因此总时间约为 Tp + Tc + Tm ≈ 240 毫秒

这里有一个简单但有趣的实验,你可以自己尝试:拿一张横线纸,在两条线之间快速来回画一个锯齿波,同时尽量让每个波峰和波谷都准确触及线条。持续 5 秒钟。

锯齿波“载波”的频率由开环控制决定,因此可以用它来估算你的 Tm。而你在画图过程中为了重新对齐线条所做的修正,其变化的频率(包络)则对应闭环控制,可以用来估算 Tp + Tc 的值。

image-20260507003520960

练习的重要性

感知—认知—运动整个系统还有一个重要特性:随着练习的增加,完成任务所需的时间会减少。

更具体地说,这种减少遵循一种“幂律”(power law)。在对时间和练习次数取对数后,这种关系会呈现为一条直线。

在实际中,这意味着:新手在练习过程中会迅速提升表现,但随着时间推移,提升速度会逐渐变缓,最终趋于平稳(虽然仍然在缓慢进步)。

Tn=T1nα , α 典型值在0.2-0.6

做出决策

简单反应时间(simple reaction time)——即对单一刺激做出单一反应——只需要人类信息处理系统的一个周期,也就是 Tp + Tc + Tm。

但如果用户需要做出选择——针对不同刺激选择不同反应——那么认知处理器就需要做更多工作。Hick-Hyman 反应时间定律表明,认知处理器所需的周期数与刺激中包含的信息量成正比。例如,如果有 N 个等概率的刺激,每个刺激对应不同的反应,那么认知处理器需要大约 log N 个周期来判断实际看到的是哪个刺激并做出相应反应。因此,即使将可能的刺激数量翻倍,人类的反应时间也只会增加一个常数。

img

需要注意,这一定律只适用于基于技能的决策;我们假设用户已经通过练习熟悉这些刺激,并在内心形成了关于它们出现概率的模型。

KISS 原则

KISS 原则(Keep It Simple, Stupid,保持简单)。

例外情况:对于熟悉刺激的语言反应,这种依赖关系要弱得多,可能是因为大脑的并行处理能力在发挥作用。

扫描 vs. 查找

如果选项是不熟悉的,就必须逐个扫描全部选项,属于线性工作量;同时这也涉及可学习性和可发现性的问题。

如果存在一种已知的排序方式(例如按字母顺序),就可以进行类似二分查找的搜索,时间复杂度是对数级的。但这种方式可能需要额外的认知成本(例如思考字母顺序),因此常数开销可能更大。

层级结构也可以帮助,把一个大的选择拆分成多个较小的选择,这同样可以将复杂度降低到对数级。

image-20260507005658778

Fewer Choices is Better

提高效率的办法

聚合

聚合(aggregation)是一种提升界面效率的极好方式。可以思考如何把多个项目——比如数据对象、决策项、图形对象等等——收集起来,让用户能够一次性对它们进行整体操作。

多选是一种很好的聚合设计模式,现在已经有很多成熟的交互方式支持多选,例如用鼠标拖出一个框来选中多个对象,或使用 Shift 点击来选择一段连续范围等。

不过,并不是所有操作都需要支持聚合。如果最常见的情况只是操作单个对象,而且数量通常也不会超过几个,那么引入聚合机制带来的复杂性可能就不值得了

image-20260507010326473

加速

提高界面效率的一种常见方法是添加键盘快捷键——即易于记忆的按键组合。在菜单栏中通常会有显示快捷键的标准方式(例如 Ctrl-N、Ctrl-O)。菜单栏和按钮还常常带有加速键(accelerators),也就是带下划线的字母,通常通过按住 Alt 键让菜单栏获得焦点,然后按下对应的字母来触发。设计快捷键时,应让它们容易与对应功能在用户记忆中建立关联。

键盘快捷键可以依赖肌肉记忆:我们按下目标键的速度(开环控制)通常比用鼠标移动到目标位置(需要闭环控制)更快。

键盘操作还具有可访问性优势,因为它允许那些无法很好使用鼠标(例如视力不佳的用户)的人也能使用界面

预判

“预判(Anticipation)”意味着,一个好的设计应该把完成某个任务所需的信息和工具都放在用户触手可及的位置。如果完成任务需要用到某个当前界面中没有直接提供的功能,那么用户就不得不中断当前操作、退出当前流程,这会降低效率。

例如,下面是 Windows XP 的“打开文件(File Open)”对话框,这个界面体现了多种“预判”设计:

image-20260507010619524

顶部的工具栏图标体现了对用户需求的一定预判。其中最重要的可能是“新建文件夹(New Folder)”图标,它允许用户在保存文件时直接创建新文件夹。虽然在“打开文件”场景下没那么重要,但在打开和保存两个对话框中都提供这一功能可以保持一致性。

左侧的图标是一些常用位置的快捷入口(类似书签),比如桌面(Desktop)或“我的文档(My Documents)”。

“历史记录(History)”图标反映了另一个常见需求:用户经常需要重新打开最近使用过的文件。

如果点击“我的网络位置”,还能看到更多预判设计:不仅列出了已有的网络位置(本质上是指向文件服务器的书签),还提供了与管理这些位置相关的常见操作,例如“添加网络位置”,以及当尚未连接网络时提供的“网络设置向导”。

值得注意的是,这些操作在 Windows 的其他地方其实都可以找到——例如最近打开的文件可以在 PowerPoint 的“文件”菜单中看到,网络设置向导可以在开始菜单或控制面板中找到,新建文件夹可以通过 Windows 资源管理器完成。因此,这些功能在这里出现,本质上是对已有功能的快捷入口。这种设计既提升了可学习性(用户无需了解所有其他入口也能完成当前任务),也提高了效率(即使用户知道其他入口,也不需要额外导航过去才能完成操作)。

默认值 & 输入即替换

默认值(Defaults)是指在表单中预先填写好的常见答案。默认值有很多好处:它们为新手和高频用户都提供了快捷方式;同时也通过展示合法输入的示例,帮助用户理解界面。这实际上是一种对用户输入的“预判”。

默认值应该是“脆弱的”(fragile):当你点击或用 Tab 键进入一个包含默认值的输入框时,这个默认值应该被全部选中,这样熟练用户只需开始输入,就可以立即用新内容替换它。(这种“输入即替换选中内容”的机制叫做 pending delete)

如果默认值是错误的,那么这种“脆弱默认值”的设计可以让用户像在空白输入框中一样直接输入正确内容,因此默认值不会带来额外成本。

历史记录

许多输入具有时间局部性(temporal locality),也就是说,用户更有可能再次输入他们最近输入过的值。文件编辑中经常体现这种特性,这也是为什么“最近使用文件(Recently-Used Files)”菜单在提高打开文件效率方面非常有用。

应该记录用户之前的选择历史,不仅仅是文件,还包括任何可能有用的输入值。例如,当再次显示打印对话框时,可以记住并将用户上一次使用的设置作为默认值呈现出来。

自动补全

通过自动补全(autocomplete)来减少输入,是对用户可能输入内容的另一种“预判”。

自动补全不仅能提升效率,它还改善了哪些可用性维度?

它是动态的,就像动态菜单一样,会不会有类似的问题?不会,因为它并不是用于一小组固定选项的选择。

image-20260507011224196

分块记忆

工作记忆(working memory)是进行有意识思考的地方。目前认知科学中较为主流的观点认为,工作记忆并不是大脑中的一个独立“区域”,而是长期记忆中某些元素被激活形成的一种状态模式。一个著名的早期研究认为,工作记忆的容量大约是 7 ± 2 个“块”(chunks)。而较新的重新分析将这一估计修正为 4 ± 1 个块(Parker, 2012)。无论是哪种说法,这个容量都非常有限!虽然通过训练(例如使用记忆术,将任意信息转化为更容易记忆的块)可以提升工作记忆的使用效率,但不应期望用户这样做。一个好的界面不应该对用户的工作记忆提出过高要求。

NOTE

这里的工作记忆,不是与工作有关的记忆,你可以理解为 大脑当前“拿在手里正在处理”的信息,不是长期记忆(long-term),也不是短期记忆(short-term, 强调短暂保存)

存储在工作记忆中的信息会很快消失——通常在几秒到几十秒内。通过“维持性复述”(maintenance rehearsal),即不断在心中重复这些信息,可以延缓这种遗忘,但这种复述需要占用注意力,因此很容易被干扰打断。

长期记忆(long-term memory)可能是人类认知中最不容易理解的一部分。它包含了我们绝大多数记忆,容量非常大,而且几乎不会自然消退。长期记忆通常不会被主动删除,而是变得难以访问。

维持性复述(单纯重复)似乎对将信息转入长期记忆没有太大帮助。更有效的是“精细化复述”(elaborative rehearsal),即通过将新信息与已有的知识建立联系来记忆。这也是各种记忆术(例如将要记住的内容与熟悉的地点联系起来,比如童年家中的房间)的原理。但这些方法需要用户投入较多的精力和注意力。

提高可学习性的一个关键在于:让这种“建立联系”的过程尽可能容易,而保持一致性(consistency)正是一种有效的方法。

image-20260507012201263

知觉和记忆中的基本单位被称为“块”(chunks)。从某种意义上说,chunk 是被定义好的符号;从另一种意义上说,一个 chunk 代表的是过去经验的激活。

“分块”(chunking)可以通过一个著名的国际象棋研究很好地说明。在该研究中,新手和国际象棋大师被要求记忆棋盘布局,并在之后从记忆中复现这些布局。结果发现,新手只能记住少数几个棋子的位置信息。而大师则能够记住整个棋盘,但前提是棋子是按照合法的对局规则排列的。当棋子被随机摆放时,大师的表现就不再优于新手。

大师之所以能够记住棋盘布局,是因为他们能够将棋盘“分块”,即从过去的对弈和学习经验中识别出模式,并将这些模式作为整体进行记忆。

我们在工作记忆中形成“块”的能力,很大程度上取决于信息的呈现方式:一串单独的字母往往会被当作一个个字母来分块,而一组三字母的组合则更可能被当作一个整体来分块。同时,这也取决于我们已有的知识。如果这些三字母组合是人们熟悉的 TLA(three-letter acronym,三字母缩写),并且在长期记忆中已经形成稳定的“块”,那么我们在工作记忆中就更容易记住它们。

作为设计者,应当利用这一点:不要把信息以长串、没有结构的随机字符或数字直接呈现给用户。至少应该将它们分成每 3 到 4 个字符一组。更好的做法是,让这些“块”变得更熟悉、更有意义。

这一原则不仅适用于随机数字或哈希值,也适用于界面中展示的各种数据类型。

指向与轨迹运动

Fitts 定律

Fitts 定律(Fitts’s Law)描述了在一定距离、一定目标大小的条件下,你将手移动到目标所需的速度(当然是在手臂可及范围内)。这是人类感知—运动系统的一条基本规律,并且已经被大量研究反复验证。Fitts 定律同样适用于使用鼠标在屏幕上指向目标的情况。在这里给出的公式中,反应时间是指你开始移动手所需的时间,而移动时间是指实际移动手所花费的时间。

我们可以通过一个简化的人类信息处理模型来解释 Fitts 定律。Fitts 定律依赖于闭环控制(closed-loop control)。假设目标距离远大于目标大小(D >> S),因此你的手一开始距离目标较远。在每个周期中,你的运动系统都会指示手一次性移动剩余的全部距离 D。

你的运动系统可以在一个大致恒定的时间 Tm 内完成这一大幅移动,但这次移动的精度与移动距离成正比,因此手最终会停在距离目标约 εD 的位置(可能偏小,也可能偏大)。随后,你的感知系统用固定时间 Tp 识别手当前的位置,认知系统用时间 Tc 将该位置与目标进行比较,然后运动系统发出修正指令,移动剩余的 εD 距离——但同样会产生比例误差,因此此时误差变为 ε²D。

这个过程不断重复,误差以几何级数递减,直到经过 n 次迭代后,手的位置落入目标范围之内,即满足 εⁿD ≤ S。

解出 n,并令总时间 T = n (Tp + Tc + Tm),可以得到:

T = 反应时间 + 移动时间 = a+blog(D/S), 其中 a 表示启动手部运动所需的反应时间,而 b=(Tp+Tc+Tm)/logε

image-20260507013942821

Fitts 定律还有一些有趣的推论。

屏幕边缘可以“阻止”鼠标指针的继续移动,因此用户几乎不需要额外的修正周期就可以命中它。从本质上讲,屏幕边缘可以看作一个“无限大的目标”。(更精确地说,目标中心距离 D 在几何意义上几乎等于 S,因此 T = a + b log (D/S + 1) 可以化简为最小时间 T = a。)因此,屏幕边缘的空间非常宝贵。Macintosh 的菜单栏位于屏幕顶部,因此比 Windows 的菜单栏更快访问(即使窗口最大化,在 Windows 中菜单栏仍然被标题栏下移了一段距离)。

类似地,如果把控件放在屏幕边缘,它们应该在整个边界范围内都可点击,以利用这一优势。不要在它们旁边留一个不可点击的空白边距。

Fitts 定律还解释了为什么“饼状菜单”(pie menu)比线性弹出菜单更快。饼状菜单中,每个菜单项都像是以鼠标位置为中心的一个扇形切片。因此,每个菜单项到鼠标的距离 D 是相同的,而它的大小 S(沿径向方向)与 D 相当。相比之下,线性菜单中,越靠下的菜单项距离鼠标越远(D 更大),同时所有项的高度都较小(S 较小)。

image-20260507013443729

Steering 定律

级联子菜单(cascading submenus)很难使用,因为鼠标指针必须被限制在一条很窄的“通道”中才能移动到子菜单。这与 Fitts 定律适用的“指向任务”不同,这种“轨迹控制任务(steering task)”对手部允许产生的误差有更严格的要求:它不是通过不断减小误差直到小于目标尺寸,而是必须持续保证误差始终小于通道的宽度。

图中给出了这种机制的直观解释。运动系统的每个周期只能移动一小段距离 d,使得误差 εd 始终小于 S。因此,完成总距离 D 需要 D/d = εD/S 个周期。结果就是,总时间与 D/S 成正比,而不是 log(D/S)。也就是说,在级联子菜单中选中一个菜单项所需的时间会呈指数级增加,相比不需要沿通道移动的情况要慢得多。

Windows 通过在打开子菜单前设置 500 毫秒的延迟来缓解这个问题,但这会在用户确实想打开子菜单时降低效率。

Mac 在这里可以算是“优秀设计案例”(Hall of Fame):当子菜单展开时,它提供了一个不可见的三角形区域,从鼠标位置延伸到子菜单。在这个区域内移动鼠标不会导致子菜单关闭。用户可以直接指向子菜单,而不需要进行额外的修正,甚至不会意识到这个问题的存在。(优秀设计有时是“不可见”的——它只是更好用,但你感觉不到原因。)

image-20260507014445352

下面看两个例子:

在带有级联子菜单的系统中,轨迹控制任务其实非常常见。下面是一个网页中的例子。你可以尝试把鼠标悬停在 “Authors” 上,看看它的子菜单。要移动鼠标才能到达 “Paper instructions”,你需要怎样移动鼠标?

再比如,这个例子 image-20260507015621340

小结

我们已经借助这种闭环运动控制模型,来解释为什么 Fitts 定律在距离和目标大小上呈对数关系,而轨迹控制定律(steering law)则呈线性关系。

Fitts 定律

将手移动到距离为 D、目标大小为 S 的目标所需时间 T 为:

T=RT+MT=a+blog(D/S+1)

其中,a 也就是你从“决定要动”到“手真正开始移动”这段时间,它包括认知做决定 + 运动系统启动的开销; b 是比例系数,可以理解为执行一次有效修正循环所需的平均时间。b=(Tp+Tc+Tm)/logε, 其中, ε 为误差收缩率

轨迹控制定律(Steering Law)

将手沿长度为 D、宽度为 S 的通道移动所需时间 T 为:

T=a+b(D/S)

每个周期只能覆盖距离 S


在我们讨论了与用户界面效率相关的人类认知系统之后,现在可以推导一些用于提升效率的实践规则。

首先来看鼠标任务,这类任务主要由“指向”(Fitts 定律)和“轨迹控制”(steering)所决定。由于在 Fitts 定律中“目标大小”很重要,因此经常使用的鼠标交互对象应该做得更大。目标越大,指向任务就越容易完成。

类似地,还要考虑在一个高频使用的操作流程中,鼠标需要移动的路径。如果鼠标必须在屏幕上来回跳动,比如从窗口底部移动到顶部,或者在窗口左右之间反复切换,那么这些移动的成本会不断累积,从而降低效率。因此,经常一起使用的目标应该尽量放在彼此靠近的位置。

我们之前提到过屏幕边缘和屏幕角落的价值,因为它们可以“困住”鼠标,使其等价于无限大的目标。在屏幕边缘留出不可点击的空白区域是没有意义的。

最后,由于轨迹控制任务比指向任务慢得多,应尽量避免轨迹控制。当无法避免时,也要尽量缩短轨迹控制的距离。例如,当菜单项较长时,级联子菜单会变得更糟,因为鼠标需要沿着更长的“通道”移动,才能到达子菜单。

关于触摸屏

Fitts 定律仍然适用:目标大小、距离(邻近性)仍然很重要

但还存在其他因素:为什么手机上的按钮和键盘通常放在屏幕底部?

在触摸屏上,轨迹控制较少出现

  • 因为拖动操作通常用于滚动
  • 悬停在触摸屏上不存在
  • 因此子菜单通常通过点击打开,并且会保持展开状态

这里有另外一个问题——手指过粗问题

击键级模型

预测性评估

现在我们要讨论的问题是:在还没有构建用户界面之前,如何预测它的效率。预测性评估是可用性工程中的“圣杯”之一。在其他工程领域——甚至在计算机系统和算法设计中——人们已经拥有一些方法,可以在构建系统或算法之前,在一定精度范围内预测其行为,这一点令人羡慕。例如算法中的增长阶分析(order-of-growth approximation)就是一种典型方法:通过分析可以知道某个排序算法是 O(n log n),而另一个是 O(n²),并据此做出选择。用户界面的预测性评估正是基于类似思想。

任何预测性评估技术的核心都是:必须建立一个用户与界面交互的模型。这个模型必须是抽象的——不能像真实人类那样细致(拥有数十亿神经元、肌肉和感官细胞),否则无法用于计算预测。

同时,这个模型也必须是定量的,即为每个组成部分分配数值参数。没有参数,就无法进行计算预测。我们当然仍然可以做定性的比较,比如前面已经做过的 Mac 菜单栏与 Windows 菜单栏,或级联子菜单的比较。但预测性评估的目标更为雄心勃勃。

这些数值参数必然是近似的:一方面模型本身是在对复杂多变的任务和环境进行抽象;另一方面,人类之间存在显著个体差异,有时差距可达 10 倍。因此这些参数通常取平均值,并且在计算时可能还需要考虑方差。

这些参数从哪里来?它们是通过真实用户实验估计出来的。这里展示的人类信息处理通用模型参数(例如处理器周期时间、记忆容量等),来自大量认知心理学实验文献的总结。而对于更具体的模型,有时需要专门设计实验来测量某个特定参数。

在这里,我们将预测“效率”.

预测性评估在模型参数已经估计好的情况下,不需要真实用户参与。不仅如此,它甚至不需要原型。设计方案可以在没有任何设计草图、纸面原型,甚至没有代码的情况下进行比较和评估。

另一个关键优势是,预测性评估不仅能够发现可用性问题,还能基于其背后的理论模型对问题进行解释。因此,它比检查式方法或用户测试更有助于指出问题的解决方向。用户测试可能会显示设计 A 在某个任务上比设计 B 慢 25%,但无法解释原因。而预测性评估会将用户行为拆解成一个个小步骤,使我们能够定位到底是哪一部分任务变慢,并理解为什么会变慢。

KLM 模型介绍

第一个预测模型是击键级模型,由 Card、Moran 和 Newell 在1978年提出。

该模型试图通过将用户行为拆解为五种基本操作(primitive operators)序列,来预测效率——也就是熟练用户执行日常任务所需的时间。

  • K:击键(Keystroke)
  • B:用鼠标按下或释放按钮(Button press or release with mouse)
  • P:用鼠标指向(Point with mouse)
  • D:用鼠标画线(Draw line with mouse)
  • H:在鼠标和键盘之间移动手(Home hands between mouse and keyboard)
  • M:进行心理准备(Mentally prepare)

这些操作中,大多数是物理性的:用户需要通过肌肉运动来完成它们。只有 M 操作不同,它是纯粹的心理操作(这也带来一定问题,因为它难以观察和估计)。M 操作用于表示用户执行的任何认知过程,它将任务划分为多个“块”或步骤,并表示用户从长期记忆中回忆下一步所需的时间。

下面是如何为一个任务建立击键级模型方法。

首先,你需要聚焦于完成该任务的一种具体操作方式。假设任务是在文本编辑器中删除一个单词。大多数文本编辑器都提供多种实现方式,例如:

  • 用鼠标点击并拖动选中整个单词,然后按 Delete 键
  • 在单词开头点击,再在末尾按 Shift+点击来选中单词,然后按 Delete 键
  • 在单词开头点击,然后按 Delete 键 N 次
  • 双击该单词,然后选择“编辑/删除(Edit/Delete)”菜单命令,等等

接下来,将该方法编码为一系列物理操作符:K 表示按键,B 表示鼠标按键按下或释放,P 表示鼠标指向操作,H 表示在鼠标和键盘之间切换手的位置,D 表示拖拽绘制操作。

然后,在合适的位置插入心理准备操作(M),通常是在每个任务“块”(chunk)之前。关于如何确定这些块的边界,已有一些经验性的启发式规则。

最后,利用每种操作的估计时间,将所有操作的时间累加起来,就得到执行该方法的总时间。

击键时间(Keystroke time)可以用打字速度来近似估计。其次,如果我们只使用 K 的平均值估计,就会忽略一个重要事实:不同用户之间的打字速度可能存在高达 10 倍的差异。

按钮按下时间(Button press time)大约为 100 毫秒。鼠标按钮通常比键盘击键更快,这是因为鼠标按钮的选择空间更小(降低了用户的反应时间),而且它们就在手指下方(消除了横向移动时间),因此按下鼠标按钮应更快。需要注意的是,一次鼠标点击包含按下和释放两个动作,因此在该模型中一次点击的成本约为 0.2 秒。

指向时间(Pointing time)可以用 Fitts 定律建模,但在这里我们需要具体的数值参数。经验研究表明,如果使用 log(D/S+1) 作为难度指数,可以更好地拟合实际测量结果;但即便如此,不同指向设备和测量方法仍然会导致参数存在较大差异(其中一些如图所示)。甚至“放松状态的手”(未按住鼠标按钮)和“紧张状态的手”(拖拽时)之间也存在可测差异。

此外,使用 Fitts 定律还要求在模型中精确追踪鼠标指针的位置以及屏幕上目标的位置。而击键级模型这种抽象模型会忽略这些细节,直接假设所有指向任务的时间约为 T ≈ 1.1 秒。不过,如果设计方案需要更精细的分析,就必须更严格地使用 Fitts 定律。

同样地,绘制时间可以用轨迹控制定律来建模: T = a + b (D/S)。

击键级模型中最棘手的部分之一,是确定在哪里插入 M(心理准备操作),因为在一个操作方法中,chunk(步骤块)的边界并不总是清晰的。

例子

第一种方法是在单词开头点击,然后在单词末尾按住 Shift 并点击以选中整个单词,最后按键盘上的 Del 键。注意其中的 H 操作符,它表示将手从鼠标移动到键盘。不过,如果用户使用的是刚才按住 Shift 的那只手直接去按 Del,那么这个 H 操作可能是不必要的。

第二种方法是在单词开头点击,然后按 Del 键足够多次,直到删除整个单词中的所有字符。

image-20260507021634786

击键级模型可以用来比较不同用户界面设计的效率,或者比较同一设计下的不同操作方法。

模型支持的一种比较方式是参数分析——例如,当我们改变参数 n(要删除的单词长度)时,各种方法的执行时间如何变化?

根据击键级模型中的近似假设,“shift-click”方法的时间大致是常数,而“按 Del n 次”的方法则是与 n 成线性关系。因此,在某个 n 的分界点以下,按 Del 更快;而在该点以上,shift-click 更快。预测性评估不仅能告诉我们这个分界点的存在,还可以估计出 n 的大致值。

但在这里,我们近似模型的局限性也开始显现。shift-click 方法的时间其实并不是严格常数——随着单词变长,你需要移动鼠标去点击单词末尾的距离也会增加。然而,击键级模型并没有考虑这一点,因为它假设所有 P(指向)操作的时间都是常数。

另一方面,Fitts 定律表明,指向时间最多是随 log(n) 级别增长的,而按 Del n 次则显然是线性增长。因此,在这种情况下,这种近似仍然是合理的。

KLM(击键级模型)的开发者通过实验验证了它的预测能力:他们将模型的预测结果与用户在 11 种不同界面上的实际表现进行了比较,这些界面包括 3 个文本编辑器、3 个图形编辑器,以及 5 个命令行界面(例如 FTP 和聊天工具)。

实验中使用了 28 名专家用户,其中大多数人只使用自己熟悉的一种界面,也就是他们所在领域的专家系统。

实验任务类型多样但都很简单,例如:用另一个词替换一个词;将一个句子移动到段落末尾;在图中添加一个矩形;向另一台计算机发送文件。用户在实验前被明确告知完成任务的具体操作方法,并有机会先进行练习,然后再执行计时任务。

每个任务重复执行 10 次,最终观测时间是所有用户在这些重复实验中的平均值。

结果见 Card、Moran 和 Newell 的论文《The Keystroke Level Model for User Performance Time with Interactive Systems》(CACM,第23卷第7期,1978年7月)图6。

模型对大多数任务的时间预测误差在 20% 以内。从工程角度来看,这个结果已经相当不错——因为土木工程师通常期望他们的分析模型在至少 95% 的情况下误差不超过 20%,因此 KLM 已经接近这一工程精度标准。

不过,这项研究的一个缺陷在于:心理操作(M operator)的时间是从实验数据中反推估计的,而不是通过独立、事先的观察实验获得的。

GOMS 模型

GOMS 是一个更丰富的模型,它考虑了用户在执行任务时的规划与问题解决过程。在 KLM 提供的低层操作符(Operators)和方法(Methods)的基础上,GOMS 进一步引入了高层目标(Goals)及其子目标的层次结构(类似我们在任务分析中看到的结构),以及“选择规则”(Selection rules),用于描述用户在多个方法中如何选择某一种方法来完成目标。

  • G(Goals)目标
  • O(Operators)操作
  • M(Methods)方法
  • S(Selection rules)选择规则

GOMS 提供了一种用于任务分析和高层设计描述的语言: 它可以是抽象的,也可以是详细的; 可以是定性的,也可以是定量的。