微分解析機の物語
ハミングのシステムズエンジニアリング第1のルール:コンポーネントを最適化すれば、おそらくシステムパフォーマンスを台無しにするだろう。
彼は自分の仕事から得た物語でこれを説明している。彼は微分解析機(微分方程式を機械的積分で解くアナログコンピュータ)を操作していた。需要が増えたので、2番目のユニットが注文され、最初のユニットに接続されて、両方が別々にまたは一緒に動作できるようになる予定だった。
ビルダーは自分の職人技に誇りを持ち、新しいユニットのアンプを改善した。ハミングは主張した:改善は全体的なシステム操作に干渉してはならない。受け入れの日に、彼は古典的なテストを実施した:y'' + y = 0を解き、yをy'に対してプロットし、完全な円を期待する。すぐに失敗した。
原因:改善されたアンプはより多くの電流をグラウンド回路に引き込んだ。元のアンプでは機能していた不十分なグラウンディングが、リーク電流がサブシステム間で結合することを許可した。1つのコンポーネント(アンプ)の改善はインターフェース(グラウンディング)を劣化させ、システムは失敗した。
修正は些細なものだった(より重い銅のグラウンディング)が、原理は明確だった:コンポーネントの改善はそのインターフェース動作を変更する。システムの残りの部分は古いインターフェースの周りに設計されていた。コンポーネントを改善し、インターフェースを壊し、システムを劣化させる。
コンポーネント最適化の認識
ハミングは、このルールが「孤立したコンポーネントをより良くすれば全体システムはより良くなるだろう」と思えるほど合理的に見えるが、実は間違っていると言っている。失敗はインターフェース媒介である:コンポーネント改善はインターフェースが検出する信号を変更する。
コンポーネントより優先するインターフェース
ハミングの実用的な結論:システムズエンジニアはインターフェースを最初に、コンポーネントを次に設計して検証しなければならない。壊れたインターフェースを持つ完璧なコンポーネントは役に立たない。よく指定されたインターフェースを持つ平凡なコンポーネントは後で改善できる。
ルール2:システムの境界条件(制約)は、それらの制約内の最適値よりも重要であることが多い。予想される動作点でパフォーマンスを最大化するために設計されたシステムはしばしば脆い。予想される範囲外の小さな逸脱は障害を引き起こす。広い範囲で安全に動作するために設計され、明確に定義された制約を持つシステムは堅牢である。
例:100 Mbpsのトラフィックと25°Cで正確に設計された通信システムは、トラフィックが110 Mbpsに急増するか温度が40°Cに上昇すると失敗する。『60°C以下のいかなる温度でも利用率の90%を超えない』という制約で設計されたシステムは、ピークパフォーマンスがわずかに低いとしても、より有用である。
システムズエンジニアの仕事:AやBを個別に最適化することではなく、制約の下で、全体としてA+B+C...を最適化することである。
教育システム:失敗したシステムズエンジニアリング
ハミングは教育に彼自身の原理を適用する。数十年間、大学は個々の数学コースを最適化してきた:微積分は本質まで削ぎ落とされ、線形代数はクリーンアップされ引き締められた。個別に評価された各コースはより良く見えた。
しかしシステムとして見ると、大きなギャップが現れた:
- 数学的帰納法:高校後ではほぼ言及されない。
- 複素数:代数で簡潔に導入され、線形代数で複素固有値が現れるまで避けられる。学生は2つの新しく難しいアイデアに同時に直面し、事前準備がない。
- 未定係数法:簡潔に言及される。
- 不可能性証明:ほぼ完全に欠落している。
- 離散数学:主に無視される。
個々のコンポーネント(各コース)の最適化はインターフェースギャップを作成した:コース間の概念的橋の欠落。システムの出力—教育を受けたエンジニアと科学者—は苦しんだ。各コースの出力メトリクスが改善されたにもかかわらず。
壊れた部分を修正する自然な衝動への抵抗
ハミングの観察:システムズエンジニアリングについて正しい言葉を言うことは簡単である。その瞬間が来たとき実際にそれを行える人は非常に少ない。
システムが失敗するときの自然な反応:最も明らかに壊れたコンポーネントを同定し、それを修正する。これはコンポーネント思考である。システムは、コンポーネント、インターフェース、制約の相互作用を伴う理由で失敗したが、最も明らかな失敗は通常単一のコンポーネントにある。
システムズエンジニアの規律:見える失敗を修正する前に問いかけなさい:なぜシステムはこのコンポーネントでこの失敗を生み出したのか? コンポーネントが実際に低パフォーマンスをしているのか、それとも残りのシステムがそれを設計エンベロープの外で動作するよう要求しているのか。コンポーネント症状を修正することはシステム障害を手付かずのままにする。
大きな組織での通信ボトルネックはこのパターンに従う:部門が悪い通信をしている(見える失敗)。コンポーネント修正:より良い通信者を雇う。システムズ修正:情報フロー構造を再設計して、同じ調整を達成するために必要な通信が少なくなるようにする。
システムズ診断
区別:コンポーネント修正は症状を治療する。システムズ修正は原因を治療する。原因は通常、システムの構造を伴う。どのコンポーネントが存在するか、どのインターフェースがそれらを接続するか、どのような制約がそれらの動作を制限するか。