はじめてのSTAMP/STPAから学ぶ astah* でのSTAMP/STPA手順 (astah* System Safety)

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

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

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

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

はじめてのSTAMP/STPA

STPA手順 事前準備

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

プロジェクトの新規作成

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

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

ヒント

  • プロジェクト内にSTAMP/STPAモデルが存在しない場合、STAMP/STPAファセットを有効にしてください

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

分析対象システムの把握

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

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

SysMLなど他のモデルもサポートしています。システムを理解するために是非ご活用ください。

sysml

STPA手順を確認する

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

STPA手順ビューを参照ください。 STPA手順ビューでは、STAMP/STPAの手順を示しています。 STPAに慣れていない方にとって、この手順に従い進めることで、具体的な手順を学ぶことができます。

STPA手順

ヒント

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

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

image

STPA手順 STEP1 解析目的を定義

STPA手順 STEP1 解析目的を定義 には、次の手順が含まれます。

STEP1 前提条件の整理

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

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

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

image

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

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

image

前提条件表の詳細については STAMP関連機能 - 図と図要素 - 前提条件表 もご覧ください。

STEP1 ロス、ハザード、 安全制約の識別

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

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

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

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

image

まずSTPA手順の [STEP1 解析目的を定義] - [ロス、ハザード、安全制約の識別] をダブルクリックしてください。すると、以下のようなロスハザード安全制約表が表示されます。

image

表示された表のセル上で右クリックし [ロスの追加] を選択してください。

image

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

image

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

image

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

image

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

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

image

ヒント

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

image

ロスハザード安全制約表の詳細については STAMP関連機能 - 図と図要素 - ロスハザード安全制約表 もご覧ください。

STPA手順 STEP2 コントロールストラクチャーをモデル化

STPA手順 STEP2 コントロールストラクチャーをモデル化 には、次の手順が含まれます。

STEP2 コントロールストラクチャーの構築

今回は、はじめてのSTAMP/STPAの「4.3 Step0 準備2 コントロールストラクチャーの構築」で紹介されている、以下のコントロールストラクチャーを構築してみましょう。

image
まずはSTPA手順の [STEP2 コントロールストラクチャーをモデル化] - [コントロールストラクチャーの構築] をダブルクリックしてください。すると、以下のようなコントロールストラクチャー図が表示されます。
なお、astah* ではSTPA手順ビューで示されている手順は強制ではなく、STPAをコントロールストラクチャー図から書き始めることも可能です。
image
作成したコントロールストラクチャー図に「開始センサーA」コンポーネントを追加してみましょう。
ツールバーで [コンポーネント] を選択したのち、図上に任意の場所をクリックすることでコンポーネントを作成できます。または図上をダブルクリックすることでも作成できます。
image

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

image
コンポーネントの名前は、図上からだけではなく、画面左下のプロパティビューからも設定可能です。
プロパティビューでは、名前の他にもコンポーネントの責務を記載する「責務」、説明を記載する「定義」や、後ほど説明する「プロセスモデル」、コンポーネントに接続している「CA(コントロールアクション)」「FB(フィードバック)」など、モデルの詳細なプロパティを確認できます。
image

同様に、「踏切制御装置」コンポーネントも作成してください。

次に開始センサーAから踏切制御装置に「不在を通知」コントロールアクションを設計しましょう。
ツールバーの [リンク] を選択し、開始センサーAをクリックし、そのまま踏切制御装置へマウスをドラッグしてください。
image
image

ヒント

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

image

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

image

コントロールアクションは、作成したリンク付近にマウスをホバーさせると表示される「CA」というアイコンをクリックすると追加できます。今回は「不在を通知」と設定してみましょう。

image

なおコントロールアクションは、リンクを選択しプロパティビューからも追加、編集、削除が可能です。

image

ヒント

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

この設定はメインメニューの [ツール] - [システムプロパティ] - [STAMP/STPA] - [新規図要素のスタイル] - [リンクの線色] もしくは [フィードバックリンクの線色] から変更可能です。色の他に線種を実線、破線から選択できます。

image

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

コントロールストラクチャー図の詳細については STAMP関連機能 - 図と図要素 - コントロールストラクチャー図 もご覧ください。


STPA手順 STEP3 非安全なコントロールアクションを識別

STPA手順 STEP3 非安全なコントロールアクションを識別 には、次の手順が含まれます。

STEP3 UCA(Unsafe Control Action)の識別

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

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

image

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

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

  • まず、該当する「鳴動開始」と「Not Providing」が交差するセルをダブルクリックします。UCAダイアログが表示されるので、「UCAの追加」を押下します

  • UCAが追加されるのでテキストに「警報が鳴らずに列車が踏切を通過する」と入力します

  • 次に「違反する安全制約」のセルをダブルクリックします。「違反する安全制約の編集」ダイアログが表示されるので、ロスハザード安全制約表で設計した安全制約から該当するものを選択し、OKボタンを押下して編集を確定させます

  • 最後にOKボタンを押下します

image

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

image

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

UCA表の詳細については STAMP関連機能 - 図と図要素 - UCA表 もご覧ください。

ヒント

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


STPA手順 STEP4 ロスシナリオを識別

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

STEP4 コントロールループ図

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

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

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

image

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

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

image

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

image

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

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

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

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

image

コントロールループ図の詳細については STAMP関連機能 - 図と図要素 - コントロールループ図 もご覧ください。

ヒント

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

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

image

ヒント

プロセスモデルにはハイパーリンクを追加できます。他の図と連携させることで、より詳細なプロセスモデル設計ができます。

以下の2つの方法で、プロセスモデルにハイパーリンクを設定できます。

  • 図上でプロセスモデルを右クリックし、 [ハイパーリンクの編集] を選択して [ハイパーリンク情報] ダイアログから設定します。

    image
  • プロパティビューのプロセスモデルタブで、 [ハイパーリンクの編集] をクリックして [ハイパーリンク情報] ダイアログから設定します。

    image

ハイパーリンクについては リファレンス - 基本機能 - ハイパーリンク もご覧ください。

図の連携については リファレンス - モデル連携機能 - 図の連携 もご覧ください。

STEP4 ロスシナリオの識別

先の手順で抽出したHCFは、ロスシナリオ表で整理していきます。

STPA手順の [STEP4 ロスシナリオを識別] - [ロスシナリオの識別] をダブルクリックしてください。

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

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

image

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

image

ロスシナリオ表の詳細については STAMP関連機能 - 図と図要素 - ロスシナリオ表 もご覧ください。

STEP4 対策検討

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

STPA手順の [STEP4 ロスシナリオを識別] - [対策検討] をダブルクリックしてください。 すると、抽出したHCFに対する対策を設計できる、対策表が表示されます。

image

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

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

image

対策表の詳細については STAMP関連機能 - 図と図要素 - 対策表 もご覧ください。

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