架构技巧:使用 OODA 循环设计用户界面
 

2009-08-14 作者:Tom Hammell 来源:IBM

 
本文内容包括:
OODA 循环是由美国空军作为其空战研究的一部分开发的。观察-确认-决策-行动 (Observe-Orient-Decide-Act, OODA) 循环是根据人脑的决策过程建立的模型。本文将阐明 UI 架构师如何运用 OODA 循环的思想来设计用户界面,以便为用户提供更出色的环境感知性和更直观的使用体验。本文将介绍 OODA 循环的基础知识,并探讨如何将它应用于 UI 设计。在本文的最后还列出了一份检查清单,您可以将它作为 UI 初始设计的辅助工具。

什么是 OODA 循环?

美国空军自第一次世界大战以来一直在研究空战。多年来,有关空战的不同理论层出不穷,不断取得进步,其中 John Boyd 的 OODA 循环理论的发展更是堪称一大高峰。

图 1. OODA 循环
OODA 循环
 

图 1 显示了循环中的各个基本步骤以及它们之间的关系。OODA 过程十分复杂,虽然完整的说明已经超出了这篇简介文章的范畴,但是图片却能起到很好的概述作用。理解 OODA 循环的关键在于认清信息是如何在前后的步骤之间传递,以及各个组件是如何作为一个整体工作的。基本的步骤可定义如下:

  • 观察—从环境中收集与您试图解决的问题有关的信息。
  • 确认—使用收集来的信息建立环境的心理模型。也就是说,通过对数据加以综合,在心中对情况进行评估。随着接收到的信息量在不断增长,您将解构旧的心理模型,然后创建更符合情况的新模型。请注意,在感知某一事件时,不同的人需要的细节程度也不一样。我们往往想当然地认为,某些人之所以不能做出明智的决策,是因为他们是糟糕的决策者。但实际上,大多数人做出差劲的决策的原因是,他们无法将拥有的信息放在正确的上下文中。这种场合需要进行确认。“确认”这一步骤必须考虑用户的经验和技能水平。它还应当将事件发生时的上下文作为重点,以使用户能够做出更明智的行动决策。确认是将信息转化为知识的关键。而在做出明智决策的过程中,真正起到预测作用的是知识而不是信息。
  • 决策—考虑各种选择,然后选出您认为有助于解决问题的行动路线。
  • 行动—执行构思出的决策,并检验结果。当您观察到行动的结果后,您会将这一信息反馈到循环的开始处,然后开始新一轮的循环。请注意,在战斗(或竞争)中,您需要比敌人更快更好地完成这四个步骤,因为敌人很可能也在经历他们的 OODA 循环。

如何将 OODA 循环用于 UI 设计

那么空战与 OODA 循环又和 UI 设计有什么关系呢?实际上,它们的关系十分密切。OODA 循环是一个很好的模型,可以用于描述人们和他们所处的环境的交互方式,以及他们如何做出决策以解决问题。简单地说,UI 是软件的一部分,它可以帮助用户解决各种问题,而无论这问题是如何在 Amazon.com 找到某本书,还是如何控制核反应堆。

一个优秀的 UI 应该有助于人们快速完成 OODA 过程。首先,它应当为人们显示解决问题时所需的信息(允许他们观察 )。然后,它采用能够帮助他们理解问题的方式呈现信息(根据情况为他们确认 )。接下来,它需要向他们显示可供采取的行动(为他们提供决策 机会)。最后,它还应根据已经采取的行动取得的结果提供反馈(使他们可以看到行动 结果)。

一个经过良好设计的 UI 应当允许用户尽可能快速高效地执行任务。人们已经对于 UI 设计及其改进方法进行了大量的研究。这些研究的结果通常是一组在创建 UI 时使用的指导原则。这些指导原则往往会规定如何设置不同类型数据的格式,或文本应采用哪种颜色和字体。虽然诸如此类的约定会让 UI 具有一致的外观并改善其可用性,但它们在 UI 的初始设计方面并不能提供太多帮助。

如果您将 UI 看成是用于决策的软件的一部分,您可以将 OODA 循环作为设计 UI 时的决策过程模型。您只需将自己放在用户的位置上,然后尝试创建一组屏幕。这些屏幕将帮助用户以最快的速度收集信息并做出决策。您将 UI 视为 OODA 循环的一种实现形式,并针对设计过程中的每个步骤想出一些应向用户询问的问题,并将它们放在一个列表中,旨在帮助用户快速做出决策。

在开始进行 UI 设计时,应当提出的第一个问题是:

本 UI 要解决什么问题?

这个问题很重要,因为作为设计人员,您能够借助于它的答案来确定问题领域。在描述待解决的问题时,应当尽可能具体。例如:“用户需要监视核反应堆的温度,以确保它低于某一温度范围;而且当温度高于该范围时,用户必须能够关闭反应堆。”对于问题而言,这样的回答可谓十分具体。

