差分分析器的故事
汉明的系统工程第一条规则: 如果你优化组件,你可能会破坏系统性能。
他用自己的工作中的一个故事来说明这一点。他操作了一个差分分析器——一个模拟计算机,通过机械积分来解决微分方程。需求增加了,所以订购了一个新的单元,与第一个单元相连接,它们可以单独运行或一起运行。
建筑师们为他们的工艺而自豪,提高了新的单元中的放大器。汉明坚持:任何改进都不能干扰整个系统的运行。在接受日,他运行了经典测试:解y'' + y = 0,绘制y vs y',期望是一个完美的圆。它立即失败了。
原因:改进的放大器通过地线吸收了更多的电流。与原始放大器相比,不够的地面,现在允许了耦合电流之间的子系统。一个组件的改进(放大器)损坏了接口(地面),整个系统受损。
解决方案是微不足道的——更重的铜地面——但原则是明确的:一个组件的改进会改变它的接口行为。整个系统都设计在旧接口之上。优化组件,打破接口,损害系统。
识别组件优化
汉明说这条规则'看起来如果你孤立地提高一个组件,整个系统会更好'——然而它是错误的。失败是通过接口传导的:组件的改进改变了接口看到的信号。
接口胜过组件
哈明的实际结论:系统工程师必须首先设计和验证接口,然后再设计组件。一个完美的组件但接口破损毫无用处。一个普通组件但接口良好后期可以改进。
规则2:系统的约束条件(限制)往往比那些约束内的最优值更重要。一个设计用于在预期操作点上最大化性能的系统往往脆弱:小幅超出预期范围导致故障。一个设计用于在广泛范围内安全运行,并且有明确约束的系统则更加稳健。
例子:一个设计用于在100Mbps流量下25°C温度下运行的通信系统在流量升至110Mbps或温度升至40°C时会失败。一个设计有约束‘在任何温度不超过60°C时不得超过90%利用率’的系统更有用,即使其峰值性能稍低。
系统工程师的工作:不是单独优化A或B,而是优化A+B+C...作为一个整体,遵循约束。
教育系统:失败的系统工程
汉明将自己的原则应用到了教育领域。几十年来,大学对单个数学课程进行了优化:微积分被精简到最基本的部分,线性代数被清理和紧凑化。从单个课程来看,各个课程都看起来更好。
但从系统的角度来看,出现了很大的缺口:
- 数学归纳法:高中以后很少提到。
- 复数:初等代数中简短介绍,然后在线性代数中避免直到出现复杂的特征值。学生面对两个新且困难的概念同时,没有任何准备。
- 不确定系数:简短提到。
- 不可能性证明:几乎完全缺席。
- 离散数学:大部分被忽略。
每个组件(每个课程)的优化导致了接口缺口:课程之间缺乏概念上的桥梁。即使每个课程的输出指标都有所提高,系统的输出——受过教育的工程师和科学家们——依然受到影响。
抵制修复破损部分的自然冲动
汉明的观察:说出正确的系统工程词汇很容易。很少有人在关键时刻能真正做到。
当系统失败时,自然的反应是:找出最明显的故障组件并修复它。这就是组件思维。然而,系统失败的原因往往涉及组件、接口和约束的相互作用——但通常最显著的故障都发生在单个组件上。
系统工程师的自律:在修复显著故障之前,先问:系统为什么在这个组件上产生了这个故障?这个组件是否真的性能不佳,还是它被整个系统要求超出设计范围呢?只修复组件症状而不解决系统故障,效果仍然不理想。
大型组织中通信瓶颈遵循这个模式:一个部门的沟通不畅(显著故障)。组件修复:聘请更好的沟通者。系统修复:重新设计信息流架构,以便通过相同的协调实现更少的通信。
系统诊断
区别:组件修复对症治疗。系统修复治疗根本原因。原因通常涉及系统结构——哪些组件存在,哪些接口将它们连接起来,以及它们操作的约束。