3*1)2)+ $4,5),#)*+)',$'-$.#'(&&$-'6$7/#,
$8
),5

&
+#9

!"#
$%

DEOS 協会

3&

0
#,

#6

/

D-Case 構文定義書*1

D-Case 部会*2

2015 年 4 月 20 日

*1 version 1.0*2 主執筆者:

松野裕 (日大、matsuno.yutaka@nihon-u.ac.jp)、高井利憲 (奈良先端大、takai@is.naist.ac.jp)
c⃝YutakaMatsuno, Toshinori Takai

はじめに (Informative)
本文書は D-Case の構文を定義する。D-Case の定義は以下である。
開発、運用、保守、廃棄などのシステムライフサイクルを通じて、システムのディペンダビリティをス
テークホルダが合意し、社会に説明責任を果たすための手法とツール。主として アシュアランスケー
ス [1] を記述するための手法とツールを提供する。ドキュメント自体も D-Case と呼ぶ。(所真理雄編、DEOS:変化し続けるシステムのためのディペンダビリティ工学、近代科学社、2014)
D-Case はアシュアランスケースの記法の一つである GSN (Goal Structuring Notation)[2] を用いる。
D-Case は GSN の定義文書である [2] の要件を満たす（ただし、[2] は曖昧な定義が多くあり、適宜解釈している。また曖昧すぎて定義できなかった部分、現時点では必要とないと思われる部分は D-Case では定義していない）。D-Case はさらに、システムのディペンダビリティに不可欠なモニタリングや責任関係などの概念を持つ。複雑になり過ぎない範囲で、パターンやモジュールなどプログラミング言語の基礎概念を導入し、[2]で曖昧であったそれらの定義を形式化した [3]。

D-Case は基本と標準の２つの構文レベルを持つ。基本構文はゴールやストラテジなどの基本ノードおよびリンクのみを定義する。日常業務におけるシステムのディペンダビリティ（システムの安全性やセキュリティなど）に関する合意形成において、最小限必要となる。標準構文は基本構文に加えて、パターンやモジュー
ル、撤回可能 GSN 構文の形式的定義を持つ。本構文定義書は、D-Case の構文定義であることだけでなく、GSN の初の (準) 形式的定義書である。
本文書の構成は以下である。1 節において基本 D-Case 構文を定義する。2 節において、標準 D-Case 構文を定義する。3 節において、D-Case の XML Schema を示す。4 節において、本構文定義書の参照実装について述べる。

1 基本 D-Case 構文定義 (Normative)
D-Case は図 1 のような木構造をした図で表される。UML 図のように、数種類のノードがあり、矢印 (リンク) はノードを結ぶ。尚、図のうち、本構文定義書の定義のためではなく、説明に用いる図には、(Informative)と注記する。

1.1 ノード
すべてのノードは長方形、平行四辺形などの形状を持ち、属性として、id、文章を持つ。id、文章はそれぞれ string 型である。ノードによっては、id、文章以外の属性を持つ。ノードの定義を以下の形式で表す。

• (カタカナ表記、英語表記), 形状• (ゴール、Goal): 長方形• (ストラテジ、Strategy): 平行四辺形• (コンテキスト、Context): 角が丸みを帯びた長方形もしくは樽型*1*1 GSN Community Standard [2] 8 ページ参照

1

図 1 D-Case の例 (Informative)• (エビデンス もしくは ソリューション、Evidence もしくは Solution): 楕円もしくは円• (アンデベロップド、Undeveloped): 菱型
一つのツール、ドキュメントにおいて、カタカナ表記、英語表記を統一して用いる。例えば、一つのツー
ルで、ストラテジをカタカナで、エビデンスを Evidence と表記してはならない。エビデンス、ソリューションの２通りの呼び方はあるのは、GSN Community Standard[2] では “Solution”が用いられているのに対し、アシュアランスケースの分野では一般に “Evidence”が用いられていることから、また DEOS においてEvidence の概念がディペンダビリティに重要であるとの議論からアシュアランスケースが採用された経緯か
ら、エビデンス、ソリューション両方を用いて良いことにした。ただし、一つのツール、ドキュメントではエ
ビデンスもしくはソリューションのどちらかで統一して用いる。
図 2 にノードの例を示す。これらは D-Case Editor(*2 ) での表現例である。G 1, S 1, E 1 などは id、“System is Dependable”などは文章である。アンデベロップドノードは定義せず、後述するように、ゴールに属性をアンデベロップド属性を加えてもよい。

1.2 リンク
ノードはリンク（有向エッジ）によって結ばれる。リンクは２種類ある。リンクもノードと同様な定義形式をとる。
*2 http://www.dcase.jp

2

図2

