STAMP/STPAチュートリアル
(入門編)
仙台高等専門学校
岡本圭史
ET/IoT West2017
概要
• 入門者を対象としたSTAMP/STPAチュートリアル
• (時間のある限り)実際に手と頭を動かして分析を体験
• [I]の手順を基に [T]3章の方法を加えて系統的に解説
• [T]の事例(列車ドア自動開閉システム)を分析
• 参考資料
• [I] はじめてのSTAMP/STPA, IPA (2016)
• [M] An STPA Primer Version 1, MIT (Aug.2013, updated
Jun.2015)
• [T] Extending and Automating a System-Theoretic Hazard
Analysis for Requirements Generation and Analysis, John
Thomas, PhD. Thesis MIT (2013)
本発表におけるSTPAの手順[I]
Step0 準備1: アクシデント,
ハザード, 安全制約の識別
Step0 準備2: コントロール
ストラクチャーの構築
Step1: UCA
(Unsafe Control Action)
の抽出
Step2: CF
(Causal factor)の特定
STPAの手順[I]
ET/IoT West2017
Step0準備1の概説
4出典:[I] pp.15,表 4.2-1 手順:Step0 準備1アクシデント、ハザード、安全制約の識別
作業名称
アクシデント、ハザード、安全制約の識別
目的
アクシデントを定義する
安全制約を導き出す
入力
① 要求仕様書
② [ドメイン専門家]
処理
① 分析しようとするアクシデントが何であるかを定義する
② アクシデントと成り得るハザードには何があるかを考える
③ ハザードの裏返しとなる程度の粒度で安全制約を導き出す
出力
① アクシデント、ハザード、安全制約の一覧表
備考
・アクシデント:喪失(Loss)を伴うシステムの事故
・ハザード:アクシデントにつながるシステムの状態
・安全制約:システムが安全に保たれるために必要なルール
例えば、踏切制御システムにおいて。
踏切がいつまでも開かないのは、サービス利用者・提供者に経済的
損失を与えたり、精神的苦痛を与えることになることもあるが、人の
生命に関わる事柄に焦点を絞ったときには『アクシデントではない』
と定義できる。
定義:アクシデント・ハザード
• アクシデント([M]pp.23)
• 望まれない・計画されていないイベントで,ロスへ至るもの
• ロス:人命が失われる,人が負傷する,環境汚染,ミッション失敗
等
• ハザード([M]pp.25)
• システムの
状態または条件の集まり
• 最悪の環境条件の下で
,アクシデントへ至る
• 例([M]pp24, Table 1: Examples of accidents and hazards)
• アクシデント:乗客が列車から落ちる
• ハザード1:列車が動いているのにドアが開く
• ハザード2:誰かが扉口にいるのにドアが閉じる
ET/IoT West2017
演習0-1:アクシデントは?
6ロスは?
人命が失われる,人が負傷する…
• アクシデント:望まれない・計画されていないイベントで,ロスへ至るもの
• ハザード:システムの状態または条件の集まり,最悪の環境条件の下で,アクシデントへ至る
電車ドア開閉システム
[T] 2.2.2.3 STPA Hazard Analysis
• アクシデントは?
• A-1:
???
• A-2:
???
• A-3:緊急時に列車内に閉じ込められ
る(H-1,H-3)
演習0-1:アクシデントの例
ロスとして,金銭や社会的信用を含
めることで,「平常時に駅停車中に
列車内に閉じ込められる」もアクシ
デントとなる.
• アクシデント:望まれない・計画されていないイベントで,ロスへ至るもの
• ハザード:システムの状態または条件の集まり,最悪の環境条件の下で,アクシデントへ至る
電車ドア開閉システム
[T] 2.2.2.3 STPA Hazard Analysis
• アクシデントは?
• A-1:列車から降りるときに負傷(H-2)
• A-2:閉まるドアに当たる(H1)
• A-3:緊急時に列車内に閉じ込められ
る(H-1,H-3)
ET/IoT West2017
演習0-1:ハザードは?
8• アクシデント:望まれない・計画されていないイベントで,ロスへ至るもの
• ハザード:システムの状態または条件の集まり,最悪の環境条件の下で,アクシデントへ至る
電車ドア開閉システム
• アクシデントは?
• A-1:列車から降りるときに負傷(H-2)
• A-2:閉まるドアに当たる(H1)
• A-3:緊急時に列車内に閉じ込められ
る(H-1,H-3)
• ハザードは?
• H-1:
???
• H-2:
???
• H-3:緊急時なのに,旅客あるいは乗
務員が列車外へ出られない(A-3)
演習0-1:ハザードの例
• アクシデントは?
• A-1:列車から降りるときに負傷(H-2)
• A-2:閉まるドアに当たる(H1)
• A-3:緊急時に列車内に閉じ込められる
(H-1,H-3)
• ハザードは?
• H-1:ドア付近に人がいるのに,ドアが閉
まる(A-2,A-3)
• H-2:列車が走行中あるいは駅にいない
のに,ドアが開く(A-1)
• H-3:緊急時なのに,旅客あるいは乗務
員が列車外へ出られない(A-3)
• アクシデント:望まれない・計画されていないイベントで,ロスへ至るもの
• ハザード:システムの状態または条件の集まり,最悪の環境条件の下で,アクシデントへ至る
電車ドア開閉システム
今回は「平常時に駅停車中に列車内に
閉じ込められる」はアクシデントではない
ので,「平常時に駅停車中にドアが開か
ない」はハザードではない.
ET/IoT West2017
Step0準備2の概説
10
出典:[I]pp.17,表 4.3 1 手順:Step0 準備2 コントロールストラクチャーの構築
参考:[M]pp.28 Functional Control Structure
作業名称
コントロールストラクチャーの構築
目的
登場人物間の依存関係を制御構造図で表す。
制御主体と制御対象の間で行われる制御(サブシステム間の相互
作用)には何があるかを明確化する。
その後の分析作業において理解し易いイメージを共有する。
入力
① 要求仕様書
処理
① 要求仕様書から登場人物(ブロック)を抽出する
② 要求仕様書から各ブロックの役割を抽出する。
③ 役割を果たすために必要な制御、役割を果たした結果のフィー
ドバックを抽出する。
④ 制御、入出力情報(情報を与えるのみで制御を行うわけではな
い)の違いを分別する
⑤ ブロック間を矢印線で結び、制御・入出力を・・(?)センサー出力
のようなフィードバックを制御と考える??
出力
① 制御構造(コントロールストラクチャー)図
備考
ブロックの数は4つ程度が良いと言われている。
それ以上多くなる(抽象度を下げる)と、以降の分析すべき組み合わ
せが多くなり、集中しにくくなる、検討漏れを起こしかねないので、工
夫が必要になる。
CS図作成の例([I])
機能仕様
登場人物
ET/IoT West2017
演習0-2:コントロールストラクチャ
12運転士
扉コントローラ
扉アクチュエータ
扉センサ
扉
命令
ドア開,ドア開停止
ドア閉,ドア閉停止
指示
ドア開,ドア開停止
ドア閉,ドア閉停止
機械的力
機械的位置
フィードバック
扉の位置
他の入力
列車の動き(走行中,停止中)
列車の位置(駅,駅間)
緊急指標(火災検知,ガス検知)
ステータス
扉は開いている
扉は閉じている etc.
Step1の概説
出典:[I]pp.19,表 4.4 1 手順:Step1 UCAの抽出
作業名称
UCA(Unsafe Control Action:非安全制御動作)の抽出
目的
ハザードにつながり得る制御動作の不具合を識別する(発想する)
入力
① UCAを導き出すための4つのガイドワード(4分類)
② アクシデント、ハザード、安全制約の一覧表
③ 制御構造図
処理
① UCA識別の表を準備する
② 最上列に4つのガイドワードを記す
③ 最左行に制御構造図中にある制御をすべて記す
④ 各マスごとに、当該(最左行の)制御動作が当該(最上列)状況
になった場合、いずれかの安全制約違反に成り得るかを考える。
⑤ 安全制約違反に成り得るならば、UCAであると判断する
出力
① 縦軸:制御行動、横軸:ガイドワードとしたUCA一覧表。
想定外を排除することを忘れないように。
参考:[M]pp.42, Identifying Unsafe Control Actions
ET/IoT West2017
UCAの抽出
14コントロールア
クション
与えられないと
ハザード
与えられると
ハザード
早すぎ、遅すぎ、
誤順序でハザード
早すぎる停止、
長すぎる適用でハザード
ドア開
緊急時
にもかかわら
ず,扉コントローラが
ドア開命令を与えな
い[H-3]
ドア閉
H-3:緊急時なのに,旅客あるいは乗務
員が列車外へ出られない.
コントロールアクションが
ハザードへ至る
条件
を記載 (至
るハザードも記載)
緊急時
にもかかわらず,扉コントローラがドア開命令を与えない
コンテキスト:ハザードへ至る条件
(これを識別するのが困難)
[T]pp.71 3.1 General Structure for Hazardous Control Actions
UCA識別のヒント([T]pp.74, 3.2 Process model hierarchy)
• H-3:緊急時なのに,旅客あるいは乗務員が列車外へ出られない.
• SC-3:緊急時には,旅客あるいは乗務員は列車外へ出られる
• 緊急指標:火災検知,ガス検知,地震検知,…
“緊急時”?([T]pp.74, 3.2 Process model hierarchy)
• 詳細化⇒「列車が駅で停止中に,火災検知された」
• 分解⇒列車の位置=駅,列車の動き=停止中,火災=検知
• 列車の動き=走行中等も考える必要があることが分かる
演習1:UCAの抽出
コントロール
アクション
与えられないと
ハザード
与えられると
ハザード
早すぎ、遅すぎ、
誤順序でハザード
早すぎる停止、
長すぎる適用でハ
ザード
ドア開
緊急時
にもかかわ
らず,扉コントロー
ラがドア開命令を
与えない[H-3]
ドア閉
H-1:ドア付近に人がいるのに,ドア
が閉まる.
H-2:列車が走行中あるいは駅にい
ないのに,ドアが開く.
H-3:緊急時なのに,旅客あるいは
乗務員が列車外へ出られない.
コントロールアクションが
ハザードへ至る
条件
を記載
今回の演習
ET/IoT West2017
例:UCAの抽出
制御動作 与えられないと
ハザード(N)
与えられると
ハザード(P)
早すぎ、遅すぎ、
誤順序でハザード(T)
早すぎる停止、
長すぎる適用でハ
ザード(D)
ドア開
(CA1)
UCA-CA1-N1: 列車がプラット フォームで停止したのに,ドア 開が命令されない.[ハザード へ至らない] 緊急避難のためのドア開が命 令されない.[H-3] 人または障害物が扉口にいて ドアが閉じつつあるのに,ドア 開が命令されない.[H-1] 列車が動いているのに, ドア開が命令される.[H-2] UCA-CA1-P2: 列車がプ ラットフォームで停車して いないのに,ドア開が命 令される[H-2] 列車が停止前あるいは動き出 した後(“列車が動いている”と 同じ)に,ドア開が命令される. [H-2] 列車が停止後,ドア開が遅すぎ で命令される.[ハザードへ至ら ない] 緊急時に,ドア開が遅すぎで命 令される.[H-3] 通常のドア開停止よりも, 早すぎるドア開停止が命 令される.[ハザードへ至 らない] 緊急停止時に,早すぎる ドア開停止が命令される. [H-3]ドア閉
(CA2)
列車が動く前に,ドア閉または 再度のドア閉が命令されない. [H-2] 人または障害物が扉口 にいるのに,ドア閉が命 令される[H-1] 緊急避難時に,ドア閉が 命令される.[H-3] 乗客が乗降りを終える前に,ド ア閉が早すぎで命令される.[H-1] 列車が動き出した後に,ドア閉 が遅すぎで命令される.[H-2] ドアが完全に閉まってい ないのに,早すぎるドア 閉停止が命令される[H-2] 16[T]pp.66, Table 3: Potentially hazardous control actions for a simple automated door controller
UCAにラベルを付けると便利.
例:UCA-CA01-N, UCA-CA02-P
UCA表の形式化と集約(発展)
列車動き
緊急指標
列車位置
ドア状態
ハザード
走行中
有
プラットフォーム
開
Yes
走行中
有
プラットフォーム
閉
Yes
走行中
有
プラットフォーム外
開
Yes
走行中
無
プラットフォーム外
開
Yes
走行中
無
プラットフォーム
閉
No
走行中
無
プラットフォーム外
開
Yes
…
…
….
…
…
• 条件をプロセス変数とその値の組に分解
• 列車の動き=走行中,緊急指標=有,列車位置=プラットフォーム,ドア状態=開
• ハザードへ至る主要因(プロセス変数とその値)を探したい
• 列車動き=走行中,ドア状態=開⇒他の変数の値に関係なくハザードへ至る
• どうやって主要因を見つけるか?
• 人手による発見⇒表の規模は一般大きいので大変,間違いやすい
• UCA表の集約は自動化可能(参考:はじめてのSTAMP/STPA実践編)
ET/IoT West2017
Step2の概説
18
出典:[I]pp.20 4.5. Step2 HCF(Hazard Causal Factor)の特定
参考:[M]pp.48, Identifying the Causes of the Unsafe Control,[T]pp.102, 3.4 Identifying causal factor scenarios
作業名称
HCF(Hazard Causal factor:誘発要因)の特定
目的
どのようなHCFがあったらUCAに成り得るのかを考え、ハザードシナ
リオを作る
入力
① HCF特定のための11個のガイドワード
② 制御構造図
③ UCA一覧表
処理
① 制御構造図からコントロールループを抜き出して、その中の各
制御に該当するガイドワードを割り当てる
② [制御構造図中の各制御に該当するガイドワードを割り当てる]
③ Step1で識別したUCA毎に、ガイドワードをひとつづつ当てはめ
てみて、ハザードと成り得るかを考える
④ ハザードと成り得るならば、どういう条件下で当該ガイドワードの
事象が発生して、その後、どういうシステム挙動になったらハ
ザードとなって、アクシデントにつながるかのシナリオを作る
出力
① 縦軸:UCA,横軸:ガイドワードとした、ハザード要因の一覧表
② ハザードシナリオ
すべてのUCAに夫々ガイドワードのすべてを当てはめて考える
今回は時間制約により,一覧表ではな
く個別シナリオを提示します.
コントロールループで
安全制約を破られる原因の例
ET/IoT West2017
CFの識別の準備
20扉コントローラ
扉アクチュエータ
扉センサ
扉
(4)コンポーネント故障,経時変化 命令 ドア開,ドア開停止 ドア閉,ドア閉停止 指示 ドア開,ドア開停,ドア閉,ドア閉停止 機械的力 機械的位置 フィードバック扉の位置 他の入力 列車の動き(走行中,停止中) 列車の位置(駅,駅間) 緊急指標(火災検知,ガス検知) ステータス 扉は開いている 扉は閉じている (1)コントロールの入力か外部情報が 欠けているか間違っている (5)不適切か欠けているフィード バック,フィードバックの遅れ コントロール アルゴリズム (2)生成の欠陥,プロセ スの変更,不正確な修 正や適応 プロセスモデル (3)矛盾,不完全,不 正確 (6)情報が与えられないか間違って いる,測定が不正確,フィードバッ クの遅れ (7)遅れたアクション (8)不適切,有効でない,欠けた コントロールアクション (10)識別されないか 範囲外の外乱 (1)コントロールの入力か外部情報が 欠けているか間違っているCFの識別の例1
扉コントローラ
扉アクチュエータ
扉センサ
扉
(4)コンポーネント故障,経時変化 命令 ドア開,ドア開停止 ドア閉,ドア閉停止 指示 ドア開,ドア開停,ドア閉,ドア閉停止 機械的力 機械的位置 フィードバック扉の位置 他の入力 列車の動き(走行中,停止中) 列車の位置(駅,駅間) 緊急指標(火災検知,ガス検知) ステータス 扉は開いている 扉は閉じている (1)コントロールの入力か外部情報が 欠けているか間違っている (5)不適切か欠けているフィード バック,フィードバックの遅れ コントロール アルゴリズム (2)生成の欠陥,プロセ スの変更,不正確な修 正や適応 プロセスモデル (3)矛盾,不完全,不 正確 (6)情報が与えられないか間違って いる,測定が不正確,フィードバッ クの遅れ (7)遅れたアクション (8)不適切,有効でない,欠けた コントロールアクション (10)識別されないか 範囲外の外乱 (1)コントロールの入力か外部情報が 欠けているか間違っているUCA:緊急時にもかかわらず,扉コント
ローラがドア開命令を与えない[H-3]
シナリオ:扉コントローラはドア開命令
を出したが,ドアが開かない.
CF:火災でアクチュエータ
が動作不能
アクチュエータ故障もCFだが,そ
れ以外も考察すること!
CF:扉を閉じる際に障害物
を挟み扉が動かない
ET/IoT West2017
CFの識別の例2
22扉コントローラ
扉アクチュエータ
扉センサ
扉
(4)コンポーネント故障,経時変化 命令 ドア開,ドア開停止 ドア閉,ドア閉停止 指示 ドア開,ドア開停,ドア閉,ドア閉停止 機械的力 機械的位置 フィードバック扉の位置 他の入力 列車の動き(走行中,停止中) 列車の位置(駅,駅間) 緊急指標(火災検知,ガス検知) ステータス 扉は開いている 扉は閉じている (1)コントロールの入力か外部情報が 欠けているか間違っている (5)不適切か欠けているフィード バック,フィードバックの遅れ コントロール アルゴリズム (2)生成の欠陥,プロセ スの変更,不正確な修 正や適応 プロセスモデル (3)矛盾,不完全,不 正確 (6)情報が与えられないか間違って いる,測定が不正確,フィードバッ クの遅れ (7)遅れたアクション (8)不適切,有効でない,欠けた コントロールアクション (10)識別されないか 範囲外の外乱 (1)コントロールの入力か外部情報が 欠けているか間違っているシナリオ:人が扉口に居るのに,
人が扉口に居ないというフィードバック
がコントローラにあった.
UCA:人または障害物が扉口にいる
のに,ドア閉が命令される[H-1]
プロセスモデルの欠陥:人または障害物が
扉口にないと勘違いし,人または障害物が
扉口にいるにもかかわらず,ドア閉が命令
される
CF:扉センサは動作していたが,
障害物が小さいため,障害物
が扉口に挟まっていることを検
知しなかった.
CF:センサ故障
演習2:CFの識別
扉コントローラ
扉アクチュエータ
扉センサ
扉
(4)コンポーネント故障,経時変化 命令 ドア開,ドア開停止 ドア閉,ドア閉停止 指示 ドア開,ドア開停,ドア閉,ドア閉停止 機械的力 機械的位置 フィードバック扉の位置 他の入力 列車の動き(走行中,停止中) 列車の位置(駅,駅間) 緊急指標(火災検知,ガス検知) ステータス 扉は開いている 扉は閉じている (1)コントロールの入力か外部情報が 欠けているか間違っている (5)不適切か欠けているフィード バック,フィードバックの遅れ コントロール アルゴリズム (2)生成の欠陥,プロセ スの変更,不正確な修 正や適応 プロセスモデル (3)矛盾,不完全,不 正確 (6)情報が与えられないか間違って いる,測定が不正確,フィードバッ クの遅れ (7)遅れたアクション (8)不適切,有効でない,欠けた コントロールアクション (10)識別されないか 範囲外の外乱 (1)コントロールの入力か外部情報が 欠けているか間違っているシナリオ:人が扉口に居るのに,
人が扉口に居ないというフィードバック
がコントローラにあった.
UCA:人または障害物が扉口にいる
のに,ドア閉が命令される[H-1]
プロセスモデルの欠陥:人または障害物が
扉口にないと勘違いし,人または障害物が
扉口にいるにもかかわらず,ドア閉が命令
される
CF:センサ故障
今回の演習:他のCFは?
CF:扉センサは動作していたが,
障害物が小さいため,障害物
が扉口に挟まっていることを検
知しなかった.
ET/IoT West2017