独立行政法人 情報処理推進機構(IPA)
STAMP Workbench logo

目次

前のトピックへ

STAMP Workbench のインストール、最初の一歩

次のトピックへ

リファレンス

はじめてのSTAMP/STPAから学ぶ STAMP Workbench でのSTAMP/STPA手順

このチュートリアルでは、IPA はじめてのSTAMP/STPAを元に STAMP Workbench でのSTAMP/STPAの手順について説明します。

STAMP Workbench でのSTAMP/STPAの手順は以下のとおりです。

このチュートリアルで分析するシステムについて

IPA はじめてのSTAMP/STPA Ver1.0 2016/3 の「一種または三種踏切において、単線の駅中間踏切制御システム」 を題材に分析を行います。

はじめてのSTAMP/STPA

STPA手順 事前準備

STPA手順 事前準備には、次の手順が含まれます。

プロジェクトの新規作成

まずは STAMP Workbench を起動し、STAMP/STPAの分析モデルを管理するプロジェクトを作成します。

新規にプロジェクトを作成するために、メニュー ファイル ‣ プロジェクトの新規作成 を選択します。

ヒント

新規プロジェクトの代わりに、組織/団体が提供するテンプレートとなるプロジェクトファイルを開いて分析を始めることもできます。

分析対象システムの把握

ツールの準備が整ったのち、分析対象のシステムの理解を行います。

分析対象のシステムを理解するために、要求仕様書を読みこみ、簡単な絵や、またはSysMLやUMLなどを用いて要求や、構造、振舞いなどといった観点からモデルを作成する。または既にエンジニアリング活動で作成されている、モデルを含む成果物を読み込み、分析対象のシステムの理解を行います。

どのような手法を用いるかは様々ですので STAMP Workbench では直接サポートせず、別のツールを活用し行います。

sysml

STPA手順を確認する

分析対象のシステムを理解したのちは STAMP Workbench を用いてのSTAMP/STPA分析を開始しましょう。

ツール左側のペインに表示されている「STPA手順」を参照ください。 STPA手順では、本ツールを用いたSTAMP/STPAの手順を示しています。 STPAに慣れていない方にとって、この手順に従い進めることで、具体的な手順を学ぶことができます。

STPA手順

ヒント

STPA手順は強制ではなく、熟練者の方は、STPA手順ビューを利用せずに、図メニューや構造ツリーから、まずはコントロールストラクチャー図から書き始めることも可能です。

構造ツリーは、STPA手順ビューの隣に用意されています。こちらでは、STPA手順ビューや図メニューなどから作成された図やモデルを網羅的にツリービューで把握できます。

image

STPA手順 Step0 準備1

STPA手順 Step0 準備1には、次の手順が含まれます。

Step0 準備1 前提条件を整理する

分析対象のシステムを理解したのちは、その分析範囲を明確化する作業の一環として、分析範囲のシステムの過程や前提条件を整理します。 この手順は「はじめてのSTAMP/STPAのP.13 4.1 前提条件を整理する」にて解説されていますので、そちらも参照ください。

前提条件、例えば踏切システムはVer1.2を利用する、分析範囲にAコンポーネントは含まれないなどの仮定、もしくは前提条件が、分析対象のシステムの理解を行う際に、いくつも抽出されてくるかと思います。
このような情報を前提条件表という形で整理していきます。
それでは、前提条件を追加してみましょう。
まずSTPA手順の STEP0 -‣ 準備1 -‣ 前提条件の整理 をダブルクリックしてください。すると、以下のような前提条件表が表示されます。
image

表示された表のセル上で右クリックし 前提条件の追加 を選択してください。

image

自動的に採番された前提条件が新規に作成されるので、名前に「警報開始センサー(A,B)で列車を検知すると踏切鳴動を開始させる → 列車が開始センサー(A,B)に到達したら、鳴動開始させる」と入力してください。

同様の操作で前提条件を追加していきます。

image

Step0 準備1 アクシデント, ハザード, 安全制約の識別

分析対象システムの把握から、仮定/前提条件を整理したのち、何のアクシデントにつながる安全分析を行うのかを明確にします。

まず、どのようなアクシデントを扱うのか、そのアクシデントにつながるシステムの状態、もしくは条件、つまりハザードを抽出します。最後に、そのアクシデントに至らないように、分析対象を安全に保つための要件、もしくは制約を安全制約として抽出します。

