65.9K
CodeProject 正在变化。 阅读更多。
Home

仪表板用于驾驶

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.73/5 (28投票s)

2008年8月22日

CPOL

10分钟阅读

viewsIcon

137954

downloadIcon

9636

仪表盘不仅对于业务数据,而且对于业务应用程序都极其有用,但前提是它们显示的可用于实时“驾驶”(或“转向”)的指标。

目录

引言

仪表盘越来越受欢迎并得到支持,原因很充分,但很多人并不清楚仪表盘的特别之处——许多人认为它只是一种花哨的报告。

背景

在与客户讨论他们系统的仪表盘应该包含什么内容时,我说:“仪表盘是用于转向的。”每当有人建议在仪表盘上添加一个仪表,显示所有设施的年平均累计产量时,我都会重复这句话。一次又一次。又一次。在对关键绩效指标、实时状态驱动因素、基本业务因素等进行更多讨论后,他们终于通过一个简单的类比明白了。

想象一下,你正在为汽车构建一个仪表盘,而你只能在上面放一个仪表。你会选择显示公司车队所有汽车的年平均日燃料消耗量吗?还是你宁愿看到你汽车当前的燃油水平?

这并不是说所有设施的年平均累计产量指标没有用;它当然有用,而且很可能应该出现在某个报告中。但它不属于仪表盘,因为它(单独)无法帮助你理解“现在”发生了什么。而“现在”是仪表盘应用程序的主要关注点。

仪表板用于驾驶

更准确的说法是“仪表盘是用于驾驶的”,但类比应该很明显——仪表盘上显示的任何信息都应该反映一个指标的当前值,该指标可用于识别被监控对象的性能何时需要改变。汽车仪表盘显示当前燃油水平和当前速度(以及其他信息)是有原因的。如果你的燃油不足,你可以停车加满。如果你的当前速度对于当前情况来说太慢或太快,你可以加速或减速来改变它。汽车仪表盘帮助你驾驶汽车。企业仪表盘也有同样的目的。

仪表盘的目的和用途

总的来说,仪表盘的目的是让用户“一目了然”地清晰了解系统或系统一部分的当前状态,以便轻松注意到重大变化,用户可以及时做出反应。因此,识别将用作仪表盘显示基础的关键绩效指标(KPI)非常重要。

仪表盘不仅仅是报告

报告和仪表盘之间的区别在于其意图。从技术上讲,仪表盘是一种报告,但并非所有报告都是仪表盘。报告可以逻辑上显示用户感兴趣的任何内容。仪表盘应仅显示反映当前状态且有助于实时做出决策的信息。

仪表盘是用于实时(或接近实时)的

想象一下,你的汽车速度计有五分钟的延迟,并且每分钟只更新一次。它仍然有用吗?有点用,但远不如实时显示有用!同样,软件仪表盘的延迟时间必须足够短,以便在情况变得更糟之前就能注意到变化并进行调整。软件仪表盘也必须足够频繁地更新,以确保不会错过重大变化。每个企业都必须确定适合其运营的仪表盘延迟和更新频率。

仪表盘不仅仅用于业务数据

许多应用程序监控系统使用仪表盘来显示当前的应用程序和资源状态。例如

  • 在 Duncan Edward Jones 的文章《用于跟踪 .NET 应用程序性能的应用程序仪表盘》中,使用仪表来显示单个应用程序的性能指标。
  • 在 CALM 应用程序监控系统中,一组多状态指示器(也称为彩色灯)用于显示所有活动应用程序的状态。

尽可能简单(但不能更简单)

我最喜欢的一句名言是

一切都应尽可能简单,但不能更简单。——阿尔伯特·爱因斯坦

这尤其适用于仪表盘。用户需要能够“一目了然”地理解仪表盘信息的含义。花费时间思考仪表盘显示的含义就是浪费时间,这些时间最好用于应对当前情况——或者享受一切顺利时的愉悦感。

通常,仪表盘不应该滚动,而应该缩放。这个规则可能有一些例外,但我暂时想不到。如果你需要一目了然地理解系统状态,那么应该避免滚动。另一方面,即使是很小的仪表盘,在你的外围视野中也可能很有用。例如

A tiny dashboard is still useful

尽管文本太小无法阅读,但你可以清楚地看到两个应用程序处于红色状态,这意味着它们遇到了问题。缩放显示允许同一屏幕在大尺寸 LCD 显示器上使用,并且很容易从房间另一侧看到。如果你无法轻松缩放仪表盘显示,请尝试提供几种有用的尺寸,例如小、中和大。

因此,在大多数情况下,选择简单直接而非复杂抽象,也就是说,如果你只想知道你的应用程序是否正常运行,一个闪烁的灯泡比一堆波动的条形图和仪表更容易一目了然。比一堆波动的条形图和仪表更容易一目了然。

仪表盘控件的类型

