知识卡片

ALRRA:可靠性风险等于复杂度乘严重性

普通读书笔记卡

内容

可靠性风险由两个因素构成:发生故障的可能性、以及故障引起后果的严重性——ALRRA(架构级可靠性风险分析)方法正是围绕这两个因素分别建模、再相乘合成的思路展开。发生故障的可能性用”复杂度”衡量:动态复杂度准则在某个场景执行中分析组件的动态行为(用圈复杂度cpx=e-n+2,e为边数、n为节点数,度量组件状态图规约中被执行子集的复杂程度),动态耦合度准则在场景执行中分析连接件的消息传递协议(用某组件发给另一组件的消息数占消息交互总数的百分比来衡量耦合强度)——这条设计选择本身体现了一个经验判断:系统越复杂,越可能发生故障,因此可以用复杂度指标近似替代传统可靠性分析常用的”故障间隔时间”来衡量故障发生可能性。故障后果的严重性用失效模式和影响分析(FMEA)度量:先识别架构元素(组件用状态图描述、连接件用消息交互协议描述)的失效模式,再通过在仿真模型中注入错误、比较仿真输出与期望输出,识别失效带来的影响;MIL_STD_1629A标准把后果严重性分成灾难的、危险的、临界的、轻微的四个层次,分别赋值0.95、0.75、0.50、0.25,取仿真最坏结果作为该组件/连接件的严重性值。把两者结合,组件的可靠性风险因素定义为hrf=cpx×surty(复杂度乘严重性),连接件同理——这个简单的乘法公式背后的直觉是:一个元素只有”既复杂容易出错、又一旦出错后果严重”才真正值得优先关注,单纯复杂但后果轻微、或简单但后果灾难性的元素,风险都要打折扣。最后基于组件依赖图(CDG)给每个节点和连接赋上风险值,用图遍历算法做整体风险评估——路径上元素风险因素的乘积计算深度方向的传播、风险因素之和计算宽度方向的合成,从而把局部的组件级风险因素,聚合成整个架构层面的可靠性风险画像。

参考来源

- 位置:《软件架构理论与实践》第13章《软件架构度量和评估》"13.2.5 ALRRA方法"节(源文件:_epub-src/OEBPS/text00105.html) - 结论依据:原文说明"可靠性风险主要包含两个因素:发生故障的可能性以及故障引起的后果的严重性……基于架构元素的复杂度和后果严重性风险,组件的可靠性风险因素为hrf_i=cpx_i×surty_i",并说明MIL_STD_1629A对四个严重性层次的赋值方式,直接支撑本卡片结论。 - 原始内容:一些实验分析发现系统越复杂,越可能发生故障,因此这里用复杂度作为指标来度量故障发生的可能性……MIL_STD_1629A将后果严重性划分为灾难的、危险的、临界的、轻微的四个层次,对这四个层次分别赋值0.95、0.75、0.50、0.25。