ノードの例 (Informative)• サポート(Supported by) リンク: 塗りつぶし有りの矢印• コンテキスト(In Context Of) リンク: 塗りつぶし無しの矢印
リンクの例を示す。

図3

リンクの例 (Informative)

サポートリンクはゴールからストラテジ、ストラテジからゴール、ゴールからエビデンス、ゴールからアン
デベロップドをつなげる。コンテキストリンクはゴールからコンテキスト、ストラテジからコンテキストをつなげる。リンクのつなげ方の規則を表 1, 2 にまとめる。読み方は、縦軸はリンクの始点ノードで、横軸は終点ノードを表す。⃝ のつなげ方のみ許される。図 1 は正しいつなげ方の例である。
表1

ゴール

ストラテジ

コンテキスト

⃝

ゴール
ストラテジ

サポートリンクのつなげ方 (Normative)

エビデンス

アンデベロップド⃝⃝⃝

コンテキストエビデンス
アンデベロップド

D-Case では、リンクの数に以下に制約をつける (Normative)。
• 一つのゴールは、唯一のストラテジ、エビデンス、アンデベロップドにつながる。
• 一つのストラテジは、一個以上のゴールにつながる。
• 一つのゴールは、任意個のコンテキストとつながる。
• 一つのストラテジは、任意個のコンテキストとつながる。
3

表2

コンテキストリンクのつなげ方 (Normative)

ゴール

ストラテジ

コンテキスト

ゴール

⃝

ストラテジ

⃝

エビデンス

アンデベロップド

コンテキストエビデンス
アンデベロップド

アンデベロップドノードは、ゴールの一つの属性として定義し、独立のノードとして定義しなくてもよい。これは OMG のアシュアランスケースのメタモデル国際標準 SACM(Structured Assurance Case

Metamodel)[4] での定義に従った場合である。図 4 では、これに従った Astah/GSN の例を示す。ゴールの属性として undeveloped を設定し、これに利用者がチェックを入れると、ゴールの下に小さな菱型が付けられ、undeveloped であることを示す。

図4

Astah/GSN での Undeveloped の実装例 (Informative)

2 標準 D-Case 構文定義
2.1, 2.2, 2.3, 2.4 節はそれぞれ独立している。別個に準拠して良い。

4

2.1 GSN 拡張ノード、D-Case 拡張ノード (Normative)
GSN[2] では、基本構文で示した以外のノードがある。D-Case では、システムのモニタリング情報を持つ
モニタノードなどがある。標準 D-Case 構文では、これらも定義する。パターン、モジュールについては、[3]を元に定義する。
標準 D-Case 構文では、ゴールは id、文章 に加え、f lag : bool を属性として持つ。基本 D-Case 構文で定義した GSN ノード以外に、[2] で定義されているノードは以下である。

• (ジャスティフィケーション、Justification): エビデンスノードと同じ形状。ジャスティフィケーショ
ンノードであることを示すためにアイコンなどを用いる。

• (アサンプション、Assumption): エビデンスノードと同じ形状。アサンプションノードであることを示すためにアイコンなどを用いる。

• (モジュール、Module): 長方形に、左上に小さな長方形が乗る形状。
• (コントラクト、Contract): モジュールノードに、さらに右下に小さい長方形が乗る形状。
図 5 にジャスティフィケーション、モジュールノードの D-Case Editor での表示例を示す。コントラクトノー
ドは、モジュール間図 (Inter-module notation) において、モジュール間をつなぐリンク上に定義される（後
述する）
。

図5

GSN 拡張ノード [2] の表示例 (Informative)

D-Case で新たに定義したノードは以下である。
• (モニタ、Monitor): エビデンスノードと同じ形状。モニタノードであることを示すためにアイコンなどを用いる。

• (アクション、Action): エビデンスノードと同じ形状。アクションノードであることを示すためにアイコンなどを用いる。

• (エクスターナル、External): モジュールノードと同じ形状。エクスターナルノードであることを示す
ためにアイコンなどを用いる。

• (パターン、Pattern): コンテキストノードと同じ形状。パターンノードであることを示すためにアイコンなどを用いる。パターンについては後に詳細を示す。

• (レスポンシビリティ、Responsibility): モジュールノードと同じ形状。レスポンシビリティノードであることを示すためにアイコンなどを用いる。レスポンシビリティには、以下の属性を id と文章以外に持つ。

– 責任属性名 : string5

– 責任属性アドレス : string– 責任属性アイコン : string
レスポンシビリティノードは、モジュール間図 (Inter-module notation) において、モジュール間をつなぐリンク上に定義される（後述する）。
レスポンシビリティノードを除く、D-Case 拡張ノードの D-Case Editor での表示例を示す (図 6)。

図 6 D-Case 拡張ノードの表示例 (Informative)

