Z2.01.3Fail-silent degradation设计研究

失效需被表达而非静默降级

别名: 静默降级 · sensor health · 传感器健康监测

概念解释

传感器失效后,系统最常见的表现是继续正常运行:上报停止或恒为空,上层把它当作「没有检测到事件」照常工作——这叫静默降级(fail-silent degradation)。正确的行为是相反的:失效本身必须成为一条被显式表达的状态(「传感器离线」),与「无事件」区分开。

这个区分为什么重要:「没人」与「不知道有没有人」是两个相反的输入。自动化把「不知道」当「没有」用,就会在人还在时关灯、断暖气、在入侵者面前解除布防。

机制

静默的根源在数据层:缺失与零值不可区分。传感器死亡后,数据流里出现的要么是空值要么是恒定值,与「正常感知到一个安静房间」的输出编码相同——不设计专门的区分,上层永远无法知道。这需要一个主动机制:传感器周期性发心跳(heartbeat),超时未收到即判离线;或周期性自检(内置测试目标、参考信号),检出「输出恒定但环境应有变化」的异常。

静默降级还有一层行为机制:失效表达对产品是负资产——用户看到「传感器离线」的红色状态会质疑可靠性,因此不少产品默认隐藏离线状态。但代价是转嫁的:故障在物理世界显形(灯该开没开)时,用户面对的是无任何线索的黑箱,归因从「设备坏了」变成对整个系统的不信任。

怎么研究

  • 故障注入(fault injection):人为制造传感器离线、恒值、漂移三类失效,观察系统上层行为与用户侧呈现——记录哪些功能把失效当「无事件」处理。这是协议化程度最高的方法,可批量覆盖。
  • 智能家居故障排查的实地研究:对真实家庭的访谈与日志分析一致发现,用户难以区分设备故障、网络断连与规则错误,排查依赖反复试错;缺乏失效状态的表达是归因困难的首要原因。
  • 降级行为设计对照:同一系统在「静默降级」与「声明式降级(明确提示+保守默认)」两版间的用户信任与恢复时间比较。

方法论注意点:故障注入要包括部分失效(灵敏度衰减、间歇掉线)——完全离线容易被心跳抓到,部分失效在数据上与健康传感器几乎无异,是更真实的威胁。

边界

  • 自检不是全能。 输出「看似合理但错误」的失效(灵敏度漂移、误触发)检不出来——自检覆盖结构性失效(无信号、恒值),覆盖不了语义性失效。
  • 心跳依赖网络与电源。 断电断网时传感器连「我失效了」都发不出去——失效表达链条本身也会失效,物理层的最后手段(本地声光提示)不可全免。
  • 表达要有降级行为配套。 只报离线而不改变自动化行为,等于把「不知道」继续当「没有」用——表达与保守默认必须成对出现。

怎么落地

  • 每个传感器维护健康心跳与最后在线时间;离线超过阈值即在界面上标记,并附「已离线 X 小时」。
  • 传感器离线时,依赖它的自动化进入声明的保守默认:照明保持现状而非全关、安防保持布防而非解除——宁可保守也不拿缺失数据做决定。
  • 关键传感器离线触发主动通知,而不是等用户发现行为异常。
  • 验证办法:逐个拔掉传感器,观察系统反应。合格标准是:界面出现离线标记、受影响的自动化进入保守默认、用户收到通知——三条都发生才算表达了失效;任何一条静默,就是一次静默降级。

延伸

  • 同组Z2.01.1 每种传感器有明确的失效条件 · Z2.01.2 融合可提高置信但放大隐私暴露
  • 相邻Z2.09 情境的时效与失效 · Z4.09 故障、失联与降级
  • 站内检索fail-silent · fault injection · sensor health monitoring · graceful degradation

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/Z2.01.3