• 検索結果がありません。

本サンプルは、電気ポットのシステムモデルに、Fault Tree Analysisで明らかにした安全情報 を付加した例です。付加した安全情報はハザード状態(コンテキスト)やそれを防ぐ防衛手段

(ディフェンス)も含みます。

本書ではモデルの一部だけを示します。全体のサンプルモデルは、SafeMLと一緒に Enter-prise Architectのモデルとして配布しています。

この例で示している分析内容とその結果は、あくまでもSafeMLを説明するための例であ り、完全な分析結果を示してはいません。

5.1.1 プププロロロセセセススス

サンプルシステムで用いた開発プロセスを以下で説明します。ここで説明する開発プロセス は、SafeMLを安全システムの開発で使用するための一例です。

1. システムレベルの要求とユースケースの抽出。SysMLのユースケース図・ 要求図・アク ティビティ図等を使用してモデルを作成します。 また、システムのプロトタイプを開発 しSysMLでモデル化します。

2. 各要求に対して、ハザード・安全分析を実施。分析結果からハザード、危害及びハザー ド状態・事象をSafeMLの要素を使いモデルに追加します。

3. 防護手段(安全機能)とそれらの防護結果の検討。SafeMLの要素を使用してモデルに 追 加します。

4. 安全機能を実現するために必要な新しいシステム要求(安全要求)の追加。追加した要素 は、システム設計段階で安全機能を示すBlockに接続するとともに、 安全機能の動作確 認テストをモデルに追加します。

5. 新たなハザードの特定。安全機能を追加した事で発生する新たなハザード等を検討する ために必要に応じて上記のプロセスを反復します。

5.1.2 シシシススステテテムムムモモモデデデルルル

電気ポットの例を示します。初期段階では、ポットの機能はきわめて単純であり、スイッチを 入れるとポットは水を加熱し、スイッチを切ると加熱を止めます。システムのユースケースを 図7に示します。

初期設計は機能のみに着目しているため、非常に単純になります。

「Boil water」ユースケースの詳細を図 8のアクティビティ図に示します。 同様に「Pour

water」ユースケースの詳細を図 9のアクティビティ図に示します。 更に、各ユースケースと

要求を満たす為のポットの初期設計を図10に示します。

5.1.3 シシシススステテテムムムのののハハハザザザーーードドド

簡単なハザード分析により、以下のハザードと危害が見つかります。

1. 電気:感電、電気火事の原因 2. 熱:やけどの原因

3. 蒸気:やけどの原因 4. 湯:やけどの原因

危 害が発生する状態を見つける為にFTA(Fault Tree Analysis)を行います。「Water burns」 (熱湯によるやけど)のFault Tree を図 11に示します。 (このFault Tree では、

確率情報は表示していません。)

Fault Treeを用いた分析により、やけどを発生する複数のminimum cut set(ハザード状態・ 事件)が見つかります。

uc [Package] Electric kettle [106 Use cases]

Put water in kettle

Boil water

Stop boiling

Pour water

<<block,external>>

WaterTap

<<block,external>>

PowerPoint

<<block,external>>

WaterDestination Class:ElectricKettle

Figure 7: 電気ポットのユースケース図

act [Package] Electric kettle [108 Boil water]

Plug in kettle

:User :PowerPoint :ElectricKettle :Environment

Activate boiling

Unplug kettle

Stop dispensing electrical energy Begin dispensing electrical energy

Wait for boiling to finish

Deactivate

boiling Stop boiling

Boil water

[not finished]

:Electricity

:Boiling status

Boiling deactivation :Command [finished]

:Boiling status

:Heat

:Steam :Noise

:Electricity

<<continuous>>

<<continuous>>

<<continuous>>

<<continuous>>

<<continuous>>

<<continuous>>

Figure 8: 「Boil water」ユースケースのアクティビティ図

act [Package] Electric kettle [110 Pour water]

:User :ElectricKettle :WaterDestination

Tilt kettle towards spout Hold spout over

destination

Wait for sufficient water dispensed

Return kettle to the level [not sufficient]

:Water

:Water quantity

[sufficient]

:Water quantity

<<continuous>>

<<continuous>>

Dispense water

:Water

Receive water

Figure 9: 「Pour water」ユースケースのアクティビティ図

:Electrical assembly

E :Electricity BoilingControl

WQ :Water quantity

ibd [Package] Electric kettle [125 Kettle logical connections]

:Switch

ElectricityControl BoilingControl

:Boiling status indicator BoilingStatus E :Electricity

:Electrical assembly Ein :Electricity ElectricityControl

Eout :Electricity

:Spout Win :Water

Wout :Water :Water tank

WQ: Water quantity Win :Water E :Electricity

Wout: ~Water

ExcessHeat :Heat Noise :Noise