GSN 拡張ノード, GSN 拡張ノードを含めたリンクの関係を示す (図 3, 4)。ジャスティフィケーション、ア
サンプション、パターンはコンテキスト、モニタ、アクションはエビデンスを特殊化したノードであり、リンクの関係はそれぞれコンテキスト、エビデンスに準じる。エクスターナルはモジュールの特殊化である。
表 3 GSN, D-Case 拡張ノードを含めたサポートリンクのつなげ方G
ゴール (G)
ストラテジ (St)

St
⃝

Ct

Ev
⃝

U
⃝

⃝

J

As

Md
⃝

Mo
⃝

Ac
⃝

Ex

P

⃝

コンテキスト (Ct)
エビデンス (Ev)
アンデベロップド (U)ジャスティフィケーション (J)アサンプション (As)
モジュール (Md)
モニタ (Mo)
アクション (Ac)
エクスターナル (Ex)パターン (P)

リンク数の制約は以下のように拡張される。

• 一つのゴールは、唯一のストラテジ、エビデンス、モニタ、アクション、アンデベロップドにつながる。
• 一つのストラテジは、一個以上のゴール、モジュール、エクスターナルにつながる。
• 一つのゴールは、任意個のコンテキスト、ジャスティフィケーション、アサンプションとつながる。
• 一つのゴールは、高々一つのパターンとつながる。
• 一つのストラテジは、任意個のコンテキスト、ジャスティフィケーション、アサンプションとつながる。
• 一つのストラテジは、高々一つのパターンとつながる。
標準 D-Case 構文では、パターン及びモジュールを定義する。詳細は [3] を参照のこと。まず、GSN を形式的に定義する。

6

表 4 GSN, D-Case 拡張ノードを含めたコンテキストリンクのつなげ方
GSt

ゴール (G)
ストラテジ (St)

Ct
⃝
⃝

Ev

U

J
⃝
⃝

As
⃝
⃝

Md

Mo

Ac

Ex

P
⃝
⃝

コンテキスト (Ct)
エビデンス (Ev)
アンデベロップド (U)ジャスティフィケーション (J)アサンプション (As)
モジュール (Md)
モニタ (Mo)
アクション (Ac)
エクスターナル (Ex)パターン (P)

定義 1（GSN 項 (Normative)）

T ::= ♢ | (g, ♢) | (g, e) | (g, st, (T1 , . . . , Tn ))g はゴールノード、st はストラテジノード、e はエビデンスノードを表すメタ変数である。この定義では、簡単のため、他のノードは省略してある (特にコンテキストノードは省略している)。♢ は空の GSN を表す (後述のループパターンの定義のために必要になる)。(g, ♢) は一つのゴール g がアンデベロップドノード ♢ につながっている GSN を表す。(g, e) は一つのゴール g が一つのエビデンスノード e につながっている GSN を表す。(g, st, (T1 , . . . , Tn )) は一つのゴール g がストラテジ st を通して子供の GSN 項 T1 , . . . , Tn につながっていることを示している。

2.2 パターン構文 (Normative)
D-Case 構文定義書では、[2] で定義されている、以下のパターン構文を形式的に定義する。
• パラメータ (Parameter)• マルチプリシティ (Multiplicity)• ループ (Loop)• チョイス (Choice)定義 2（GSN パターン構文 P (Normative)）d ::= ϵ | [x : τ = v]
P ::= α | ♢ | (g, ♢, d)| (g, e, d) | (g, st, (P1 , . . . , Pn ), d)| (g, st, c[i, j](P1 , . . . , Pn ), d)| (g, st, m[i, j](P ), d) | µα.P
[x : τ = v] はパラメータ x : τ に値 v を代入するパラメータ構文である。(g, st, c)[i, j](P1 , . . . , Pn ), d) はチョ
イス構文である。P1 , . . . , Pn の子供のパターンから、i ≤ k ≤ j を満たす整数 k 個のパターンを利用者が選択すると、トップゴールを g 、ストラテジを st、選択された子供のパターンを子供とするパターンに変換される。

7

(g, st, m[i, j](P ), d) はマルチプリシティ構文である。利用者が i ≤ k ≤ j を満たす整数 k 個の同じ子供のパ
ターン P を持つ、トップゴールが g 、ストラテジが st であるパターンに変換される。µα.P はループ構文である。利用者がループの展開を選択すると、P の中の α が µα.P 自身に変換される。変換規則は P1 −→ P2(図 7) の形で定義される。直感的な意味は、パターン P1 から P2 へ変換されるという意味である。
v(g, ♢, [x : τ = ⊥]) −→ (g[v/x], ♢, [x : τ = v])v(g, e, [x : τ = ⊥]) −→ (g[v/x], e[v/x], [x : τ = v])v(g, st, (P1 , . . . , Pn ),[x : τ = ⊥]) −→(g[v/x], st[v/x], (P1 [v/x], . . . , Pn [v/x]), [x : τ = v])(g, st, c[i, j](P1 , . . . , Pn ), d){s1 ,...,sk }−→(g, st, (Ps1 , . . . , Psk ), d)k(g, st, m[i, j](P ), d) −→ (g, st, (P, . . . , P ), d)(P repeats k times)µµα.P −→ P [µα.P/α]♢µα.P −→ ♢図7

