以往文章
【未经书面授权,严禁转载本站文章!】本站所有文章都严格执行版权政策,获得作者亲自授权,受法律保护,请大家珍惜我们的努力成果!请阅读我们的转载注意事项
从系统模型和心理模型的匹配原则谈用户界面设计 - 下 - 2008-01-16
作者 张亮
阅读本文英文版(英文编辑:Anthony Sonego)
阅读本文上半部分
四 从编程语言的发展来理解系统模型和心理模型的匹配原则
对于程序员来讲,可以将编程语言看做是某种软件产品,它的界面就是该语言的词法、语法和语义规则,使用该语言编程就可以看作是对该产品的使用。
4.1 从机器语言到汇编语言,再到高级语言的发展
假定程序员要求解的问题是求两个变量的和。先看机器语言,它是所有编程语言的最终实现模型,所以“机器语言”这种产品的实现模型完全等价于系统模型,因而是最难学习和使用的。程序员需要知道机器指令是如何由0和1这样的比特位构成的,以及每个比特位的意义。
汇编语言则把系统模型向程序员的心理模型推近了一步。使用汇编语言时,程序员只需要知道用mov 汇编指令把一个操作数放到某个寄存器中,以及用add 汇编指令把某个寄存器中的数值和某个操作数相加。至于这些mov 或add 汇编指令是如何对应到机器语言的,他不必知道,这是汇编程序要做的事情。不过很显然,到汇编语言这一步,程序员仍然需要了解“寄存器”和mov指令的概念,而这可不是问题领域中的概念。
再来看高级语言,比如C语言,系统模型和心理模型几乎完全一致了,程序员可以用下面的语句来解决两个数相加的问题: c = a + b;
下面的图对比了三种语言的区别:其中黑底部分的16进制数是机器语言(Intel X86系列CPU的机器语言),白底部分的文字是汇编语言(Intel X86系列CPU的在Windows平台上的汇编语言MASM),“c = a + b;”这条语句是C语言。
图3:机器语言、汇编语言和C语言的对比
随着要解决问题的复杂程度的提高,编程语言也在以下几个方向上不断地发展着,他们从不同的角度将语言的系统模型进一步推近心理模型:
4.2 从面向过程式的语言发展到面向对象的语言
在较为复杂的应用中,使用面向对象的分析方式来对问题领域进行需求分析显得更为自然和有效,也符合人的思维方式。面向对象的语言正是认识到了这一点,在语法和语义的层面上直接对面向对象的思维方式进行支持,使得系统模型更接近程序员的面向对象的思考方式。
4.3 从3GL到4GL的发展
以PowerBuilder, Visual Basic, Delphi等语言为代表的4GL语言的最大的特征是将更多的底层操作系统的实现模型隐藏了起来,尤其是在开发一些具有丰富图形界面的应用程序时。下面比较分别用PowerBuilder语言和C语言(结合Win32 API)来实现在Windows操作系统中把一个窗口的底色改为黑色。
在PowerBuilder中,假设w_main代表一个窗口对象,那么只用下面一条语句就可以改变其背景色为黑色:
w_main.BackColor = RGB(0,0,0)
如果是用C 语言,并且假定该窗口是个对话框窗口(DialogBox),则需要在该窗口的窗口处理函数中增加如下的处理(黑体文字部分),
LRESULT CALLBACK About (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
。。。
case WM_CTLCOLORDLG:
{
HGDIOBJ Brush = GetStockObject(BLACK_BRUSH);
return (LONG)Brush;
}
break;
}
return FALSE;
}
如果该窗口不是对话框窗口,而是一个普通的窗口,则处理方式又不相同。之所以会这么复杂,是因为在Windows操作系统中,当要绘制一个对话框窗口的背景时,操作系统会首先向该窗口发送WM_CTLCOLORDLG消息,消息的返回值就是将用来绘制背景的刷子对象的句柄。在C语言中,程序员必须对这个实现机制完全了解。而在PowerBuilder中,你可以认为那条简单的赋值语句帮你写出了类似C语言的那段代码。
4.4 从通用语言向特定领域的专用语言的发展
应该说,这是编程语言发展的最终目标,它试图将语言设计得完全匹配程序员的心理模型。也许到那时,只要是对某个应用领域的业务熟悉的人都可以成为该领域的程序员了,因为编程语言中的概念和流程控制同实际工作中是一模一样的。
已经出现的这样的语言包括:SAP系统的ABAP语言,编译器软件开发领域的Lex 和 Yacc语言,数据库领域的SQL查询语言等。以Lex语言为例,它的应用领域是开发编程语言的词法分析器。假定你要设计的新语言的变量拼写形式是由一个或多个英文字母构成的,用Lex语言,这个需求可以描述为 [a-zA-Z]+。Lex的编译器会根据这个描述自动生成所需的词法分析代码。在这个例子中,[a-zA-Z]+ 就是问题领域的直接描述,Lex语言对它做了直接支持,即系统模型和心理模型完全匹配。
五 如何在产品设计中运用系统模型和心理模型的匹配原则
很显然,为了使得产品的系统模型能够很好地匹配心理模型,设计人员的首要任务就是要研究用户的心理模型到底是什么。近年来发展起来的以用户为中心的设计方法,就集中体现在它非常重视对于心理模型的研究工作。以下是一些常用的探究用户心理模型的技术,根据产品的不同特点,某些技术会比其他的更有效。
- 用户访谈:即和实际用户或潜在用户面对面交流,听取他们对产品的需求或期望;
- 用户现场观察:即在用户工作现场或将要使用产品的地方观察用户当前处理问题的方式,试图找出当前处理方式的问题或不足。这种方法对于新产品尤为重要,因为用户很难想象出一个他从来没有见过的产品的功能,而设计人员往往可以通过现场观察,分析出用户所要达到的目标,从而有可能在新产品中以一种新的方式来帮助用户达到这个目标;
- 竞争产品分析:这是因为市场上已经有了这类产品,用户就已经形成了对该类产品的一种期望,而通过分析这些产品,就能间接地找出这些期望;
- 分析用户对已有产品的反馈:这包括分析客户技术支持或客户投诉的历史数据,用户在新闻组上发表的对产品的评论等。从这些分析中往往可以看出有哪些用户的期望没有被得到满足,从而有助于形成一个更完整的心理模型。
在确定了用户的心理模型后,可以采用一些可用性原则,使得系统模型能更好地展现心理模型。这些原则包括反馈原则,可视性原则等。鉴于篇幅所限,此处不再展开,详细论述请参考Donald A. Norman的《The Design of Everyday Things》一书。
六 总结
对于用户来讲,产品的界面就是产品的全部,用户看不到也不用关心产品的内部结构和工作原理。界面设计的主要任务就是要把用户能理解的任务领域的概念和行为(心理模型)转换成产品内部的实现模型,从而向用户呈现一个尽可能接近其心理模型的产品(系统模型)。这样的产品能够减少用户的学习和记忆负担,从而达到提高易用性的目的。
张亮,毕业于中国科学院自动化所模式识别与人工智能专业,从事过汉语语音识别、B2B电子商务等领域的软件开发工作。三年前开始对人机界面设计和软件易用性产生兴趣,目前正在进行更深入的学习和研究。联系方式:novanewlife@hotmail.com
【未经书面授权,严禁转载本站文章!】本站所有文章都严格执行版权政策,获得作者亲自授权,受法律保护,请大家珍惜我们的努力成果!请阅读我们的转载注意事项
已发表的评论
您也许对以下的文章也感兴趣:





最新评论