Win: Water

Wout :~Water ExcessHeat :Heat N :Noise BoilingStatus

Figure 10: システムのプロトタイプ設計(内部ブロック図)

Water burns

Contact with water

Water is hot

Pouring water by tilting kettle

Water spills

Pour water guidance

Lid leak

Lid failure

Water leak from tank

Over-boiling

Boiling too long

Boiling too much water

Figure 11: 「Water burns」危害のFault Tree

1. お湯を注ぐ際に、ふたからお湯が漏れる 2. 水を入れすぎ、沸騰時にお湯があふれる

3. ユーザがポットのスイッチを切り忘れ、お湯があふれる 5.1.4 ハハハザザザーーードドド状状状態態態(((コココンンンテテテキキキススストトト)))のののモモモデデデルルル化化化

安全分析の結果に基づいて、SysMLのシステムモデルに安全情報を付加します。安全情報をモ

デル化する際の手順を以下に示します。

1. ハザードとそのハザードの原因となるシステム要素(要求、ユースケースまたは システ ムのコンポーネント)を記述します。

2. 発生しえる危害を記述します。

3. ハザードが危害となるコンテキストと、そのコンテキストを発生させるシステム要素

(要求、アクティビティまたはシステムのコンポーネント)を記述します。

安全情報をモデル化する際、ハザードと危害はハザード・リスク分析から抽出し、コンテ キストはFTA、FMEA等の事故の原因を分析する分析手法から抽出します。前章のハザード分 析とFTA分析の結果をモデル化するための手順例を以下に示します。

1. 関連するハザードとそのハザードが発生させる危害の明確化。全てのハザードをHazard要 素を用いてモデルに追加します。また全ての危害をHarm要素を利用 してモデルに追加し ます。

2. フォルトツリーのminimum cut setの明確化。1つのminimum cut setはハザードによっ て危害が発生するような状態(コンテキスト)を表します。

3. Minimum cut set毎にHarmContext要素を使いコンテキストをモデルに追加し、 Haz-ardとHarmを関連づけます。

bdd [Package] Electric kettle illustrative diagrams [Lid leak]

«requirement»

Make water available

«Hazard»

Boiling water

«activity»

Tilt kettle towards spout

«usecase»

Pour water

«Harm»

Water burns

«block»

Lid

«HarmContext»

Lid leak while pouring

«deriveHzd»

«deriveHzd»

«deriveHC» «deriveHC»

«HarmContext»

(a)ふたからおれるハザード事象 bdd [Package] Electric kettle illustrative diagrams [Over-boiling]

«requirement»

Boil water

«Hazard»

Boiling water

«activity»

Boil water

«usecase»

Boil water

«Harm»

Water burns

«activity»

Wait for boiling to finish

«HarmContext»

Over-boiling due to failure by user to deactivate

«deriveHzd»

«deriveHzd»

«deriveHC» «deriveHC»

«HarmContext»

(b)かしぎのハザード事象

Figure 12: SafeMLでモデル化されたハザード事象(コンテキスト)

本サンプルでは「お湯」ハザード、「やけど」危害及び「ふたからの漏れ」と「沸かし過 ぎ」 のコンテキストを説明します(図 12)。図 12aでは、「Tilt kettle towards spout」とい うアクティビティが危害となる振る舞いを表し、「Lid」ブロックはそのアクティビティを 実 行する際に危害となる可能性のあるシステム部分を表します。この場合は、ブロックの故障に よって危害が発生します。

図 12で示す2つの図は、1つの図とすることも可能です。しかし、モデルをわかりやすく するためにコンテキスト毎に図を作成することをお勧めします。

「Boiling water」要素はHazard要素のインスタンスです。ユースケースとシステム要求か ら発生するハザードなので、それらに繋がっています。

「Water burns」要素はHarm要素のインスタンスです。「Boiling water」要素は両方の図 に出てきていますが、モデルとしては単一の要素になります。

両方の図で、harmはコンテキスト経由で原因となるハザードと繋がっています。図12aで は、コンテキストはふたの漏れです。図で示したようにユーザがポットを傾けることとふたと の組み合わせでこのコンテキストは表現されます。ハザード事象はHarmContextの要素で発生 確率が高と指定され、また、危害が起こる確率が中と設定されています。

図 12bでは、危害を発生するコンテキストはユーザがスイッチを切り忘れて、お湯を沸か しすぎてあふれることです。 (このサンプルの電気ポットでは自動的に沸騰を止めません。)

コンテキストは「Boil water」アクティビティと「Wait for boiling to finish」アクティビティ で表現されます。

5.1.5 安安安全全全機機機能能能ののの追追追加加加

