现在的位置: 首页 > 综合 > 正文

[转帖]界面困惑

2018年07月09日 ⁄ 综合 ⁄ 共 3813字 ⁄ 字号 评论关闭
 [转帖]界面困惑

最初发表在《程序员》上
作者:雷立辉 http://goooder.blogchina.com

前言

想着从业几年来,我的困惑比我交的女朋友甚至是认识的女孩子多多了。开始为学习一种什么样的语言发愁。后来由于项目用C语言我没的选择只好从PasicalVB转业。在偶尔的机会要让我做一个把各种复杂结构的数据串行和重组,苦于C语言实现的复杂低效,我进入了C++的大门。再到后来,发现公司牛人不少却发现项目管理一团糟,所以迷上了软件工程。觉得软件工程的确要严格遵守。严格的经历过瀑布式开发,尝试着进行了迭代式开发,最后发现结果仍然不是想象的那么好。国内那红火的ISO9000CMM我还没怎么经历它就从媒体上冷却了。Bug依然是一波接一波。于是觉得自己的设计能力不够强。于是乎,执着于设计模式,重构方法。别人敲响了过度设计的警钟,老板也告诉自己做的这个精巧的采用了新技术的软件不够赚钱。在讨论是否将软件嵌入系统内核中间时,在看别人用很老套的方法写的软件却很赚钱时,我突然发现,纯追求技术的高精度,高难度是吃力不讨好的。你的方法再先进,你的设计再严密,最终还是用户说了算。用户从来不会认为你那个搜索引擎架构如何之好代码如何漂亮对他有多重要,他们只需要有有一个文本输入框能输入文字然后一点搜索就能找到他们的最想就可以了。他们从来不觉得一个简单的文本框配上一个强大的搜索引擎是不伦不类,鲜花插在牛粪上。同样,无论你是小作坊开发,无论你用最拙劣的实现方法,用户是不关心的。用户最关心这个软件是自己需要的吗?好用不?便宜吗?只有他们满意了,他们掏腰包了,你的价值才实现了。

怎么让用户满意,这个问题简直就如爱情的哲学一样复杂。我只想说点简单的、容易找到资料的,就形成了以下的有关于人机界面的文章。重点的地方我会注明来源,好让你们看不懂了再重新看看原著理解理解。J

良好界面的重要性

想一想Windows发展的历史,从那种命令行模式的DOS,再到DOS环境下运行win命令出现Windows窗口的Windows 3.1,再到Windows 95,再到Windows NT XP等等,微软靠一次又一次的升级造就了今日的微软帝国。似乎用户也是特别的傻,他们一边抱怨新的操作系统让他的机器落后于时代,一边抱怨Windows就是病毒,一边又忙不迭的安装升级包,为了装一个操作系统去更新他们机器的硬件配置。是微软逼它们的吗?显然不是。Windows的成功真正的原因大体来说应该是在于它不断的满足了用户的需要,不断的提高程序的可用性,不断的提高了界面的易用性,并且采取了有效的市场推销策略。

总的来说,软件不成功的原因可能不尽相同,但软件成功的有一点是相似的:它们都具有友好的界面。

好的界面不仅仅是好看,也是软件成功的必要条件。你在界面的投入不仅仅在于满足软件现有用户的需要和支持,而且可以争取更多的用户使用你的软件。所以,你在界面的投入直接影响到软件现在及将来的市场。

随着计算机硬、软件环境的不断提高,用户对界面的易用性,美观性要求也会逐步的提高;如果你的应用程序的声音现在还是那种PC扬声器发出的嘟嘟声,你的程序还是256色位图,你的程序在1280x768的分辨率下乱糟糟的,这样的程序(除了CMOS配置程序)会有人用吗?对于功能差不多的媒体播放器软件如Winamp, Windows Media PlayerQuickTimeRealOne Player,如果要你付钱的话,你究竟会买那一个?我想,你可能会选操作最简便的那个吧。再者,如果你的软件产品是一种新型技术的产品,比如说是现在的智能手机软件,你如何让用户更快的上手呢?(你可以调查一下周围的手机操作界面,你发现不同品牌的软件操作方式大相径庭,键盘布局变化无穷,你就会发现手机是一种很难用的东西)。如何让你的软件的用户更快的享受到你所创造的价值呢?

如果你的软件在国内卖得很好而你想扩大市场,你想走向海外。你要做些什么呢?你只要将你的软件和文档翻译成各国语言就可以了吗?不,不,绝对不是如此。为了让你的外国用户使用上手,为了降低你的客户支持成本,你必须想办法让你的软件更符合外国用户的使用习惯,不能有因文化差异而造成软件的误用。让你的软件操作方式尽可能的与操作系统的操作方式一致,这会降低你的服务成本同时更快的让用户上手,而且可以吸引更多的用户使用你的软件。

所以说,用户界面的好坏直接影响产品的竞争力,所以,在推出市场之前,我们要关注人机交互界面的设计。

下面,我就简单的说说用户界面的设计原则。这很多来源于《Windows用户体验》一书入门章节。

用户界面的设计原则――用户为中心