パターン変換規則 P1 → P2 (Normative)

D-Case では、これらのパターン構文を GSN に定義するために、パターンノードを導入する。パターンノードは以下の属性を持つ。

• サブタイプ: パラメータ、チョイス、マルチプリシティ、ループのいずれか。
• i, j: Subtype がチョイスかマルチプリシティである場合、それらの定義にある i, j 。
• 葉ノード: サブタイプがループであった場合、ループの出口のノード。
これらの詳細は D-Case Editor、および論文 [3] を参照のこと。
パターンの例を示す (Informative)。P1 = (g1 , st1 , m[1, 3]((g2 , e2 , [F unctionN ame : string = ⊥]))) とする。g1 = “System is dependable,” st1 = “Argument over functions,” g2 = “[⊥] is dependable,” e2 =“Evidence for [⊥].”である。 P1 の D-Case Editor での表現は図 8 である。
このように、パターンノードを対応するゴール（もしくはストラテジ）ノードに、つなげることにより、パターンとして定義する。P1 の変換例を図 9 に示す。

2.3 モジュール構文 (Normative)
モジュールを含めた GSN の構文を以下に定義する。モジュール M は以下で定義される (Normative):

M ::= (T, f )T GSN 項であり、f はフラグである。f が true であるモジュールは、他のモジュールから参照可能である。
GSN 項 T は以下に拡張されて定義される。
T ::= ♢ | (g, ♢) | (g, e) | (g, st, (T1 , . . . , Tn ))| M | ref(M ) | away(M.g)
8

図8

図9

パターンの表現例 (Informative)

変換されたパターンの表現例 (Informative)

9ref(M ) は、参照されるモジュールである。away(M.g) は [2] で定義されている away goal である。モジュー
ル M の中のゴール g をトップとする GSN を参照している。away goal として参照されるゴールの f lag はtrue でなくてはならない。
モジュールシステム M はモジュールの集合として定義される (Normative)。

M = {M1 , . . . , Mn }.
Inter-module notation[2]I は M 上の Control Flow Graph として定義される (Normative)。
I = (M, →cr )エッジの添字 cr はコントラクトノードもしくはレスポンシビリティノードのいずれかである。M2 が M1 の中に現れるとき、M1 , M2 ∈ M で、M1 →cr M2 ∈ I である。M1 →cr M2 ∈ I において、cr がコントラク
トノードであるとき、M1 と M2 の依存関係に関する GSN がそのコントラクトノードにある。M1 と M2 の責任属性が定義されていて、それらが異なるとき cr はレスポンシビリティノードになる。M1 と M2 のレス
ポンシビリティ関係に関する GSN がそのレスポンシビリティノードにある。
例を示す (Informative)。Mdependability = (T1 , f1 ), Msecurity = (T2 , f2 ) とする。ここでT1 = (g1 , st1 , ((g2 , e2 ), Msecurity .g3 ))T2 = (g3 , e3 )である。T1 と T2 を図示すると図 10 になる。T1 の G 3 が away goal(緑色) であり、T2 の G 1 が参照されて

図 10

GSN 項 T1 (Mdependability ) と T2 (Msecurity )(Informative)

いるゴール (オレンジ色) である。

M = {Mdependability , Msecurity } の Inter-module notation は図 11 のようになる。図 11 では、コントラク
トノードが M1 と M2 のエッジ上に定義されている。

10

図 11

Mdependability 、Msecurity の Inter-module notation(Informative)

2.4 撤回可能 GSN 構文 (Normative)
D-Case において、ゴールの主張に対してそれが成り立たないことを示す議論を展開したり、ストラテジに対して、例外を指摘したりするなど、反論を記述できるように補助的な記法を追加したものが、撤回可能 GSN構文である。また、追加された補助的記法によって、ゴールやストラテジの状態を決定する意味論も与えることができる。例えば、ゴールの状態は、受理、却下、保留の三つがあり、それらが GSN 成長に従い、変化す
るため、撤回可能 GSN(defeasible GSN, dGSN) と呼ぶ。本稿では、撤回可能 GSN の構文のみを与える。各ノードの状態を決定する意味の与え方などは、文献 [5] を参照してほしい。
定義 3（撤回可能 GSN 項 T (defeasible GSN, dGSN)(normative)）