次のステップは安全機能(防護手段とコンテキスト検出手段)の設計です。フォルトツリー のminimum cut setと同様に、コンテキストとシステム情報の関連を示す図は、そのコンテキ ストの原因を対象に安全機能を設計することが可能です。

電気ポットのサンプルでは、複数のハザード状態・事象が存在します。本サンプルでは、

前章で説明したコンテキストを中心に安全機能の設計を行います。図 13はある危害事象のハ ザード情報の例です。潜在的なハザード、関連するシステム要求とユースケース、ハザード事 象、使用する安全機能及び動作確認手段を示しています。

bdd [Package] Electric kettle illustrative diagrams [Lid leak defence]

«requirement»

Make water available

«Hazard»

Boiling water

«activity»

Tilt kettle towards spout

«usecase»

Pour water

«Harm»

Water burns

«block»

Lid

«HarmContext»

Lid leak while pouring

«deriveHzd»

«deriveHzd»

«deriveHC» «deriveHC»

«HarmContext» «PassiveDefence»

Sealed lid

«DefenceResult»

Sealed lid result

«DefenceResult»

«requirement»

Watertight lid seal

«reqDefence»

«block»

Seal

«satisfy»

«testCase»

Seal is watertight

«verify»

(a)ふたのれにする防護手段

bdd [Package] Electric kettle illustrative diagrams [Over-boiling defence]

«requirement»

Boil water

«Hazard»

Boiling water

«activity»

Boil water

«usecase»

Boil water

«Harm»

Water burns

«HarmContext»

Over-boiling due to failure by user to deactivate

«deriveHzd»

«deriveHzd»

«deriveHC»

«HarmContext»

«ContextDetector»

Water status sensor

«detect»

«requirement»

Detect water status

«reqDetection»

«testCase»

Sensor correctly detects water status

«block»

Water status sensor

«satisfy»

«verify»

«ActiveDefence»

Auto cut-off

«DefenceResult»

Auto cut-off result

«DefenceResult»

«requirement»

Automatic cut-off

«requirement»

Automatic switch control

«testCase»

Sensor correctly detects water status

«block»

Water status sensor

«satisfy»

«verify»

«reqDefence»

«deriveReqt»

«deriveReqt»

(b)かしぎにする防護手段

Figure 13: SafeMLを利用しモデル化した2つの防護手段

act [Package] Electric kettle [108 Boil water]

Plug in kettle

:User :PowerPoint :ElectricKettle :Environment

Activate boiling

Unplug kettle

Stop dispensing electrical energy Begin dispensing electrical energy

Wait for boiling to finish

Boil water

[not finished]

:Electricity

:Boiling status

[finished]

:Boiling status

:Heat

:Steam :Noise

:Electricity

<<continuous>>

<<continuous>>

<<continuous>>

<<continuous>>

<<continuous>>

Note changed activity:

auto-shut-off eliminates the user's required kettle deactivation step.

Figure 14: 改善した「Boil water」ユースケースのアクティビティ図

最初はより簡単なふた漏れのコンテキストを説明します。図13a で示したように、選択さ れたふた漏れの防護手段はふたにゴムシールを追加することです。SafeMLのPassiveDefence要 素を利用してモデル化します。受動防護手段である為、ゴムシームの機能は常に有効です。こ のため、ContextDetector要素は不要です。

ディフェンスとコンテキストの関連はDefenceResultによって特徴付けられます。これは 防 護結果を表現します。本サンプルでは、コンテキストの起こる確率が「High」から「Low」へ 低減されます(図では示されていません)。コンテキストが発生する場合の危害確率には影響 がありません。

図 13aで示したように、新しいディフェンスはシステム設計の変更を発生させました。こ のため、新しい安全要求を追加し、それによって「Seal」という 新しいシステムのコンポーネ ントをふたのコンポーネントに追加しています。 また、機能の確認テストも追加されていま す。

SafeMLの要素によって、原因となるハザード、発生する可能性のある危害、それを発生さ

せるコンテキスト、防護するディフェンス、新しい安全機能のすべてが連携され、トレースが 可能となりました。

沸かし過ぎのコンテキストでは、より複雑なデフェンスが必要です。本サンプルでは、 沸 かし過ぎが発生しないように自動停止機能を追加します(図13b)。

このディフェンスはActiveDefenseのインスタンス(能動防護手段)であり、この機能を 発動させるための機能が必要となります。本サンプルでは温度センサを使用しています。 図13bのContextDetectorインスタンスでこの機能を表現しています。

ふたシールのディフェンスと同様に、ディフェンスとContextDetectorの実装方法を図13bに 示します。

自動停止機能の実装は単なるふたシールより複雑であり、システムモデルへの影響が より 大きくなります。ユーザが自分でスイッチを切ることが無くなるため、「Boil water」ユース ケースのアクティビティ図にも変更が必要です(図14)。

関連したドキュメント