アクシデント、ハザード、安全制約の考え方、分析手順については「はじめてのSTAMP/STPA P.7 2.2節、P.15 4.2 Step0 準備1 アクシデント、ハザード、安全制約の識別」にて解説されていますので、参照ください。

アクシデント・ハザード・安全制約も、先ほどの前提条件と同じように、表を用いてそれぞれのモデルを作成、管理していきます。 一連の操作で、はじめてのSTAMP/STPAで解説される、以下のアクシデント、ハザード、安全制約を識別していきます。

image

まずSTPA手順の STEP0 -‣準備1 -‣ アクシデント、ハザード、安全制約の識別 をダブルクリックしてください。すると、以下のようなアクシデントハザード安全制約表が表示されます。

image

表示された表のセル上で右クリックし アクシデントの追加 を選択してください。

image

前提条件と同じように自動的に採番されたアクシデントが新規に作成されるので、「列車と人・車が踏切内で衝突する」と入力してください。

image

次に、このアクシデントにつながるハザードを設定するため、ハザード列のセルを選択した状態で、右クリックし ハザードの追加 を選択してください。

image

今回は「列車が在線中に踏切が閉まらない(警報が鳴らない)」と設定しましょう。

image

次に、安全制約を設定するため、安全制約列のセルを選択した状態で、右クリックし 安全制約の追加 選択してください。

同様の操作で、はじめてのSTAMP/STPAで解説されるアクシデント、ハザード、安全制約を設定してください。

image

ヒント

あるアクシデントにつながるハザードは、他のアクシデントで分析したハザードと同様である。または安全制約は他のアクシデント、ハザードの組み合わせにて抽出されているという場合もあるでしょう。 そのような場合は、「ハザードの選択」「安全制約の選択」から、既存のハザード、安全制約を選択できます。

image

Step0 準備1 分析対象の登場人物の抽出

アクシデント・ハザード・安全制約を識別し、何について分析するかを整理したのちは、分析対象の構造と関係性を図、モデルとして表現していきます。

具体的には、コントロールストラクチャーという図に、分析対象を構成する構造を意味するコンポーネントを表していき、そのコンポーネント間の関係を表現していきます。

ただ、いきなりコントロールストラクチャ―を書こうとしても、何を登場させればよいか整理が難しいでしょう。 STAMP Workbench では、コントロールストラクチャ―の作成を支援するため、登場する人物(コンポーネント)を、コンポーネント抽出表という表を用いて整理でき、その結果をもとにコントロールストラクチャ―を作成できる機能を用意しています。

それでは、STPA手順の STEP0 -‣準備1 -‣ 分析対象の登場人物の抽出 をダブルクリックし、コンポーネント抽出表を表示してください。

コンポーネント抽出表が表示されますので、表のセルを右クリックし 登場人物の追加 を選択してください。

これまでの表の操作と同様に、登場人物1件を意味する行が追加されるので、コントロールストラクチャ―に登場する可能性がある人物として「踏切制御装置」と「警報機、遮断機」を追加してみましょう。

image

この踏切制御装置に対するコントロールアクション(制御)とフィードバックは、どのようなものがあるか、それぞれのセルをクリックして設計していきます。

例えば「踏切制御装置」から「警報機、遮断機」に対して「鳴動開始」というコントロールアクションを追加するため、次の操作を行ってください。

  • 踏切制御装置のコントロールアクションのセルをダブルクリックする
  • コントロールアクションダイアログが表示されるので、追加ボタンを押下する
  • 送信先コンポーネントに「警報機、遮断機」を選択する
  • コントロールアクションに「鳴動開始」と設定する
  • コントロールアクションと送信先コンポーネントを設定したのち、OKボタンを押下して編集を確定する
CAダイアログ

この操作で、以下のような結果が得られるはずです。

image

この状態でコンポーネント抽出表上を右クリックし、 コントロールストラクチャ―図の生成 を選択してください。 すると、これまで設計したモデルから、次のようなコントロールストラクチャ―図が作成されます。

image

このように登場人物とその相互関係を、表を用いて整理し、その結果をコントロールストラクチャ―図として表現することができます。

ヒント

今回の事例、はじめてのSTAMP/STPAでは、列車の運転士は登場人物に含めないと分析しています。