T ::= ♢ | (G, ♢) | (G, (A1 , . . . , An ))A ::= E | (ST, (T1 , . . . , Tm ))G ::= (g, presumption) | (g, except)
ST ::= (st, pro) | (st, con)
E ::= (e, pro) | (e, con)
ここで、T は、撤回可能に拡張された GSN、A は、ストラテジをルートとする GSN の部分項、G は属性付
きゴールノード、ST は属性付きストラテジノード、E は属性付きエビデンスノード、g は、ゴール、st は、
ストラテジ、e は、エビデンスを表す。定義 1 と同じように、コンテキストなどの他のノードは省略しているが、同じようにゴールやストラテジにコンテキストを対応付けてもよい。ここで、定義 1 の GSN との違いを

11

以下に列挙する。

1. 一つのゴールが複数のストラテジまたはエビデンスを持つことを許す。
2. ゴールが属性 presumption または except を持つ。
3. ストラテジが属性 pro または con を持つ。
4. エビデンスが属性 pro または con を持つ。
複数のストラテジまたはエビデンスを持つゴールは、一般には、の一つのゴールに対して複数の視点から議論する際に用いる。例えば、図 12 の dGSN は、システムの安全性について、ハザードリストに基づくものと、
安全ライフサイクルに基づくものの、二つの視点から議論している。ここで注意すべきは、一つのストラテジ
内では、サブゴール分割などで網羅性が問題になるが、視点がいくつあるのかは、ステークホルダーに依存するため、網羅性の問題にはならない。ゴールの属性のうち、presumption は通常の役割である、上位ストラ
テジをサポートするゴールを表す。一方、except は、上位ストラテジに対して、そのストラテジが成立しない事柄を主張するゴールで、dGSN における反論の記述法の一つである。トップゴールは必ず presumptionである。ツール上で表示する際には、presumption は省略できる。ストラテジの属性のうち、pro は通常のストラテジの役割である、上位ゴールをサポートするストラテジを表す。一方、con は、上位ゴールに対して反論を展開したり、ネガティブな側面を指摘するもので、dGSN における反論の記述法の一つである。ツール
上で表示する際には、pro は省略できる。エビデンスの属性のうち、pro は通常のエビデンスの役割である、
上位ゴールをサポートするエビデンスを表す。一方、con は、上位ゴールに対して反例を示したり、ネガティブな側面を表す証拠を示すもので、dGSN における反論の記述法の一つである。ツール上で表示する際には、

pro は省略できる。
始めに、一つのゴールに複数のストラテジを持つ GSN の例((G1, presumption),((S1, pro), (((G2, presumption), (Sn1, pro)),((G3, presumption), (Sn2, pro)))),((S2, pro), (((G4, presumption), (Sn3, pro)),((G5, presumption), (Sn4, pro)))))のツール上での表現例を図 12 に示す。ここで、上に述べたように、presumption のゴール、pro のストラテ
ジおよびエビデンスは、属性名は省略できるため、図中では特に示されていない。トップゴール G1 は二つのストラテジ S1 と S2 とによって支えられている。次に、反論を表すノードをもつ GSN の例((G1, presumption),((S1, pro), (((G2, presumption), (Sn1, pro)),((G3, presumption), (Sn2, pro)),((G4, except),((S2, pro), ((G5, presumption), (Sn3, pro))),((S3, con), ((G6, presumption), (Sn4, pro)))))))のツール上での表現例を図 13 に示す。ここで、G4 は、属性 except を持つゴールであり、ストラテジ S1 に対する反論を意味し、ステレオタイプにより属性 except を表している。また、S3 は、属性 con を持つストラテジであり、ゴール G4 に対する反論を意味し、ステレオタイプにより属性 con を表している。 さらに、撤12図 12 一つのゴールに複数のストラテジを持つ GSN の例 (Informative)

図 13

撤回可能 GSN の例 (Informative)

回可能 GSN においては、各ノードに対して、受理や却下、保留などの状態を決定することができるが、本稿では構文を与えることを主な目的としているため、ここでは省略する。詳しくは文献 [5] を参照してほしい。

13