一切在用户掌控之中

一个用户界面设计的原则是用户应该感觉是自己在控制软件而不是软件在控制他们。这有几点说明:

1. 操作的主体是人而不是软件或者计算机。程序可以自动执行一些任务,但用户可以控制这些任务。

1 Windows XP服务控制窗口。Windows服务进程不能通过任务管理器里杀掉,但大多数服务仍然可以通过服务管理器把它停止。请同时注意Windows考虑到这些高级控制的复杂性,特别为普通用户提供了解释信息以及还有命令超链接。

2. 由于用户自身的不同情况和喜好,界面必须允许用户做一些个性化设定。操作系统在这方面提供了很多途径让用户自由设定。所以,你的软件必须适应于由于用户更改了系统的诸如颜色,字体等属性而引起的变化。

2 Microsoft Office Word 2003 选项对话框给用户提供了个性化设置的接口

3. 你的程序应该尽可能的保持互动性能。应尽量避免程序处于不可操纵状态。不可操纵状态是指某个时刻限制用户做某些操作或者根本不允许用户操作。比如说,你尽量应该不让光标变成沙漏状态(当然,如果需要沙漏状态时,要一定将光标变为沙漏状态);还有,尽量让负载进程在后台运行而让界面仍处于可交互状态。比如打印时虽可能不能重新打开别的文档但还是可以最小化窗口。

3 Windows XP在更改桌面主题时整个桌面的变化。这时候虽然用户不能操作计算机,但Windows提供了非常好的反馈,特别是那个从彩色渐变到全灰度图片的场面让人过目不忘。

直观性

软件的设计目标应该是让用户直接看到操作的结果。无论是用户拖放一个目标对象移动位置或是将打开的文档翻页,用户都应该直接从屏幕上看到他们所操作的结果。可视化的信息和选择可以减轻用户负担。

使用相类似的比喻可以更直接和直观的让用户操作对象。比喻可以更容易的帮助用户预测要发生的结果和更快的让用户掌握软件的使用方法。

当使用比喻的时候,你没必要严格与现实情况一一对应。比如说,不像普通的文件夹,计算机中的文件夹就可以将打印机、计算器等归类到一起。

4 微软Windows XP回收站图标与苹果Mac OS X垃圾箱图标有异曲同工之妙。只不过Mac OS X的垃圾箱实在是漂亮,真想取下来拿回家里用。J

一致性

一致性允许用户将老知识和经验应用到新的环境中,这样保证了用户学得更快,更加将注意力集中到未解决问题上,因为他们并不需要花时间记忆使用过程中得差别。通过一种稳定的、一致的延续,可以让用户对界面产生熟悉的感觉和更加明确的预测交互的结果。

界面中的所有元素都需要保持一致性,包括命令的格式,信息的可视化表示,操作方式,在屏幕和窗口中的组件的摆放等。为了将一致性切实落实到软件之中,你必须要考虑以下几点:

1. 程序内部保持一致:对于常用的功能要使用大体一致的命令和界面。就"拷贝"命令来说吧,要避免在一处采取直接执行的方式而在另一处则通过弹出一个对话框要求用户输入目标地址然后拷贝的方式。也就是说,同一个命令在所有地方的操作方式都应该是一致的。

2. 和操作系统行为保持一致:操作系统力求所有的交互都达到一个高度的一致,这样如果你的程序的交互行为和操作系统一致,用户就不用学习新的东西就能使用你的软件。

3. 采用一致的比喻:如果喻体的某些行为和本体的行为不大一致,用户就会对两种事物的联系感到困惑。比如说,如果将一个东西从焚化炉和从垃圾箱中取出,那意义是绝对不一样的。

当然,界面兼容历史版本的一致性(显示一致性,操作一致性)有时也会造成软件维护和维护添加新功能的困难。其实界面设计和程序设计一样,也需要考虑可扩展性。可扩展性也可以说是一致性的延伸能力的体现。如何提高界面的一致性和可扩展性,也是一个非常值得考虑的问题。纸短话长,就此打住。

容错性

用户喜欢尝试着使用一个软件。有效的界面设计会和用户交互从而帮助用户使用这个软件:它们只将可以操作的选项列出,而会让那些使系统或数据发生潜在危险或破坏的命令在执行之前警告用户,而更好的界面则提供了回退或恢复的行为。如很多编辑软件中的回退(Undo)功能。

即使是设计的最好的界面,用户也会有误操作。原因有可能是物理操作失误(比如说点击了错误的命令或数据操作失误),也可能是而由于意识上的错误(比如用户对命令或数据做了一个错误的决定)。一个有效的设计会消除导致用户误操作的可能性。当然也可以允许用户犯错误而你要提供一个方法使得用户可以从错误状态恢复。

5 Adobe Photoshophistory控制面板。用户的每一步操作都会在控制面板中所反映。如果用户觉得某个上面的某个操作不当,可以点击该项,通过右键菜单取消这个操作;也可以通过将此项拖到右下角的垃圾箱图标中取消这个操作及以后的所有操作。

抱歉!评论已关闭.