仪表盘控件的复杂性和图形丰富性是无限的,但有一些非常基本的控件类型经常出现。

  • 布尔状态指示器。例如,一个灯泡,要么亮着,要么熄灭。
  • 多状态状态指示器。例如,一个灯泡可以显示几种有意义的颜色,例如绿色表示一切正常,黄色表示可能出现问题,红色表示存在问题。
  • 连续状态指示器。例如,一个条形图或仪表,显示一个介于零和最大值之间的值,或者一个显示高于或低于零的差异的值。
  • 上述内容的简化。例如,一个文本标签,显示“开”或“关”,这是一种布尔状态指示器。
  • 上述内容的组合。例如,一个带有颜色编码区域的仪表,指示可接受/可疑/关键的操作范围,这是多状态和连续状态指示器的组合。
  • 更复杂的控件,例如条形图、曲面图、3D 轴等。例如,可以看看飞机驾驶舱或飞行模拟器,或者浏览一些仪表盘控件供应商的网站。

注意尺度

我认为最有用的仪表盘控件是能够显示预期情况与当前实际情况之间差异的控件。差异有助于消除许多测量单位和缩放比例的考虑因素,这样在偏离轨道时更容易发现问题,而无需参考(或记住)其他指标。例如,如果预期的管道利用率为每秒 100 升,容量为每秒 1000 升,但实际利用率为每秒 150 升,那么如果只显示绝对值,可能很难看出问题——在 1000 的比例下,100 和 150 之间的视觉差异可能根本不明显。但如果显示了预期与实际的差异,指针就会指向一个非常明显的 +50% 的差异!

历史感

在仪表盘中使用历史显示是有争议的;有时它们可以提供重要的背景信息,有时它们只是混乱。一个非常有用的历史显示,特别是对于差异指标,是过去 N 个时间单位的简单折线图。线条上的任何明显峰值都表明该指标在某个时间点超出了安全范围。

信任,但要验证

关键指标应得到监控,而不仅仅是显示。实现仪表盘指标的周期性采样机制相对容易,该机制将值或窗口平均值与安全范围进行比较,并在值超出此范围时向某人发出警报。

仪表盘演示应用程序

仪表盘演示使用了 A.J.Bauer 的“快速高性能的仪表”中的仪表控件(已重构为独立的库)。仪表盘控件上显示的值是随机的,但反映了实际系统中可能使用的某些关键绩效指标(KPI)。单击仪表盘控件会在单独的窗体中显示一个详细信息网格,其中包含完全虚构的数据,仅用于说明目的。在实际应用程序中,KPI 将与业务相关,而钻取数据将支持或扩展摘要信息。仪表盘演示还显示了四个模拟应用程序的状态,为“在线”或“离线”。该模拟假定每个应用程序的正常运行时间为 95%。

Using the Code

仪表盘演示的代码没什么特别的,只是一个简单的模拟,使仪表移动。它运行起来很有趣——一两分钟。代码的目的是展示一个“正在运行”的仪表盘,希望能激发更多关于企业仪表盘的真正目的和实用性的思考和讨论。向客户展示它,看看是否能激发他们的兴趣。问问他们他们的三个首要 KPI 是什么。

关注点

代码中唯一值得关注的点可能是可重用的仪表库,它来自原始文章的重构。初学者可能会发现使用泛型集合来激活/重新激活弹出窗体很有趣。此外,代码使用“bump”或“perturb”或“impulse”机制来实现随机仪表值,也就是说,随机数生成器用于生成随机增量值以添加到当前仪表值;这可以防止仪表指针四处跳动。历史图表使用 GDI+ 在标签上绘制;在实际应用程序中,自定义控件当然更合适。

结论

仪表盘对于业务数据和业务应用程序都极其有用,但前提是它们显示的可用于实时“驾驶”(或“转向”)的指标。用户绝对理解这一点与“普通”报告的区别至关重要,否则他们可能会要求并得到一个看起来很漂亮、布满仪表和表盘的面板,虽然令人印象深刻,但实际上却毫无用处。选择简单的仪表盘显示;不要让用户去思考仪表盘信息的含义。如果预期可以量化,差异显示尤其有用。仪表盘显示不应有滚动条;如果有,请重新考虑演示。仪表盘显示应尽可能随窗口大小缩放。真正关键的指标应通过警报系统进行监控,当数值超出安全范围时。

历史

  • 08/22/2008
    • 首次发布文章
  • 08/25/2008
    • 对文本进行少量编辑,以强调仪表盘显示不应滚动,而应缩放
  • 09/05/2008
    • 添加了关于历史图表有用性以及带警报的指标监控的说明
  • 09/14/2008
    • 修改了代码,将最后 50 个点绘制为条形图。使用灰色条表示缺失/离线值占位符。
    • 对 AJ Bauer 的仪表库进行了轻微修改,添加了一个函数来返回给定值的范围显示颜色,并使用此函数绘制了条形图。
© . All rights reserved.