3 D-Case XML Schema
3.1 D-Case XSD
D-Case の XML での定義を示す (Normative)。
<?xml version="1.0" encoding="utf-8"?><xs:schema targetNamespace="http://www.dependable-os.net/2013/11/dcase" elementFormDefault="qualified"
xmlns="http://www.dependable-os.net/2013/11/dcase" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:import namespace="http://www.dependable-os.net/dre" schemaLocation="dre.xsd"/><xs:element name="dcase"><xs:complexType><xs:sequence><xs:element name="description" type="xs:string" maxOccurs="1" minOccurs="1" /><xs:element name="properties" type="PropertiesType" /><xs:element name="parameters" type="ParametersType" maxOccurs="1" minOccurs="0"/><xs:element name="responsibility" type="ResponsibilityType" maxOccurs="1" minOccurs="0"/><xs:element name="nodes" maxOccurs="1" minOccurs="1"><xs:complexType><xs:sequence><xs:element name="node" minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:sequence><xs:element name="description"
type="xs:string" maxOccurs="1" minOccurs="1" /><xs:element name="properties"
minOccurs="1" maxOccurs="1" type="PropertiesType"/><xs:element name="parameters"
type="ParametersType" maxOccurs="1" minOccurs="0"/><xs:element name="responsibility"
type="ResponsibilityType" maxOccurs="1" minOccurs="0"/><xs:element name="d-script" minOccurs="0" maxOccurs="1"/></xs:sequence><xs:attribute name="name" type="xs:string" use="optional" /><xs:attribute name="type" use="required"><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="Goal" /><xs:enumeration value="Strategy" /><xs:enumeration value="Evidence" /><xs:enumeration value="Undeveloped" /><xs:enumeration value="Context" /><xs:enumeration value="Monitor" /><xs:enumeration value="Justification" />14<xs:enumeration value="Assumption" /><xs:enumeration value="Module" /><xs:enumeration value="Contract" /><xs:enumeration value="Action" /><xs:enumeration value="External" /><xs:enumeration value="Pattern" /></xs:restriction></xs:simpleType></xs:attribute><xs:attribute name="subtype" use="optional"><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="Parameter" /><xs:enumeration value="Loop" /><xs:enumeration value="Choice" /><xs:enumeration value="Multiplicity" /></xs:restriction></xs:simpleType></xs:attribute><xs:attribute name="id" use="required" type="UUID"></xs:attribute></xs:complexType></xs:element></xs:sequence></xs:complexType></xs:element><xs:element name="links" maxOccurs="1" minOccurs="1"><xs:complexType><xs:sequence><xs:element name="link"
maxOccurs="unbounded" minOccurs="0"><xs:complexType><xs:sequence><xs:element name="description" type="xs:string" /><xs:element name="properties" type="PropertiesType" /></xs:sequence><xs:attribute name="source" type="xs:string" use="required" /><xs:attribute name="target" type="xs:string" use="required" /><xs:attribute name="id" type="UUID" use="required" /><xs:attribute name="name" type="xs:string" /><xs:attribute name="type" use="optional" default="SupportedBy"><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="SupportedBy" /><xs:enumeration value="InContextOf" /><xs:enumeration value="Responsibility" /></xs:restriction></xs:simpleType></xs:attribute>15

</xs:complexType></xs:element></xs:sequence></xs:complexType></xs:element></xs:sequence><xs:attribute name="id" type="UUID" use="required" /><xs:attribute name="name" type="xs:string" use="optional" /><xs:attribute name="status" type="xs:string" use="optional" /></xs:complexType></xs:element><xs:simpleType name="UUID"><xs:restriction base="xs:string"><xs:minLength value="1" /></xs:restriction></xs:simpleType><xs:complexType name="PropertiesType"><xs:sequence><xs:element name="property"
minOccurs="0" maxOccurs="unbounded"><xs:complexType><xs:sequence></xs:sequence><xs:attribute name="name" use="required"><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="Attachment" /><xs:enumeration value="Message" /><xs:enumeration value="ParameterizedDesc" /><xs:enumeration value="Parent" /><xs:enumeration value="RefSource" /><xs:enumeration value="Flag" /><xs:enumeration value="Stakeholder" /><xs:enumeration value="IsNormal" /><xs:enumeration value="LeafNode" /><xs:enumeration value="I" /><xs:enumeration value="J" /><xs:enumeration value="SiblingOrder" /><xs:enumeration value="ValidUntil" /></xs:restriction></xs:simpleType></xs:attribute><xs:attribute name="value" type="xs:string" use="required" /></xs:complexType></xs:element></xs:sequence></xs:complexType><xs:complexType name="ParametersType"><xs:sequence>16<xs:element name="parameter"
maxOccurs="unbounded" minOccurs="1"><xs:complexType><xs:attribute name="name" type="xs:string" /><xs:attribute name="type" use="required"><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="string" /><xs:enumeration value="int" /><xs:enumeration value="double" /><xs:enumeration value="enum" /><xs:enumeration value="raw" /></xs:restriction></xs:simpleType></xs:attribute><xs:attribute name="min" type="xs:string" /><xs:attribute name="max" type="xs:string" /><xs:attribute name="digit" type="xs:string" /><xs:attribute name="inc" type="xs:string" /><xs:attribute name="items" type="xs:string" /><xs:attribute name="value" type="xs:string" /></xs:complexType></xs:element></xs:sequence></xs:complexType><xs:complexType name="ResponsibilityType"><xs:attribute name="name" type="xs:string" /><xs:attribute name="address" type="xs:string" /><xs:attribute name="icon" type="xs:string" /></xs:complexType></xs:schema>

