如何为桌面应用程序设计出色的用户体验
注意
此设计指南是为 Windows 7 创建的,尚未针对较新版本的 Windows 进行更新。 大部分指南原则上仍然适用,但演示和示例并不反映我们 当前的设计指南。
出色的桌面应用程序功能强大,同时简单。 通过精心平衡的功能选择和演示,可以实现功能强大和简单性。
强大:
功能强大且简单:
理想的基于 Windows 的应用程序既强大又简单。 当然,你希望应用程序功能强大,当然也希望它简单,但你能否同时实现这两个目标? 这些目标之间存在自然的紧张关系,但这种紧张远非不可调和的。 你可以通过精心平衡的功能选择和演示来实现功能强大和简单性。
是什么使应用程序强大?
“权力”在软件方面到底意味着什么? 如果应用程序充满了功能,那么应用程序可能被认为是强大的功能,并具有非常广泛的功能,试图成为所有用户的所有内容。 这种设计不太可能成功,因为非目标功能集不太可能满足任何人的需求。 这不是我们所需的权力类型。
如果应用程序具有这些特征的正确组合,则其功能非常强大:
- 使。 应用程序满足其目标用户的需求,使他们能够执行他们无法执行的任务,并有效地实现其目标。
- 高效。 应用程序使用户能够以前所未有的生产力和规模执行任务。
- 多才多艺。 该应用程序使用户能够在各种情况下有效地执行各种任务。
- 直接。 应用程序感觉它直接帮助用户实现其目标,而不是妨碍或需要不必要的步骤。 快捷方式、键盘访问和宏等功能可提高直接性。
- 很灵活。 该应用程序允许用户对其工作进行完整、精细的控制。
- 集成性。 该应用程序与 Microsoft Windows 很好地集成,允许与其他应用程序共享数据。
- 高级。 该应用程序具有在竞争解决方案中找不到的非凡、创新、最先进的功能。
其中一些特征取决于用户的看法,并且与用户的当前功能相关。 被视为强大的功能可能会随着时间的推移而改变,因此今天的高级搜索功能明天可能司空见惯。
所有这些特征都可以组合到我们的权力定义中:
当应用程序使目标用户能够高效实现其全部潜力时,应用程序就非常强大。
因此,功率的最终衡量标准是生产力,而不是特征的数量。
不同的用户需要帮助才能以不同的方式充分发挥其潜力。 对某些用户启用的功能可能会损害其他人的多功能性、直接性和控制权。 设计良好的软件必须适当地平衡这些特征。 例如,为非专业用户设计的桌面发布系统可能会使用向导引导用户完成复杂的任务。 此类向导使目标用户能够执行他们无法执行的任务。 相比之下,面向专业人员的桌面发布系统可能侧重于直接性、效率和完全控制。 对于此类应用程序的用户,向导可能会受到限制和令人沮丧。
如果你只做一件事...
了解目标用户的目标,并制定一个功能集,使他们能够高效地实现这些目标。
是什么使用户体验变得简单?
我们定义简单性,如下所示:
简单性是减少或消除目标用户已了解并考虑的设计的属性。
实际上,通过选择正确的功能集并正确呈现功能,可以实现简单性。 这减少了真实和感知的感知。
简单性取决于用户的感觉。 考虑自动传输的效果如何取决于用户的观点:
- 对于典型的驾驶员 (目标用户) ,自动变速器无需手动换档和离合器,使汽车更容易驾驶。 手动换档和离合器对驾驶任务并不重要,因此为了简单起见,它们被移除。
- 对于专业赛车手来说,直接控制变速器对竞争至关重要。 自动变速器会对汽车的性能产生负面影响,因此不被视为简单。
- 对于机械师来说,自动变速器是一种更复杂的机制,因此与手动变速器相比,它更难修复和维护。 与机制不同,目标用户完全不知道这种内部复杂性。
虽然不同用户对自动传输的不同方式,但它很成功,因为它不需要目标用户提供知识、技能和精力。 对于典型的驱动程序来说,自动变速器是一项伟大的功能,因为它只是工作。
简单性与易用性
正确应用时,简单易用。 但简单性和易用性并不是相同的概念。 当用户可以在适当时间内顺利地自行执行任务时,不会产生困难或混淆,即可实现易用性。 有多种方法可以实现易用性,而简单性(减少 unessential)只是其中之一。
所有用户,无论多么复杂,都希望以最少的不必要的工作量完成工作。 所有用户(甚至高级用户)主要是为了完成工作,而不是了解计算机或应用程序。
简单性是实现易用性的最有效方法,易用性等于使用。 复杂、难以使用的功能只是不会被使用。 相比之下,简单、优雅的设计,能够很好地执行其功能,是一种使用的乐趣。 他们调用积极的情感反应。
例如,请考虑 Microsoft Windows XP 中的无线网络支持。 Microsoft 本可以添加一个向导来引导用户完成配置过程。 此方法将带来易用性,但并不简单,因为向导 () 添加的一项功能。 相反,Microsoft 设计了无线网络来自动配置自身。 用户最终不会关心配置详细信息,只要它“只是”可靠且安全地工作。 无线网络技术的强大功能和简单性相结合,使其广受欢迎,并迅速采用。
如果你只做一件事...
使用能很好地完成工作的最简单的设计开始设计过程。
如果对当前设计不满意,请首先去除所有 unessential 元素。 你会发现剩下的东西通常相当不错。
在保持电源的同时获得简单性
设计原理
为了获得简单性,请始终针对可能(而不是可能)进行设计。
可能的
基于可能结果的设计决策会导致复杂的用户界面(如注册表编辑器),其中设计假定所有操作都是同样可能的,因此需要同等的工作量。 由于任何事情都是可能的,因此在设计决策中不会考虑用户目标。
可能的
基于可能导致简化的基于目标和任务的解决方案的设计决策,其中可能的方案会获得焦点,并且执行所需的工作量最少。
简单设计原则
为了获得简单性,请关注可能的内容:减少、隐藏或删除不太可能的内容;并消除不可能实现的内容。
与用户可能执行的操作相比,用户将执行的操作与设计相关得多。
设计技术
为了在保持电源的同时获得简单性,请选择 正确的功能集, 在正确的位置找到特征,并减少使用它们的 工作量 。 本部分提供一些用于实现这些目标的常见技术。
选择正确的功能集
“完美是实现的,而不是当没有什么可添加的,
但当没有什么东西可以带走时,“安托万·德·Saint-Exupery
以下设计技术为用户提供所需的功能,同时通过实际减少或删除实现简单性:
- 确定用户所需的功能。 通过目标、方案和任务分析了解用户的需求。 确定一组可实现这些目标的功能。
- 删除不必要的元素。 删除不太可能使用或具有首选替代项的元素。
- 删除不必要的冗余。 可能有几种有效的方法来执行任务。 若要实现简单性,请做出艰难的决定,并为目标用户选择最佳选择,而不是提供所有这些用户并让选择成为一个选项。
- 使其自动“正常工作”。 元素是必需的,但要使其正常工作的任何用户交互都不是必需的,因为存在可接受的默认行为或配置。 为了实现简单性,请使其自动工作,并完全隐藏用户或显著减少其暴露。
简化演示文稿
“能够简化方法来消除不必要的
以便必要的可以说话。“-汉斯·霍夫曼
使用以下设计技术来保持电源,同时通过减少或删除的感知实现简单性:
- 合并应组合的内容。 将支持任务的基本功能放在一起,以便可以在一个位置执行任务。 任务的步骤应具有统一的简化流程。 将复杂任务分解为一组简单明了的步骤,以便“一个”位置可能包含多个 UI 图面,例如向导。
- 分隔应分隔的内容。 并非所有内容都可以在一个位置呈现,因此始终有清晰、精心挑选的边界。 使支持核心方案的功能集中且明显,并隐藏可选功能或使其成为外围功能。 分隔各个任务并提供指向相关任务的链接。 例如,与操作照片相关的任务应与管理照片集合相关的任务明确分开,但彼此之间应易于访问。
- 消除可以消除的内容。 打印出设计并突出显示用于执行最重要的任务的元素。 甚至可以突出显示 UI 文本中传达有用信息的单个字词。 现在查看未突出显示的内容,并考虑将其从设计中删除。 如果删除该项目,是否会发生任何不良情况? 如果没有,请将其删除!
- 一致性、可配置性和通用化通常是理想的品质,但它们可能会导致不必要的复杂性。 查看设计中是否存在一致性 (方面的误导性工作,例如使用冗余文本) 、通用化 ((例如,当两个时区足够) 时具有任意数量的时区)和可配置性 ((例如用户不太可能更改) 的选项),以及消除可以消除的内容。
- 将元素放在正确的位置。 在窗口中,元素的位置应遵循其实用工具。 基本控件、说明和解释都应按逻辑顺序在上下文中。 如果需要更多选项,请单击 V 形龙或类似机制,在上下文中公开这些选项;如果需要更多信息,请在鼠标悬停时显示信息提示。 将不太重要的任务、选项和帮助信息放置在main流外部的单独窗口或页面中。 根据需要显示其他详细信息的技术称为渐进式披露。
- 使用有意义的高级组合。 与单个元素相比,选择和操作相关元素组通常更简单且更具可伸缩性。 高级组合的示例包括文件夹、主题、样式和用户组。 此类组合通常映射到用户目标或意图,而单个元素并不明显。 例如,高对比度黑色配色方案背后的意图远比黑色窗口背景的意图要明显得多。
- 选择正确的控件。 设计元素由用于表示它们的控件体现,因此选择正确的控件对于高效呈现至关重要。 例如,Microsoft Word 使用的字体选择框显示字体预览以及最近使用的字体。 同样,Word显示潜在拼写和语法错误的方式比对话框替代方法要简单得多,如本文开头所示。
减少工作量
“简单的事情应该很简单。
复杂的事情应该是可能的。”—艾伦·凯
以下设计方法可减少用户的工作量:
- 使任务可发现且可见。 所有任务(尤其是频繁的任务)都应在用户界面中轻松发现。 执行任务所需的步骤应该是可见的,不应依赖于记忆。
- 在用户的域中显示任务。 复杂的软件要求用户将其问题映射到技术。 简单的软件通过呈现自然的东西来为它们进行映射。 例如,红眼减少功能直接映射到问题空间,并且不需要用户考虑色调和渐变等细节。
- 将域知识放入程序中。 用户无需访问外部信息即可成功使用应用程序。 领域知识的范围从复杂的数据和算法到简单地明确哪种类型的输入是有效的。
- 使用用户理解的文本。 精心设计的文本对于与用户的有效沟通至关重要。 使用用户熟悉的概念和术语。 以简单语言充分解释所要询问的内容,以便用户可以做出明智的决策。
- 使用安全、安全、可能的默认值。 如果设置的值在大多数情况下适用于大多数用户,并且该设置既安全又安全,请使用它作为默认值。 仅在必要时让用户指定值。
- 使用约束。 如果有多种执行任务的方法,但只有一些方法是正确的,请将任务限制为这些正确的方法。 不应允许用户容易发生可预防的错误。
简单并不意味着简单
“一切都应该尽可能简单,
但并不简单。—阿尔伯特·爱因斯坦
我们认为,简单性对于有效、理想的用户体验至关重要,但总是有可能把好东西做得太远。 简单性的本质是减少或消除不必要。 删除基本项只会产生糟糕的设计。 如果“简化”导致用户感到沮丧、困惑、不自在或无法成功完成任务,则删除的内容过多。
简单性确实意味着你付出更多努力
“我只把这封信写得更长,因为我有
不是时间缩短。— Blaise Pascal
在保持电源的同时获得简单性通常需要大量的内部复杂性。 设计公开所有技术的软件通常比设计隐藏它的软件要容易- 后者需要对目标用户及其目标有很好的了解。 删除某个功能需要规则,就像决定不添加真正不切实际的酷功能一样。 简单性需要做出艰难的设计选择,而不是使所有内容都可配置。 复杂的软件通常源于对用户的误解:他们重视未使用的功能或过于复杂的功能,他们无法理解。
功能强大且简单
电源就是让用户能够高效工作。 简单性就是消除不必要的,以正确的方式呈现功能。 通过了解目标用户并实现功能和演示的适当平衡,你可以设计同时执行这两种功能的基于 Windows 的应用程序。