表单很少是与计算机进行复杂交互的最佳比喻。然而,大多数大公司都有纸质表格的传统。结果,他们的内部网充斥着在线表单,这些表单试图满足通常由具有真实对话流和更成熟GUI的实际应用程序更好地满足的需求。

我们最近接到了一个电话,有人想要一个单一内部网表单的可用性审查。我通常不喜欢在单个页面上给出反馈,因为项目开销太大,而可用性见解往往太狭隘,因为你缺乏一个完整的网站或目标内部网区域的背景。在这种情况下,请求来自一家非常受尊敬的公司,也是我们的好客户,所以我们欠他们额外的服务,并同意采用他们的形式。我们做得很好,因为这个表单变成了可用性问题的金矿:我们的最终报告包含了27个重新设计建议。

表单包含57个交互元素(例如,组的单选按钮,文本输入字段和菜单),以及各种帮助链接。总的来说,表单的高度是3350像素——也就是说,它可以在标准显示器(1024x768)上滚动5个屏幕。

你的网站或内联网上有这样的表格吗?如果是这样,将它们重新定义为应用程序。表单比喻最适用于一些简单的东西,比如在电子商务网站上输入送货和账单地址。甚至这些数据实际上是一个更大的工作流中的一个元素,该工作流由购物车和结账过程组成,跨越多个步骤32个可用性指南

何时使用表单

表单在没什么可做的时候也能起作用超越普通数据输入。只需将文本框堆叠起来,让用户无需动脑筋地输入即可。一些决策点可能是可以接受的,例如关于送货地址和帐单地址是相同还是不同的传统问题。即使在这里,少量的交互性也可以提高可用性。例如,除非用户取消“账单地址与发货地址相同”复选框,否则您可能会将账单地址区域变成灰色。

当你将它们以直线形式呈现时,更复杂的交互就会受到影响。以下标准可以帮助你决定是呈现表单还是更具互动性的设计:

  • 所请求信息的复杂性。如果数据请求是无需动脑筋就可以提供的,那么就使用表单。如果用户需要思考和/或参考支持材料,使用应用程序(并提供访问支持材料的功能)。
  • 数量的步骤。如果步骤很少,则使用表单。如果它们有很多,将它们组织成一个自然的工作流,跨多个步骤。
  • 有条件的地区。如果所有的问题和选项都是一样的,那就使用表单。如果用户的后续条目依赖于他们在前一个步骤中的操作,那么使用一个应用程序,并仅提供与每个步骤相关的选项。
  • 线性。条件区域是非线性的一个例子,但还有其他的例子。如果用户清楚地按照线性顺序进行操作,并且不需要重新访问或修改前面的步骤,那么就使用表单。如果步骤之间不相互依赖,则使用表单。如果用户需要在步骤之间跳转或以不可预测的顺序完成步骤,请使用应用程序。

请注意,形状的长度并不是一个充分的理由来拆分它。是的,最好只写一两个屏幕内容:如果一个表单占据了很多屏幕,你应该认真考虑消除一些问题和选项.否则,你可能会淹没用户并降低转化率。但是,如果真的需要所有的元素,你当然可以把它们放在一个很长的页面上——只要确保每个元素都很简单,所有用户要做的就是在完成提交按钮的每一步时不断滚动(并叹气)。

应用程序的好处

从长远来看,我相信我们会看到更多具有优化ui的独立Internet应用程序,以处理特定类型的任务和数据。Napster订阅管理器、iTunes音乐商店和谷歌Earth就是目前这种趋势的例子。一旦Windows Vista被广泛使用,大多数互联网功能可能会提供下载代码与本地代码(XAML/Avalon)相同的外观和感觉。当然,这将需要数年时间。(通常的建议是至少要等两年在技术发布之后,在你的网站上使用它之前。)

不过,就目前而言,我所谓的“应用程序”不一定是作为独立的二进制文件下载的,也不一定是用Flash或JavaScript等前vista时代的互联网编程语言实现的。我在这里提到的用户任务类型主要需要临时应用程序,这些应用程序可以实现为一组Web页面,其中所有或大部分编程工作都在服务器上。

