- STPA(System Theoretic Process Analysis、システム理論的プロセス分析) は、システムおよび制御理論に基づいて、複雑なシステムの制御-フィードバックループをモデル化する手法
- GoogleはSTPAを使ってソフトウェアシステムを分析し、潜在的なリスクを発見
- STPAはシステム安全性を制御の問題として扱い、システムが危険な状態に陥りうるすべての制御動作を分析する
- 個々の動作の結果よりも危険な状態に注目し、根本原因を見つける方式
- 危険な状態につながる制御動作を理解すれば、それを予防したり自動復旧したりできる
- 自動復旧が難しい場合は、人間のオペレーターに警告できる
GoogleがSTPA教育をカスタマイズする理由
- STPAを通じて未確認の問題を事前に発見し、障害を予防した成功事例が増えている
- 既存のSTPA教材は物理システム中心で構成されており、ソフトウェア環境に適用しにくい
- Googleの純粋なソフトウェアシステムに合わせたカスタム教育が必要になった
初期のSTPA教育の試み
- 2021年から初期教育を開始(Googleエンジニア40人が対象)
- 物理システムの事例(例: Mars Polar Landerの墜落)を使用 → ソフトウェアエンジニアの共感を得にくかった
- Googleのシステムに適用した実際の事例が必要だと認識
制御構造の概念教育
- 制御構造(control structure) は基本的な制御-フィードバックループで構成される
- コントローラーが状態変化を制御し、フィードバックで状態を確認した後、次の動作を決定
- ソフトウェア環境での適用例
- 例: ユーザー生成コンテンツのデータベースで不適切なコンテンツを削除または修正
- フィードバックループが適切に設計されていないと、誤った制御動作が発生する可能性がある
- 教育上の課題
- 限られた時間内に有用な制御構造の設計を教えるのは難しい
- ソフトウェアシステムごとに制御構造が異なるため、フィードバックを提供しにくい
STPA教育の改善戦略
- STPAのすべての段階を教え、エンジニアが独立してSTPAを実施できるよう支援
- Googleの実際の事例を活用し、理論説明の後に実例へ適用
- 制御構造のフィードバック経路強化に焦点
- 誤ったフィードバック → 誤った制御動作の発生 → 障害発生事例を分析
- 人間のオペレーターへのフィードバック不足 → 危険な状態が発生
フィードバックの重要性
- あるGoogleシステムでは、誤ったフィードバックにより30日後に誤った制御動作が発生し、障害につながった
- 誤ったフィードバックと、人間のオペレーターへのフィードバック不足が原因
- フィードバック設計が適切に行われていれば障害を予防できる
- Ariane 5ロケット爆発もフィードバックエラーの事例
- 浮動小数点データを整数に変換する際にエラーが発生
- フィードバックエラー → 誤った状態認識 → ロケットの方向誤りと爆発
データフローダイアグラム vs. 制御構造
- データフローダイアグラム(Dataflow Diagram)
- データがソフトウェアコンポーネント間をどのように移動するかを示す
- フィードバックと制御構造は明確ではない
- 制御構造(Control Structure)
- 制御動作とフィードバックを示し、制御の階層構造が明確
- フィードバックの問題を把握しやすく、複雑なシステム相互作用で問題の原因を追跡できる
STPA適用の効果
- 複雑なソフトウェアにおいて、数百万行のコードの中から問題発生の可能性が高い部分を数百行まで絞り込める
- 危険な制御動作をシナリオ化し、問題のあるコードを特定できる
- 実際の事例で、制御構造を構築した後にフィードバック不足を特定して修正
教育戦略の変化
- 長時間の教育から短い教育セッションへ転換
- 30分~60分のチュートリアル → 関心のあるエンジニアをワークショップ参加へ誘導
- 自己主導型学習モデルを導入
- 短い動画 + 課題 → 実際のシステムにSTPAを適用するよう促進
- 専門家の介入なしでも初期のSTPAを実施できるよう教育を強化
GoogleにおけるSTPA普及戦略
- STPAの専門家を育成し、チーム内でSTPAを展開できるようにする
- 初期の成功 → 他チームへ拡大 → 組織全体にSTPAを適用
- STPA訓練後は設計段階でリスク要因を事前に取り除ける
他社でも適用可能
- STPAは複雑なソフトウェアシステムで「未確認のリスク要因」を見つける強力なツール
- 小規模チームから始め、STPAの専門家主導で拡大できる
- 企業に合ったカスタムSTPA教育の開発が鍵
- 初期の試行錯誤の後に方向修正が可能で、最終的にシステムの安定性と信頼性を高められる
1件のコメント
Hacker Newsのコメント
Googleでは、ソフトウェアコントローラが誤ったフィードバックを受け取り、危険な制御動作を実行した事例があった
STPAの授業はよく構成されており、Googleの例も役に立った
STPAは、あまり明確でない障害モードを見つけるためのデザインレビューのフレームワークである
理解するのは難しいが知りたい、という意見がある
STPAがGoogleで信頼性問題を解決した実例があれば、もっと説得力があったはずだ
STAMP/STPAは、複雑なシステムに対するモデルと方法論としてうまく機能する
システムの専門家と協力して制御構造を構築したところ、コントローラCからBへのフィードバックが不足していることにすぐ気づいた
企業の大げさなストーリーやバズワードで、古いアイデアを革新的に見せようとする試みだ
Googleには1年ほど静かにしていて、掃除機のような音だけ立てていてほしいという意見がある