观察

在您标识出用户试图解决的问题之后,下一个要问的问题是:

要理解问题领域,用户需要哪些数据?

这个问题的答案将决定需要从问题领域中收集哪些信息。这可能要求从数据库收集数据,或是通过查询 Web 服务或从用户先前的行动中获得数据。用户需要掌握相应的信息才能全面理解问题。您必须确保对所有这些信息有良好的理解,这是非常重要的。要收集的信息包括来自环境的外部数据和从 UI 的其他部分反馈回来的内部信息。

确认

现在您已经收集了信息,下一个要问的问题是:

我可以如何呈现数据,以使用户能够对问题有全面的理解?

您需要确定数据的组织和呈现方法。您将对数据进行格式设置和组合,然后在模型中呈现数据,这将使用户对问题领域产生清晰的心理图景。在确定如何呈现数据时,您需要将用户已有的知识和经验考虑在内。这又引出了另一组问题?

哪些用户会使用 UI? 对于问题,用户拥有哪些经验和知识?用户如何将信息转化为知识?

您应当了解用户对系统的熟悉程度以及他们拥有哪些类型的经验,等等。

这一情景应当随着基础数据的变化而时时更新,这样,用户不但能够理解问题领域的现状,也能知道各项变化是如何影响该领域的。

此处的关键在于理解用户查看领域和与领域交互的方式,目的是使您可以采用用户熟悉的格式将领域呈现给用户。

决策

呈现给用户的模型可能非常简单,也可能非常复杂。如果是简单模型,例如,一张列有需要支付的票据的表格,做出的决策很简单:“支付那些快到期的票据。”如果是复杂模型,例如一张显示着将进入临界状态的核反应堆的图表,则做出如何防止熔炉的决策会很复杂。UI 必须对这些决策提供指导。

此处的问题是:

行动与模型的每一部分是如何关联的?

这一问题的答案将帮助您确定如何添加行动(操作按钮、上下文菜单、复选框等等),以使用户明白与模型的各个部分关联的都是哪些行动。用户可以通过这些行动做出将对模型造成影响的决策。

行动

在用户行动之后,向其提供行动结果的反馈是十分重要的。如果用户支付了某张票据,您可能需要让 UI 显示一条消息,声明该票据已经支付,然后更新表格,将该票据的状态标记为“已支付”。这里要回答一个问题:

在采取某项行动之后,应当如何更新模型,以显示行动的结果?

这个问题的答案对于用户界面的成功是至关重要的。用户越快了解到所采取的行动的结果,他们就能越早知道自己究竟是已经解决了问题,还是需要进一步行动。

在您回答了 OODA 循环中每个部分的问题后,还有最后一个问题有待解答:

有哪些信息要在 UI 的不同部分之间传递,以便帮助用户改善对于模型所处状态的了解?

UI 应向用户呈现一个与其在解决问题时的观点一致的模型。随着外部信息的变化,用户也在采取行动,在这一过程中,各项变化需要尽快反映在模型中。快速将变化提供给模型将有助于改善用户对于情况的认知,使用户能够做出更明智的决策。

如果您能够详细地回答所有这些问题,就可以利用答案来创建用例、文档以及在 UI 的设计和实现中需要使用的各种其他构件。

当然,UI 设计过程还不止这些。回答这些问题只是让您开始进行设计,您还需要继续对设计进行细化。细化过程中将采用各项可用性实践,如定义一致的外观、创建屏幕原型,以及收集用户反馈等等。如果您花一点时间来考虑问题的答案,并采纳某些简单的可用性实践,您就能在创建优秀 UI 的道路上稳步前进。

UI 设计检查表

负责 UI 设计的开发人员应当尝试了解 OODA 循环,并将它用在 UI 的初始设计中。重点在于理解需要通过 UI 解决的问题,并提供能够帮助用户快速做出决策的 UI。如果您使用检查表中的问题来指导您的设计工作,您必须能够设计出用户乐于使用的 UI。

检查表问题

  1. 本 UI 要解决什么问题?
  2. 要理解问题领域,用户需要哪些数据?
  3. 我可以如何呈现数据,以使用户能够对问题有全面的理解?
  4. 哪些用户会使用 UI? 对于问题,用户拥有哪些经验和知识?用户如何将信息转化为知识?
  5. 行动与模型的每一部分是如何关联的?
  6. 在采取某项行动之后,应当如何更新模型,以显示行动的结果?
  7. 有哪些信息要在 UI 的不同部分之间传递,以便帮助用户改善对于模型所处状态的了解?

参考资料

学习 获得产品和技术
  • 获取免费的 架构师工具包系列,了解最新的 IBM 企业架构师开发工具技术文档和资源。
  • 获取更多 IBM 试用版软件,用这些试用版软件开发您的下一个项目。这些试用版软件可以免费直接从 developerWorks 下载。

火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织