即使应用程序是嵌入在较大网站或内部网中的简单页面集,它们也不同于表单可编程逻辑和工作流.与表单相比,应用程序具有以下潜在优势:

  • 的焦点。通过将工作流分解为多个步骤,用户可以一次专注于一个主题。因此,他们可能不会被其他屏幕元素分散注意力和淹没。为了实现这一点,您显然必须以对用户有意义的方式对应用程序进行模块化,并尽量减少引用其他领域中包含的信息的需要。
  • 语境的帮助。因为屏幕上的项目较少,所以你可以清楚地解释每一个项目。你可以用文字和例子来说明按钮和菜单的正确用法。最好在主屏幕上显示这些信息,因为用户不喜欢切换到单独的帮助屏幕。当您无法避免帮助屏幕时,应用程序至少可以让您通过将帮助文本与用户工作流的当前步骤关联起来,使帮助屏幕更有帮助。
  • 避免压缩屏幕元素。在每个屏幕上使用较少道具的第二个好处是,你的布局受到的空间限制较少。例如,你可以避免下拉菜单和微小的滚动列表框。相反,在一个更广阔的菜单中显示可选择的项目列表,所有项目都是同时可见的。这使得选择更快,更不容易出错。
  • 消除不相关的步骤。用户永远不需要看到不适用于他们的问题和选项。例如,如果您的业务逻辑要求您知道客户是否已婚,就不要向单身客户提出与他们没有配偶有关的问题。当用户必须像这样阅读说明时,表单变得既长又复杂如果你对第25题的回答是“是”,请完成第26题。否则跳到第27题。”
  • 灵活的工作流。对于应用程序,您可以让用户按照对他们有意义的顺序处理问题的不同部分。您还可以让他们在此过程中引用支持的数据源。例如,如果一个应付账款应用程序需要供应商编号来处理付款,您可以启动一个搜索界面,这样用户就可以通过名称找到供应商,并自动将这些编号和任何其他信息从一个应用程序转移到另一个应用程序。(一般来说,如果你正在观察用户领域的研究看到他们在笔记本的一个屏幕上写下信息,然后又在另一个屏幕上重新输入,你就发现了一个通过自动化数据传输来提高工作效率和减少错误的机会。)
  • 提供反馈。利用可编程性,重申用户的行为和选择,以确定计算机将如何解释它们。例如,如果用户必须输入供应商编号,则通过说明供应商的名称来给他们反馈。这将大大减少输入错误供应商编号的错误。
  • 可定制性。如果一个应用程序将被重复使用,您可以让用户为常见操作添加快捷方式。例如,费用报告应用程序可能要求用户输入驾驶距离,以获得个人汽车使用的报销。如果员工经常走相同的路线(比如,去机场或重要的客户站点),应用程序可以提供一键访问经常使用的距离,并按名称列出(比如,“从办公室到肯尼迪机场”)。
  • 超越框和按钮的交互元素。应用程序可以让你采用所有的GUI创新,从使用幻灯片到要求用户在图像上标记感兴趣的区域。

应用程序的缺点

应用程序有两个严重的缺陷。首先,它们涉及到编程和技术,以及相关的成本和风险bug。只有在您能够负担得起调试到非常高质量水平的情况下才能开发代码,否则您对用户的伤害将超过您对他们的帮助。

其次,应用程序要求用户这么做了解新命令在一个不能同时看到所有东西的环境中。如果做得不好,这两个问题会大大降低可用性,与单页表单相比,单页表单的操作很简单(滚动),没有隐藏任何东西(尽管可能需要滚动来暴露隐藏的元素)。在我们的测试46个基于网络的应用程序,最严重的问题之一是用户缺乏对每个应用程序的任务结构和基本目标的预先理解。

最终的指导方针是首先简要概述应用程序,它的工作流程,以及预期的结果。当然,这增加了开销,因此是网站和内部网上的临时应用程序的另一个缺点。但是,总的来说,许多用户任务都足够复杂,因此当您放弃旧的表单隐喻并为用户提供交互式UI支持时,可用性就会得到增强。