表现模型
程序员或设计者创造出软件的行为外观用来向外展示。这种展示并不需要精确的表现在计算机内部实际发生的事,尽管很不幸,很多软件往往就是这么表现自己的。能否表现计算机的功能并不依赖于计算机的真实行为,这一点在软件中比其他媒介的情况更为明显。这就使得聪明的设计者可以隐藏一些软件实际上是如何工作的讨厌的细节。这种实现的和表现出来的之间的分离引入了数字世界的第三个模型,设计者的表现模型——设计者选来把程序的功能表现给用户的方式。Donald Norman(1989)简要的称之为设计师模型。
在软件世界,程序的表现模型可以(常常也应该)和实际的处理结构相当的不同。比如,操作系统可以让网络文件服务器看起来就像是一个本地硬盘。模型不会表现出实际上物理的硬盘可能在几英里外。表现模型的概念在机械世界没有普遍的副本。三个模型间的联系如图2-1所示。
图2-1:工程师经常由于各种技术和商业险种被给定构建软件的方式。关于软件如何实际工作的模型称作实现模型。而用户认为的他们需要作的工作以及程序应该帮他们作的,这是他们关于与软件交互的心理模型。这是基于他们对于他们如何工作以及计算机应该怎么工作的观念的。设计师选择来表现程序的工作给用户的方式叫做表现模型,不像其他两个模型,它是软件中设计师可以很大程度上掌控的一方面。设计师最重要的目标之一就应该是让表现模型尽可能的接近与用户的心理模型。所以设计师了解目标客户关于他们如何用软件工作的细节是非常关键的。
表现模型和用户的心理模型越接近,用户越容易学会使用程序并理解它。一般来说,给出一个过于接近于实现模型的表现模型会明显的减弱用户学习和使用程序的能力,可以认为(大部分情况下总是)用户对于任务的心理模型是和软件的实现模型不同的。
我们倾向于建立比真实情况简单的心理模型;所以如果我们让表达模型比真实的实现模型简单,就可以帮助用户更好的理解。比如,当你踩下汽车中的刹车的时候,可能心理想象的画面是把一个杠杆和轮子摩擦来减速。实际的机制是包括了液压钢,管道,以及压在穿孔圆盘上的金属垫片(可能了解汽车的朋友会比较清楚在说什么),我们在脑子里把这些都简化掉了,创造出来的是不太准确但是更加有效的心理模型。在软件的情况,我们想象当点击电子制表软件滚动条的时候新的格子滚动进了屏幕。事实上根本没有滚动。在那里也没有一组表格,而是数值的数据结构,其中有很多指针,程序实时的从中合成新的画面。
了解软件实际是怎么工作的确实可以帮助人们使用它,但是得到这种理解是需要代价的。表达模型让软件的创造者可以通过简化的方式表达软件如何工作来解决这个问题。这种耗费是内在于软件的额,用户永远不需要知道。用户界面应该放弃实现模型,越接近于心理模型的会效果越好。
公理 用户界面应该忽略实现模型而亲近用户的心理模型。
在Adobe Photoshop中,用户可以通过一种叫做变更(Variations)的功能来调整图片的色彩平衡和亮度。它并没有用实现模型那样的方式显示一些输入色彩值的数字字段,而是显示一组缩略图,每个有不同的色彩平衡(见图2-2)。用户可以点选最想要的色彩设置。这个界面更加遵从于用户的心理模型,因为像图形设计师这样的用户思考的是图形的效果,而不是一组抽象的数字。
图2-2:Adobe Photoshop有一个很好例子来说明设计软件以符合用户的心理模型。变更界面显示一组有可调增量的不同色彩平衡和亮度的缩略图。用户可以点选最能表现想要的效果的图形。这张图就会成为新的不同缩略图的默认值。这个界面遵循了图形设计师的心理模型,他们考虑的是精细的视觉效果,而不是一组抽象的数值。
如果软件模型十分接近于用户的心理模型,那就会排除用户界面中不需要的复杂性,界面提供的认知框架让用户一目了然如何实现他的目标和需要。
公理 目标导向交互反映用户的心理模型。
用户的心理模型并不需要是真实的或是正确的,但是它应该让用户工作的更有效。比如,很多不懂技术的电脑用户会想象屏幕是计算机的心脏。这是非常自然的,因为他们整天看着的就是屏幕而且也只有通过屏幕能看到计算机在作什么。如果你对一个用户指出,计算机实际上是在桌子下面黑盒子里的硅芯片,他大概会耸耸肩忘掉这个没什么意义(对他而言)的知识。CPU和显示屏不同这个事实,并不能帮助他思考如何操作计算机,尽管它在技术上是更加正确的。