3.2 OMG SACM への変換 (Informative)OMG SACM(Structured Assurance Case Metamodel) [4] は UML の標準化を行っている OMG(Object
Management Group)*3 で標準化されているアシュアランスケースのメタモデルである。もともとは GSN お
よび他の表記法を統合したメタモデルであったが、現在は、エビデンスのメタモデルと統合されている。しかしながら、アシュアランスケースの部分ではモジュールやパターンなどは標準化されていない。さらに、

SACM と GSN との対応関係は Normative として定義されておらず、Informative に紹介されているだけである [4]。D-Case では、基本 D-Case 構文と SACM の対応を、[4] の Informative をもとに定義している (表5)。D-Case の Schema は、OMG SACM への変換が容易であるように定義している。また、?? 節で導入した撤回可能 GSN は、OMG SACM における AssertedChallenge や AssertedCounterEvidence の表現を与えていると考えられるが、具体的な対応関係は今後与える予定である。

*3 http://www.omg.org

17

表5

GSN と SACM の対応 [4](Informative)

GSN

SACM

ゴール

Claim

コンテキストInformationElement

サポートリンク

AssertedInference もしくは AsseretedEvidence

コンテキストリンク

AsseretedContext

アンデベロップド

Claim ノードの ToBeSupported 属性 = true

3.2.1 D-Case Editor と Astah/GSN での SACM 変換の違い (Informative)
日本製のアシュアランスケースツールは主に D-Case Editor と Astah/GSN がある。表 6 に両者の SACM
対応の違いを示す。

4 参照実装D-Case Editor*4 には D-Case 構文定義書の定義内容が参照実装されている（ただし、2.4 節は除く）。

参考文献[1] Robin Bloomfield and Peter Bishop. Safety and assurance cases: Past, present and possible future an Adelard perspective. In Proceedings of the Eighteenth Safety-Critical Systems Symposium, Bristol,
UK, 2010.
[2] GSN

contributors.

GSN

community

standard

version

1.0,

2011.

http://www.

goalstructuringnotation.info.
[3] Yutaka Matsuno. A design and implementation of an assurance case language. In 44th Annual
IEEE/IFIP International Conference on Dependable Systems and Networks, DSN 2014, Atlanta,
GA, USA, June 23-26, 2014, pages 630–641, 2014.
[4] Object Management Group (OMG). Structured assurance case metamodel (SACM), 2012. http://www.omg.org/spec/SACM/.
[5] Toshinori Takai and Hiroyuki Kido. A supplemental notation of gsn aiming for dealing with changesof assurance cases. In 2014 IEEE International Symposium on Software Reliability Engineering
Workshops, Workshop on Open Systems Dependability (WOSD), pages 461–466, 2014.

*4 www.dcase.jp18

表 6 D-Case Editor と Astah/GSN での SACM 対応の違い (Informative)!"#$%

