フォールト・アボイダンスからフェイルセーフ、フォールト・トレランスへ
セーフウェアについて良い記事があったのでメモ。
【元ネタ】
ソフトウェアの安全性を考える - Basic
セーフウェアが必要な理由~ソフトウェアが凶器になる時: プログラマの思索
Webシステムのリリース作業とフォールトトレランス: プログラマの思索
下記の解説が素晴らしい。
(前略)
記事では、製品に占めるソフトの割合が増えるにつれて、日本のモノ作りの「アキレス腱」になってきている現状を指摘した上で、個別最適化から全体最適化への発想の転換を促している。
すなわち、個々の構成要素の信頼性を高めることで安全性を確保する(フォールト・アボイダンス)の考え方から、構成要素が故障しても必ず安全側に落ち着く設計(フェイルセーフ)や、冗長化や多重化等の別手段によって機能を維持する設計(フォールト・トレランス)への変換が必要になってくるのだ。
人海戦術でバグを潰して満足するような日本型開発の限界が見えてきている以上、開発の方向性も変えていく必要がある。
実際、欧米では既にそのような考え方が広まっているようだ。
(後略)
日本の製造業が20年前に比べて輝きを失いつつあるのは、組込ソフトウェアの重要度が増すにつれて、日本が得意としてきた技術のすり合わせの良さが打ち消されつつあるのだろう。
いくらハードの信頼性が高くても、ソフトも一体化されたハードの信頼性が高くなければ、全体の信頼性は落ちる。
しかも、昨今の流れは、各部品の信頼性を高めるよりも、全体最適化の方に重点が置かれているから、日本が得意とする各部品の高信頼性に依存した手法は、効果が出にくくなっているのだろう。
また、ソフトウェアはハードにはない特徴がある。
製造業の発想である「後戻りの無いように計画的に作業の品質を高める」やり方が有効に作用していない。
むしろアジャイル開発のように、試行錯誤しながらVerUpしていく過程で、品質も使い勝手も改善していく手法の方がうまくいく。
例えば、Microsoftの製品はVer3.0になってから品質も使い勝手も良くなると以前から言われていたし、AppleのiPod/iPhone/iPadも小刻みにモデルチェンジしながら品質も使い勝手も改善してきている。
つまり、失敗や障害を発生させないように前工程の信頼性を高めるフォールト・アボイダンスの発想だけではうまくいかない。
ソフトウェアのバグをすべて潰すことはできないという現実に対して、誤動作や故障が発生しても安全に動作させるフェイルセーフや、故障を見越して冗長化させておくフォールト・トレランスの設計手法が重要になってきているのだろう。
当然、ユーザが誤った操作をしても安全に動作することを保証するフールプルーフな設計も大事になってきている。
この発想は組込みソフトウェアだけでなく、Webシステムでもアクセシビリティやユーザビリティなどにもつながっているように思える。
| 固定リンク
「ソフトウェア工学」カテゴリの記事
- アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)(2024.09.22)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか(2024.01.02)
コメント