image

このように分析対象範囲外を示せるよう、コンポーネント抽出表にて「対象」が用意されています。今回のように列車の運転士を分析対象から外す場合は、以下のようになります。

image

ヒント

分析対象の登場人物と外部との関係は、コンポーネント抽出表の「入出力」から設計できます

image
image

STPA手順 Step0 準備2

STPA手順 Step0 準備2には、次の手順が含まれます。

Step0 準備2 コントロールストラクチャ―の構築

コンポーネント抽出表から既にコントロールストラクチャ―図が作成されていると思います。 STAMP Workbench ではIPAが考えるSTPA手順は強制ではなく、STPAをコントロールストラクチャ―図から書き始めることも可能です。

今回は、コンポーネント抽出表から作成された、コントロールストラクチャ―図に、はじめてのSTAMP/STPAの「4.3 Step0 準備2 コントロールストラクチャ―の構築」で紹介されている、以下のコントロールストラクチャ―を構築してみましょう。

image
それではまずは「開始センサーA」コンポーネントを追加してみましょう。
ツールバー -‣ コンポーネント を選択したのち、図上に任意の場所をクリックすることでコンポーネントを作成できます。または図上をダブルクリックすることでも作成できます。
image

作成されたコンポーネントに直接、開始センサーAと入力してください。

image
コンポーネントの名前は、図上からだけではなく、画面左下のプロパティビューからも設定可能です。
プロパティビューでは、名前の他にもコンポーネントの責務を記載する「責務」、説明を記載する「定義」や、後ほど説明する「プロセスモデル」、コンポーネントに接続している「CA(コントロールアクション)」「FB(フィードバック)」など、モデルの詳細なプロパティを確認できます。
image
次に開始センサーAから踏切制御装置に「不在を通知」コントロールアクションを設計しましょう。
ツールバー -‣ リンク を選択し、開始センサーAをクリックし、そのまま踏切制御装置へマウスをドラッグしてください。
image
image

ヒント

リンクはツールバー以外からも、図上でドローサジェスト機能を使うことで、ツールバーに何度もマウスを移動せずに、集中してコントロールストラクチャ―を記述できます。矢印のマークをクリックして、接続先のコンポーネントを選択するとリンクが作成されます。

image

また矢印の先の”>>”マークをクリックすると、コントロールアクションを定義するリンクか、フィードバックを定義するリンクかを選択できます。

image
コントロールアクションは、作成したリンク付近にマウスをホバーさせると表示される「CA」というアイコンをクリックすると追加できます。今回は「不在を通知」と設定してみましょう。
なおコントロールアクションは、リンクを選択しプロパティビューからも追加、編集、削除が可能です。
image

ヒント

コントロールアクションとフィードバックのリンクの線の色は、デフォルトではIPAが推奨するコントロールアクションは赤色、フィードバックは青色で設定されています。

この設定は ツール -‣ システムプロパティ ‣ 新規図要素のスタイル ‣ コントロールアクション|フィードバックの線色 から変更可能です。色の他に線種を実線、破線から選択できます。

image

このようにコンポーネント、リンク、コントロールアクション、フィードバックを追加、編集しながら、コントロールストラクチャーを構築していきます。


STPA手順 Step1

STPA手順 Step1には、次の手順が含まれます。

Step1 UCA(Unsafe Control Action)の抽出

分析対象の構造をコントロールストラクチャーとして構築したのちは、コントロールアクション毎にガイドワードという観点で、そのコントロールアクションがハザード/アクシデントにつながるか?という点を、UCA表と呼ばれるもので分析していきます。

それでは、STPA手順の STEP1 -‣UCA(Unsafe Control Action)の抽出 をダブルクリックしてください。

image

UCA表では、コントロールストラクチャーから自動的に抽出されたコントロールアクションが入力されています。このコントロールアクション毎に、「Not Providing」などのガイドワードの観点について分析していきます。

今回は、「鳴動開始」コントロールアクションについて、Not Providingの場合、「警報が鳴らずに列車が踏切を通過する」という非安全な結果に至るという分析を入力しましょう。

  • まず、該当する「鳴動開始」と「Not Providing」が交差するセルをダブルクリックします。UCAダイアログが表示されるので、「UCAの追加」を押下します
  • UCAが追加されるのでテキストに「警報が鳴らずに列車が踏切を通過する」と入力します
  • UCAが違反するアクシデント・ハザード・安全制約表で設計した、安全制約を「違反する安全制約」のセルをダブルクリックして選択します
  • 最後にOKボタンを押下します