Astar GSN
D-Case Editor (Astar GSN&'())!"#$%&'()*+,-.
<argumentElement xsi:type="ARM:Claim" xmi:id="XMI*+,-. xmi:id=Goal.id
id=Goal.name/ID" id="Goal.Id" description="" content="Goal.Statement"
content=Goal.desc
assumed=false toBeSupported="true|false"/>/ toBeSupported01target&Undeveloped)*234true5※ assumed0false&123
Goal(6789:;<=>9-.
※ toBeSupported0UnDeveloped4true'560true<argumentElement xsi:type="ARM:ArgumentReasoning"
xmi:id="XMI*+,-./ID" id="Strategy.Id" description=""content="Strategy.Statement" describedInference="7!8&Goal
47!9:;2AssertedInference'xmi:id(<=-<>"?@A&
9:B"CDE)"/>※ ArgumentReasoningF0toBeSupported4CDGE*H2IJK
Undeveloped'LM0NO*P/;3※ QRS#*0describes*H24KTU'XSD*#V&/W:; !"#$%&'()*+,-.
xmi:id=Strategy.id
23※ XFdescribedChallenge/structureYZK[I0\]^_*`$ id=Strategy.namecontent=Strategy.desc%(ab0AssertedInference&\])&9:cCDEd'ef*H
describedInference=(AssertedInference90?@)taget#Goal
23※ gRh-i0describedInference'YZCD&`$%CD'jk #xmi:id
Strategy$%4l$*H2&mno24K`$%4p'efFCDqo2<argumentElement xsi:type="ARM:InformationElement"!"#$%&'()*+,-.(<type>0ABCDE)
xmi:id="XMI*+,-./ID" id="Solution.Id" description=""xmi:id=<type>.id
Solution
id=<type>.name(Evidence,Monitor content="Solution.Statement" url=""/>
content=<type>.desc,Contract,Action) ※ urlYZ4lr$%*H2IJs*CD3<argumentElement xsi:type="ARM:InformationElement"!"#$%&'()*+,-.
xmi:id="XMI*+,-./ID" id="Context.Id" description=""xmi:id=Context.id
content="Context.Statement" url=""/>
id=Context.name
Context※ urlYZ4lr$%*H2IJs*CD3
content=Context.desc

Justification<argumentElement xsi:type="ARM:Claim" xmi:id="XMI*+,-.
/ID" id="Justification.Id" description=""content="Justification.statement" assumed=false
toBeSupported=false>
Goal&\&FClaimF#t123Goal&'uv0K!InContextOf'w-<*H2x&"**P23Justification&Assumption0
assumed*uv12
assumed0false

Assumption<argumentElement xsi:type="ARM:Claim" xmi:id="XMI*+,-.
/ID" id="Assumption.Id" description=""content="Assumption.statement" assumed=true
toBeSupported=false>
Goal&\&FClaimF#t123Goal&'uv0K!InContextOf'w-<*H2x&"**P23Justification&Assumption0
assumed*uv12
assumed0true

Module,External(/;)

Pattern

F!"#$%&'()*+,-.
xsi:type="ARM:InformationElement"
xmi:id=Justification.id
id=Justification.namecontent=Justification.desc
assumedGHI (InformationElement#;J)
toBeSupporedGHI (InformationElement#;J)
F!"#$%&'()*+,-.
xsi:type="ARM:InformationElement"
xmi:id=Assumption.id
id=Assumption.namecontent=Assumption.desc
assumedGHI (InformationElement#;J)
toBeSupporedGHI (InformationElement#;J)<argumentElement xsi:type="ARM:Claim" xmi:id=<type>.id
id=<type>.name content=<type>.desc
parameterizedContent=<type>.parameterizedDesc
flag=<type>.flag refSource=<type>.refSource
attachment=<type>.attachment assumed=true
toBeSupported=false />※ <type>0!"#$%<argumentElement xsi:type="ARM:InformationElement"
xmi:id=Pattern.id id=Pattern.name content=Pattern.desc
parameterizedContent=Pattern.parameterizedDesc
flag=Pattern.flag refSource=Pattern.refSource
attachment=Pattern.attachment url=""
subType=Pattern.subType leafNode=Pattern.leafNode
i=Pattern.i j=Pattern.j parameterDefs=Pattern.parameterDefs
parameterVals=Pattern.parameterVals />(/;)
7!84Goal/Strategy'56<argumentElement xsi:type="ARM:AssertedInference" xmi:id="XMI*+,-./ID" id="SupportedBy.Id" source="7!8'xmi:id"
target="7!y'Goal(<=-<>"?@A&9:B"CDE)"
description="" content="SupportedBy.Definition"/>※ Strategy>'z9:;256*ctarget0Goal*H2x&F{
source…target4KMonitor…Action'56 (<type>0!"#|3}'IJKGoal->Strategy->Goal'56FNO12$%)AssertedInference01~&/23<argumentElement xsi:type="ARM:AssertedEvidence"※ [IK}'56F•D12id0KStrategy&source>7!9:; xmi:id=<type>.id id=<type>.name content=<type>.desc
2SupportedBy'ID&123
source="7!y'xmi:id" target="7!8'xmi:id"※ SupportedBy4Goal->Strategy'€*•‚9:;256'
description="" />AssertedInference0KNOab4ƒ„*0/;IJNO9/;3}o†‡'56 (<type>0!"#$%)
7!84Solution'56<argumentElement xsi:type="ARM:AssertedInference"<argumentElement xsi:type="ARM:AssertedEvidence" xmi:id="XMI xmi:id=<type>.id id=<type>.name content=<type>.desc*+,-./ID" id="InContextOf.Id" source="7!8'xmi:id"
SupportedBy
source="7!y'xmi:id" target="7!8'xmi:id"(Responsibility,Dc target="7!y'Goal" description=""description="" />content="SupportedBy.Definition"/>aseLink004c)※ ˆ‰&0xsi:type4)/2Š‹*13<argumentElement xsi:type="ARM:AssertedContext" xmi:id="XMI †Œ'YZF•;4HŽ[13*+,-./ID" id="InContextOf.Id" source="7!8'xmi:id"
xmi:id=InContextOf.id
target="7!y'Goal or Strategy" description=""
id=InContextOf.name
InContextOf
content="InContextOf.Definition"/>content=InContextOf.desc

19