本书描述了软件开发人员在设计图形用户界面(GUI)时经常犯的“禁忌”,并提出如何避免出现这些禁忌的基本原则和理论依据。本书作者在设计、评价以及测试软件产品用户界面等方面工作了20多年,有丰富的实践经验,他把GUI禁忌分为七种类型:GUI组件、布局和外观、文字、交互、Web、响应以及管理,并分别进行了描述。书中还通过两个实例说明了各种GUI禁忌以及如何避免。\r\n 本书编排独特,针对性极强,是不可多得的GUI设计优秀资源。本书适合软件工程师、Web站点设计人员、开发过程经理、质量保证专家、产品易用性专家等阅读。
对本书的赞誉\r\n译者序\r\n关于作者\r\n前言\r\n致谢\r\n第1章 第一原则\r\n 简介\r\n 1.1 原则1:关注用户及其任务,而不是技术\r\n 1.2 原则2:首先考虑功能,然后才是表示\r\n 1.3 原则3:确定用户对任务的看法\r\n 1.4 原则4:不要让用户的任务复杂化\r\n 1.5 原则5:促进学习\r\n 1.6 原则6:传递信息,而不仅仅是数据\r\n 1.7 原则7:设计应满足响应需求\r\n 1.8 原则8:针对用户进行充分测试,然后进行修补\r\n 进一步阅读资料\r\n第2章 GUI组件错误\r\n 简介\r\n 2.1 使对功能的访问复杂化\r\n 2.2 不规范的应用程序窗口\r\n 2.3 误用选择控件和标签页\r\n 2.4 提供错误的反馈信息\r\n 2.5 滥用文本框\r\n 进一步阅读资料\r\n第3章 布局和外观错误\r\n 简介\r\n 3.1 窗口和对话框的蹩足布局和排列\r\n 3.2 组合框和分隔线的错误\r\n 3.3 劣质的标记和间隔\r\n 3.4 麻烦的排版和图形设计\r\n 进一步阅读资料\r\n第4章 文字错误\r\n 简介\r\n 4.1 非专业的书写\r\n 4.2 不友好的消息和标记\r\n 4.3 引起误解的窗口标题\r\n 进一步阅读资料\r\n第5章 交互错误\r\n第6章 Web错误\r\n第7章 响应错误\r\n第8章 管理错误\r\n第9章 软件评审\r\n第10章 一个用户界面顾问的战争故事\r\n附录 本书是如何进行易用性测试的\r\n参考文献
本书作者斯坦福大学心理学博士Jeff Johnson, 作为一个用户界面设计师和实现者. 经理. 易用性测试师以及Cromemco. 施乐. US West. 惠普和Sun的研究人员, 具有超过20年设计. 评价以及测试软件产品用户界面方面的经验. 本书所列禁忌主要取自用户界面评价. 易用性测试报告. 设计指南文档以及作者同咨询客户准备的谈话资料, 同时还包括作者使用过的软件和网站评价. 还有一些错误来自于作者同行们的建议.
本书共分十章. 第1章“第一原则”, 提供了对禁忌以及如何避免错误的设计准则的理解基础.
接下来的七章描述和例示了软件开发人员和他们的管理人员在设计软件和Web站点时会犯的导致用户不友好的常见禁忌.
第9章“软件评审”, 详细评审了两个软件产品, 描述了它们包含的禁忌, 并提供了如何避免这些禁忌的建议.
本书第10章“一个用户界面顾问的战争故事”, 详细描述了作者作为一个用户界面咨询顾问的一些经验, 在两方面提供了自己的见解:1) 为什么软件开发人员会犯下用户界面设计错误, 2) 如何克服这些错误.
本书最后的附录解释本书是如何通过易用性测试来提高质量的.
本书主要面向软件开发人员, 他们开发着软件或者Web站点却很少甚至没有得到用户界面专家的指导. 对于这些程序员来说, 本书可作为一个自学工具, 同时也可作为一个参考资料. 本书也将为特定的GUI平台提供用户界面设计指南的有效补充. 本书的第二类目标读者是软件开发团队的经理, 本书专门讨论了有关管理错误的内容. 本书的第三类读者是用户界面设计者, 特别是刚刚进入专家行列的人, 本书通过提供针对常见设计错误的警告和实践示例, 有效补充了有关用户界面设计和评价方面的标准参考资料和教科书.
除了向读者提供学习所有示例而必需的理论之外, 作者同时也用轻松幽默. 广闻博记和教育启发的方式介绍了用户界面设计的本质内涵. 读者可以直接访问作者关于本书的网http://web-bloopers.com/gui-bloopers/index.php. 本书将是读者理解和避免图形用户界面错误的利器和有效工具.
本书由王蔓. 刘耀明等进行翻译, 参与翻译工作的还有张昆琪. 黄江海. 骆智. 杨旭. 欧阳荣彬. 王强. 尹婷. 李宏平. 刘海宁. 邓春红. 黄凯. 周鹏. 张小辉. 刘建伟. 李昂. 陈磊. 王秀英. 王冶. 李家峻. 李洪发. 傅蓉. 杨毅. 王海峰. 李林等. 周鹏完成了本书的统稿和审校工作. 由于时间仓促, 且译者的水平有限, 在翻译过程中难免会出现一些错误, 恳请读者批评指正.
周 鹏
2004年10月
好好阅读本书, 否则你的设计就可能出现书中提到的禁忌. 好莱坞被剪辑掉的片子中有些错误也许挺有意思的, 但是没有一个好的电影导演会将这类错误保留到最后的影片中. 那为什么我们会在已经发行的软件中发现这么多设计禁忌呢?跟随Jeff Johnson吧, 他带领错误侦查队深入到敌后, 揭示了广大用户年复一年不停诅咒的所有设计上的愚蠢行为.
———Jakob Nielsen
易用性权威, Nielsen Norman Group
如果你是一个软件开发者, 请阅读本书, 那些认为自己不需要这本书的读者, 你尤其应该阅读本书!不要担心, 这本书并不是一部充满抽象和无用的理论之作——这是一部面向实践者. 代码编写者以及从事类似工作的人们的书. 这本书给出了错误示例和成因. 这本书在开发人员中会产生共鸣:开发产品的重点在于面向用户及其任务, 而不是技术. 这是一本面向实践的手册. 购买本书吧, 阅读它, 并时常带在身边.
———Don Norman
UNext Learning Systems公司总裁, 名著《The Design of Everyday Things》和《The Invisible Computer》的作者
如果本书不是如此趣味盎然的话, 我会将它当作一本教科书. 它将常见的设计. 编程和管理错误进行分类, 从而使得软件不至于陷入用户的抱怨中. 如果你希望自己的产品得到客户更高的评价, 请关注本书的内容.
———Larry Tesler
Stagecast Software公司总裁
苹果计算机公司前首席科学家
Jeff Johnson将他多年的经验汇编成一个极佳的资源:GUI设计禁忌的纲要和避免禁忌的原则. 通过揭示GUI常见错误和隐藏在它们后面的原理, Johnson开辟了进行简单无错设计的道路. 本书标志着人机交互领域的一次巨大进展.
———Terry Winograd
斯坦福大学
Johnson,J.是UI Wizards有限公司的总裁和首席咨询顾问。该公司创建于1996年,位于美国旧金山,是一家产品易用性咨询公司。UI Wizards公司的客户包括Advance Reality、Aspect Technologies、AT&T、Informix、Infospace、InXight、Oracle、Optical Microwave Networks有限公司、RightPoint Software、SGI、Studion Archetype、Sun、Tiaco Finacial Technologies及Vitria。在创建UI Wizards之前,Jeff是作为一个用户界面设计师和实现者、经理、易用性测试师以及Cromemco、施乐、US West、惠普和Sun的研究人员开展工作的。他在人机交互以及相关技术策略领域内发表过涉及各类主题的大量文章和书籍。他是第一届计算机系统分享设计美国会议(U.S. Conference on Participatory Design of Computer Systems,PDC’90)的联合主席。他从耶鲁大学获得实验心理学学士学位,从斯坦福大学获得实验心理学博士学位,同时攻读了计算机科学的相关知识。
为什么需要本书
纵观软件业的发展, 软件工程师在开发用户界面时很少得到(甚至没有得到)专业用户界面设计人员的支持和指导. 例如, 有些软件是由独立自由程序员开发出来的, 而这些程序员或者缺乏用户界面设计的培训, 或者缺乏同经过此类培训的人员的交流, 而他们开发出来的软件又可能卖给拥有此类软件市场的公司. 甚至某些相当大的组织进行软件开发时, 可能组织内也没有具备用户界面专门技巧的开发人员. 某些公司也许会有几个用户界面专家, 但是并不能满足需要用户界面设计技术的所有开发项目的需要.
在软件产品市场上, 在受软件控制的设备中, 在在线服务中充满了技术卓越而用户界面低劣的程序. 此类程序延缓了整个软件行业的成功步伐.
作为一个用户界面咨询顾问, 我经常在开发过程的后期被叫来评审或者测试那些不太具备用户界面设计经验的开发者开发出来的软件. 此类软件一般都充满了设计错误. 这些错误中的绝大部分都是非常常见的错误, 而这些错误在公司之间甚至在公司内部的项目中不停地发生.
一个客户公司程序员曾经告诉我, “您是我们UI方面的救火队员”, 他指的是我那次对一个C语言的Unix工具程序进行的检查中找出了常见的编程错误. 对于一个大型纠错活动来说, 这么多客户公司希望雇用我是为了让我作为一个“过滤器”来排除用户界面设计错误.
为了减少常见错误的发生, 并减少我为客户检查用户界面的次数, 我一直建议程序员去阅读一本或者多本来自于人机交互(Human-Computer Interaction, HCI)社区有关设计和评估用户界面的书, 例如Shneiderman[1987], Nielsen[1993], Weinshenk等[1997], 以及Bickford[1997]. 这些建议通常被忽视了, 因为绝大多数此类书籍要么对于程序员来说太学术化了, 要么是面向有经验的用户界面专家而写的.
甚至那些阅读了推荐书籍并且理解了其中一般设计指南的少数程序员也仍然继续犯着许多相同的常见错误. 看起来问题的原因是这些书籍中提供的指南太抽象了. 这就使得程序员非常容易合理地违反抽象的指南:“是的, 我理解这条规则, 但是现在情况是不同的. 现在的情况是一种并没有被那些规则覆盖到的情况. ”或者他们也许会说:“我也许曲解了这条规则, 但是我是有足够理由的. ”
另外一个问题是, 正如我所知道的一个GUI程序员所说的那样:“绝大多数的程序员相信自己是一个UI专家. ”毕竟, 程序员使用计算机比绝大多数人都多得多, 因此他们也会更了解用户界面. 他们自以为有着这种优势, 并且由于他们可能已经设计过一些用户界面, 因此就认为自己已经成为用户界面设计者了.
因为这些问题的存在, 我已经发现, 在为客户公司进行咨询服务并与开发人员一起工作的时候, 指出他们曾经犯过的错误并且解释为什么那些是错误是有效的. 类似地, 在培训开发人员以便减少将来出现相似的设计错误时, 我已经发现关注常见设计错误并且为之制定设计规则是有效的. 换句话说, 向GUI开发人员显示他们经常犯的错误, 并且提供避免此类错误的规则. 同时能够提供构成这些设计准则基础的一些原则也是非常重要的, 这样开发人员就能够举一反三, 而不是拘泥于某个示例.
这种经历表明了一本关注设计错误并且指出如何避免的书籍也许比以前许多用户界面设计书籍更有效, 或者至少对于这些书籍是一个有用的补充. 因此, 本书按照与设计指南相反的方式进行结构组织:先列出一类常见错误, 然后描述如何避免它.
并不是所有损害产品和服务易用性的错误都是由实现用户界面的程序员造成的. 许多软件开发组织的管理层也会犯错误, 这种错误对所开发的产品或者服务的用户界面有负面影响. 而且, 这些管理错误在许多方面比特定的GUI设计错误更严重, 因为它们影响了更多项目, 而且很难诊断或者纠正. 我也打算描述这种类型的错误, 并警告开发人员避免它们. 这也是写第8章“管理错误”的原因.
这本书的主要目标是帮助GUI开发人员和设计人员自动发现自己的设计错误, 并且在避免这些错误方面做得更好.
我有时认为如果在真实世界中有错误对话框的话, 世界会变得非常美好. 无论何时, 当你犯了一个错误的时候, 都会出现这些对话框. 真实的错误对话框将是一个非常棒的方式, 它能够培训软件开发人员和开发经理认识到自己已经犯下的, 或者即将犯下的一个错误. (我所知道的一些软件开发人员和经理会犯下大量此类错误!)
但是真实世界中没有这样的错误对话框, 因此我们需要将它们“植入”开发者的头脑中. 希望本书会对此有所帮助.
何谓GUI禁忌?
本书描述了软件开发人员在设计图形用户界面(Graphical User Interface, GUI)时经常犯的禁忌[blooper, 即错误(mistake)]. 本书中提供的错误并没有覆盖GUI设计者会犯的所有错误, 也没有覆盖我曾经见过的所有错误. 请相信我, 通过超过二十年作为用户界面专家工作的经历, 我曾经见过一些非常令人惊讶的设计错误—真正的愚蠢可笑的错误(howler), 我的一些同事是这么称呼它们的.
本书所列的设计错误不仅愚蠢可笑, 而且是常见的. 警告软件开发人员远离那些非常罕见或者面向特定应用的错误是没有多大意义的, 不管这类错误会造成多大的损害. 而警告开发人员远离那些他们可能经常犯的错误则具有很大意义.
更进一步来说, 在设计错误示例之前我就筛选了绝大多数错误. 我所指的“错误”不仅仅是我在软件中看到过的特定设计错误示例, 而且, 这些错误还是开发人员一而再, 再而三地犯的错误. 书中的示例仅仅是为了阐明这些错误—使这些错误更具体.
因此, 本书不是一本简单的用户界面错误(软件开发人员制造的各种尴尬错误)集合. 我的目的不是展示使制造者窘迫的用户界面错误, 从而引发读者的嘲笑:一边摇着头, 一边疑惑为什么设计人员如此愚蠢. 我的目的是帮助GUI设计人员和开发人员学会生成更好的GUI.
本书提供的错误一般都是用文字进行描述, 如果有可能, 会通过从真实产品以及在线服务的屏幕图像. 自行设计的屏幕图像以及我所经历的逸闻趣事中得到的图像进行例示. 本书指出每一个错误后, 将提供开发人员应该遵循以避免错误发生的设计规则. 我尽可能用实例描述随着每个错误给出的每一条设计规则.
为了清晰显示每一个屏幕图像是一个示例中的设计错误, 还是一个正确设计, 我对它们中的绝大多数都标记了“坏示例”以及“好示例”符号. 坏示例符号是一个“拇指向下”的手型符号. 好示例符号是一个“拇指向上”的手型符号(参见本段文字左边对应显示的符号). 中性的屏幕图像没有标记.
本书提供的错误分为七种类型:GUI组件. 布局和外观. 文字. 交互. Web. 响应以及管理. GUI组件错误对应于关于如何使用一个用户界面工具包中提供的组件所做的错误决策. 布局和外观错误指的是排列和表示GUI组件时出现的错误. 文字错误是指在用户界面上决定如何使用文字时遇到的错误. 这类错误不是指涉及文字的图形问题, 例如不适当的字体选择, 它们指的是使用文字真正遇到的问题. 交互式错误是一类违反了常用用户界面设计原则的错误, 它独立于所使用的用户界面工具包. Web错误是指Web站点和基于Web应用程序特有的问题. 响应错误指的是一个产品或者服务设计与用户工作步骤接口方面的问题. 管理错误则指的是影响软件和电子设备易用性和使用效果的管理层次的问题.
这些错误是如何编辑的
本书中提供的错误来自我超过二十年设计. 评价以及测试软件产品用户界面方面的个人经验, 特别是从1996年以来我开始作为一个用户界面咨询顾问的经验. 这些错误主要来自用户界面评价. 易用性测试报告. 设计指南文档以及我同雇主和咨询客户准备的谈话资料. 还有一些错误来自于我的同事们对我的建议.
错误的示例来源则五花八门. 书中很少的一部分示例真正是来自于我所服务的客户的一个产品或者一个软件公司. 在绝大多数情况下, 由于我与服务的客户有保密协议, 因此我无法揭示所描述软件开发的更多细节, 即使是从来没有上过市的软件也是如此. 因此, 在本书中提供的许多有趣的故事中, 所涉及公司和产品的名称被修改了或者有所限制. 基于同样的原因, 错误示例的屏幕图像主要也来自于那些并非是我所服务的咨询客户的公司开发出来的商业可用软件和在线服务, 也就是说, 来自于我所使用的软件和Web站点. 在另一方面, 我确实获得了许可, 在少数情况下讨论客户软件时可以使用真实的名称和屏幕图像.
本书中有一些错误示例来自于Interface Hall of Shame(接口错误集锦, www.iarchitect.com/mshame.htm), 这是一个GUI设计错误的大型会聚之地, 它是由一个用户界面咨询公司(Isys Information Architects有限公司)的员工Brian Hayes编辑的. 该站点展示那些—由Hayes先生或者访问该站点的人发现—在商业可用产品以及服务中存在的拙劣用户界面设计示例. 在Interface Hall of Shame展示的一些示例提供了我希望进行讨论的错误的良好例示, 因此, 承蒙Isys Information Architects的宽宏许可, 我将这些示例引入到本书中.
最后, 本书中还有一些例示错误的屏幕图像是人为制造的—是为了将本书中某个确定错误描述得更清晰而特意创建的.
尽管不是本书中错误的来源或者错误示例的来源, 但下面三类令人印象深刻的设计错误资源值得关注:
* 《Designing Visual Interfaces》, 一本由Kevin Mullet和Darrell Sano合著的软件图形设计书籍[1995]. 对于他们书中的每一个设计主题(例如, “优雅和简洁”. “范围. 对比和均衡”. “组织和可视化结构”), Mullet和Sano不仅表述了良好设计的原则和示例, 同时也提供了常见的设计错误.
* UseIt.com, 这是一个由Jakob Nielsen创建和维护的Web站点, 他是一位Web设计专家, 一位有关Web趋势的评论员. UseIt.com列出了Nielsen给出的Web设计十大错误, 同时还提供了其他有用的Web设计建议. Nielsen还出版了一本相同主题的书籍[Nielsen, 1999d].
* WebPagesThatSuck.com, 这是由Web设计人员Vincent Flanders编辑的网站, 描述了坏的Web站点设计示例, 藉此来指导人们进行好的Web站点设计. 对应该Web站点(或者至少是该站点的某段时间内的一个快照)有一本优秀书籍, 《Web Pages That Suck》, 由Flanders和Willis合著而成[1998].
上述资源对本书的主要影响就是, 我相信那些对错误进行研究的作者们已经在相关领域建树非常专业而且做得很好了. Mullet和Sano并没有给其他人留下继续对图形设计错误进行评论的更多空间. 同样, Web设计错误已经由Nielsen. Flanders和Willis进行了很好的阐述. 这样, 我就可以略过他们已经讨论过的主题, 并将注意力放在我发现的而且据我所知他们没有讨论过的设计问题上.
第8章“管理错误”的内容受到下面这三本有关管理层问题的书的影响, 这些问题将造成基于计算机的产品和服务缺乏易用性:
* 《The Trouble with Computers》, 由Tom Landauer著作[1995].
* 《The Invisible Computer》, 由Don Norman著作[1999].
* 《The Inmates Are Running the Asylum》, 由Alan Cooper著作[1999].
这三本书并没有系统地收集错误, 而是面向软件行业发展趋势提供对错误原因的深层分析, 以揭示那些迷惑和滋扰人们并阻碍生产效率的产品和服务. 然而, 这些书确实包含了用户不友好的设计类型示例, 这些错误源自那些关注技术甚于用户需求的软件开发组织和过程.
谁应该阅读本书
本书主要的目标读者是那些辛勤工作的程序员, 他们开发着软件或者Web站点, 却从用户界面专家那儿得到很少或者没有得到指导和反馈. 对于这些程序员来说, 本书将向他们提供一个自学工具和参考资料. 本书也将为特定的GUI平台提供用户界面设计指南的有效补充.
本书的第二类目标读者是软件开发团队的经理. 本书使他们感兴趣的原因是本书包括了一章有关管理错误的内容.
本书的第三类读者是用户界面设计者, 特别是那些刚刚进入专家行列的人. 对于他们, 本书通过提供针对常见设计错误的警告和实践示例有效补充了有关用户界面设计和评价方面的标准参考和教科书.
本书是如何组织的
本书由十章组成:第一原则. GUI组件错误. 布局和外观错误. 文字错误. 交互错误. Web错误. 响应错误. 管理错误. 软件评审以及战争故事.
第1章“第一原则”, 提供了对错误以及如何避免错误的设计准则的理解基础.
接下来的七章描述和例示了软件开发人员和他们的管理人员, 在设计软件和Web站点时会犯的常见错误, 结果会产生用户不友好的软件. 在线服务以及电子设备.
第9章“软件评审”, 详细评审了两个软件产品, 描述了它们包含的错误, 包括其他不常见的设计错误. 该章同时也提供了如何避免错误的建议.
第10章“一个用户界面顾问的战争故事”, 详细描述了我作为一个用户界面咨询顾问的一些经验, 在两方面提供了自己的见解:1) 为什么软件开发人员会犯下用户界面设计错误, 2) 如何克服这些错误.
如何使用本书
正如上面所说的, 本书面向三类读者群—GUI程序员. 软件开发经理以及新用户界面专家. 这三种不同类型的读者将会从本书得到不同的信息.
GUI程序员也许会直接跳到特定错误的章节:GUI组件. 布局和外观. 文字以及Web. 他们可以在阅读这些错误之前从本书第1章开始阅读, 或者在他们已经阅读了避免这些错误的设计准则之后返回来阅读第1章. 阅读完这些章节之后, 我建议程序员们阅读有关交互和响应错误的章节, 然后再阅读一下软件评审. 程序员可以将管理错误. 战争故事以及本书附录作为“课外阅读”—如果他们有时间或者感兴趣可以读一读.
对于软件经理来说, 有关管理错误那一章显然是最重要的. 读完该章后对软件经理来说其他值得阅读的章节按重要性依次为:文字错误. 响应错误. 战争故事. 软件评审以及交互错误. 第1章对于那些具有用户界面设计以及人机交互背景或者对其感兴趣的经理来说值得一读. 开发经理或许可以完全略过GUI组件. 外观和布局以及Web错误. 他们只要告诉他们的程序员和设计人员“阅读这些章节并且完全按照Johnson说的去做. ”:-)
对于那些刚刚崭露头角的用户界面专家来说, 应该从第1章开始阅读. 我建议他们接着可以快速浏览有关GUI组件. 外观和布局以及文字错误章节, 主要熟悉这些错误中包含什么就行了, 他们在以后需要的时候可以再重新阅读这些章节中的特定错误. 另外, 强烈向那些新用户界面专家们推荐有关交互. 响应以及管理错误的章节. 对于那些将要设计Web站点或者Web应用程序的人来说, 有关Web错误的章节是重要的, 但是其他人可以略过它们. 最后两章将向新来者提供用户界面领域内一个有经验的专家所了解的东西. 最后, 一些用户界面专家也许会对阅读附录感兴趣, 可以看看这本书是如何通过易用性测试来提高质量的.