image

これまでの操作で、UCA表は次のようになっているはずです。

image

このような操作で、UCAの分析を行っていきます。

ヒント

UCA表でのコントロールアクションの順番を入れ替えたい場合は、行をドラッグし任意の場所にドロップします。


STPA手順 Step2

STPA手順 Step2には、次の手順が含まれます。

Step2 HCFの抽出 - コントロールループ図

UCAを抽出した後は、UCAとみなしたコントロールアクション毎に、ハザードに至る要因(Hazard Causal Factor)を特定していきます。

その方法の一つとして、まずコントロールストラクチャー図から、UCAとみなしたコントロールアクションに注目したコントロールストラクチャーを、コントロールループ図という名前で作成します。

それでは、STPA手順の STEP2 -‣ HCF -‣ コントロールループ図 をダブルクリックしてください。 すると、次のようなエラーダイアログが表示されたかと思います。

image

先に説明したようにコントロール―プ図は、あるコントロールアクションに注目して作成します。そのため、まずコントロールストラクチャ―図上で、どのコントロールアクション、もしくはリンクに注目しているか、選択する必要があります。

それでは、コントロールストラクチャー図を開き、「鳴動開始」コントロールアクションを選択した状態で、改めてSTPA手順のコントロールループ図をダブルクリックしてください。

image

すると、次のように選択されたコントロールアクションに直接関係するコンポーネント以外は、外部からの入出力といったように省略された形のコントロールループ図が作成されます。

image

はじめてのSTAMP/STPAの事例では、コントロールループが存在せず、コントロールストラクチャーでHCF分析を行っていますが、チュートリアルの説明上、コントロールループを用いて分析していきます。

コントロールループ図でのHCF分析の方法の一つとして、齟齬の原因となるヒントを与えるヒントワードとコントロールループを照らしながら、HCFを分析していく方法があります。

それでは、コントロールループ図の ツールバー -‣ ヒントワード表示 をクリックしてみましょう。

すると、次のようにヒントワードが表示されるので、コントロールループ図を眺めながら、各ヒントワードの状況に至った時に、ハザードに至る原因が発生しないか分析していきます。

image

ヒント

コントールループ図(もしくはコントロールストラクチャー図)では、コントローラーが認識しているコントロール対象の状態を、プロセスモデルとして設計できます。

STAMP Workbench では、コンポーネントを選択し、右クリック プロセスモデル区画の表示 を選択すると、プロセスモデルを設計できる区画が表示されます。 表示されたプロセスモデル区画からプロセス変数と変数値を右クリックから、またはプロパティビューから設計できます。

image

Step2 HCFの抽出 - HCF表

先の手順で抽出したHCFは、HCF表で整理していきます。

STPA手順の STEP2 -‣ HCF -‣ HCF表 をダブルクリックしてください。

すると、どのUCAに対するHCFを整理するのか選択するダイアログが表示されるので、現在コントロールループ図で分析しているUCAを選択します。

同ダイアログでは、HCF表を作成したUCAには「〇」印が付与されるので、HCF分析が行えていないUCAを判断できます。

image

HCF表が表示されたら、これまでの操作同様にHCFを追加し、そのHCFに至るシナリオや、どのヒントワードで抽出できたのかを設計していきます。

image

STPA手順 Step3

STPA手順 Step3には、次の手順が含まれます。

Step3 対策検討

STPAの最後の手順として、抽出したHCFに対する対策を考えていきましょう。

STPA手順の 対策検討 をダブルクリックしてください。 すると、抽出したHCFに対する対策を設計できる、対策表が表示されます。

image

同表の対策セルを右クリックし 対策の追加 から対策を追加したり、対策対象コンポーネントのセルをダブルクリックして対策対象コンポーネントを設定したりできます。

このような操作で、HCFに対する対策をまとめていきます。

image

STPAではUCA分析を行っている時に、コントロールストラクチャーでの抜けを見つけて、手順を戻るといったことが多く発生します。そのようにイテレーティブな分析を行いながら、STPAでの分析を行っていきましょう。