日本ソフトウェア科学会第 30 回大会 (2013 年度) 講演論文集

D-Case 記述のためのドメイン特化言語の設計と実装
中山 裕介

志田 駿介

倉光 君郎

D-Case はシステムへの安全要求をゴール志向で分割し，記述していくための記法である．D-Case は木構造のドキュメントであり，専用の IDE などを利用して作成され，内部表現として XML などが用いられている．ただし，
XML の編集を IDE の補助無しに行うことは容易ではない．そこで我々は Markdown 記法を参考にした D-Caseを記述するための DSL を提案する．本論文では，我々が提案する言語の設計と実装について説明する．
D-Case is a notation to describe safety requirements of systems in a goal-oriented way. It is written in tree
structure with some dedicated IDEs, and described in XML as internal expression. However, it is diﬃcult
for us to edit the XML without using IDEs. Therefore, we propose a domain specific language to describe
D-Case in human understandable way. The syntax is similar to Markdown. In this paper, we explain about
design and implementation of our proposed language.

章では提案記法の実装方法を述べ，5 章で本論文を統1 はじめに括する．

D-Case は，システムのディペンダビリティ要求をGoal Structuring Notation(GSN) ベースで議論する

2 D-Case

ための手段として，安全工学分野からの利用が拡大しD-Case はシステムに関する議論とそのエビデンスている．現在，D-Case の編集手段としてはいくつかをもとにして，システムに関わる人たちの間でディの IDE が提供されているが，IDE の内部では D-Caseペンダビリティに関しての合意をはかる記法であり，のデータは XML や JSON 等のデータとして管理さAssurance Cases の拡張である． [3] [1] GSN [2] とれていて，人間が IDE の補助無しに編集を行うこという木構造で表現され，トップゴールはシステムのは困難になっている．本研究の目的は人間が IDE のディペンダビリティに関する命題である．トップゴー

補助無しに D-Case を編集することを可能にするこルはサブゴールに分割される．D-Case には大きく分とである．我々は D-Case の編集を目的としたドメイ

けて以下の 4 種類のノードが存在する．

ン特化言語（DSL）を提案し，D-Case 編集用の IDE• Goal:対象システムに関して議論したい命題

内部で用いられているデータ形式との相互変換器を• Strategy:ゴールをサブゴールに分ける時の考実装することで，人間が DSL を用いて D-Case を編集することを可能にした．本論文の構成は以下のようになっている．2 章で D-Case の概要と本研究の関連部分を述べ，3 章で DSL の設計について述べる．4
Design and Implementation of Domain Specific Lauguage for D-Case
Yusuke Nakayama, Shunsuke Shida, Kimio Kuramitsu, 横 浜 国 立 大 学, Yokohama National
University.

え方• Context:ゴールなどを考える時の前提にしている情報• Evidence:詳細化されたゴールを最終的に保証す
る根
実際の D-Case では上記の種類を形によって図 1 のように区別している．
これらの D-Case は D-Case Editor [4] などの IDE

付与するかどうかはユーザーに任されている．次に具体的な記述を述べる．今回提案する DSL を用いてD-Case を記述する際に，大きく分けてヘッダ部分とメイン部分が必要である．ヘッダの部分には D-Caseの名前を記述し，一方でメイン部分では D-Case を構成するノードの情報やそれらノード依存関係を記述する．各ノードの情報を記述する際には• ノードの種類
図1

ノードの種類とその形によって現在編集が可能となっている．

• ノード名• ノード IDをノード情報の先頭行に記述する．続いて改行で区切る形で3 言語設計• Description

我々が今回設計する DSL のベースとして，マーク• メタデータダウン言語を参考とした．という順に記述する．メタデータの記述に関しては，以下のように”—”で区切りを入れて記述する．

3. 1 マークダウン言語—

マークダウン言語は容易な読み書きを追求した，This is first metadata

XML などとは異なりタグを用いずにより直感的に記—述できる言語である．今回はこのマークダウン言語をThis is second Metadata

もとに DSL の設計を行った．

—
また，D-Case における各ノードの深さは，ノード

3. 2 提案する DSL の言語設計の種類を記述する際に先頭につける”*”の数で示す．

IDE の補助無しに D-Case を編集することを可能に

例えばノードの深さが 3 の Goal ノードの場合はすることを実現するために今回我々が提案する DSL***Goalの仕様として，まず D-Case のノードが保持していと記述する．ノード深さが変化するのは Goal ノーる情報について述べる．既存の IDE で記述されるドを新たに追加するときのみであり，他のノード

D-Case のノードは以下の情報を保持している．

（Strategy，Context，Evidence）の情報は Goal ノー• ノードの種類ドの情報の直下に記述し，ノードの深さはそのノード• ノード名が直接つながっている Goal ノードと同数とする．図• ノード ID2 は以上の我々が提案するマークダウン言語による記• Description

法と D-Case の対応関係の例を示している．

Description はそのノードに関する詳細の説明情報を保持している．これらの情報以外に，今回我々が4 実装設計した DSL にはメタデータという情報を保持させ実装をするにあたり，まず我々の提案する DSL やることができる．メタデータとはそのノードに関しその他の言語（XML，JSON）を抽象化したデータてユーザー自身が独自に追加できる情報であり，一構造（”DTree”と名づける）を定義した．このデータつのノードに対して複数のメタデータを保持させる構造は以下のようなクラスを作成して表現した．

ことができる．また，本研究では最初の 3 つの情報

Children 以外の各変数は前章で述べたノードの種は必須であるが，残りの 2 つの情報は必須ではなく，類などに対応している．Children はそのノードが持換する変換器を実装した．構文解析器の実装としては提案する DSL で表現されたデータを読み込み，”*”で分割しノードの種類の判定を行った上で，各ノードに対する関数を設けてそれぞれで処理を行う形をとった．また，変換器の実装としては DTree のデータを受け取って，TopGoal から順にその子ノードを辿っていき，構文解析器と同様に各ノードの種類に応じて関数を設けて処理を行う形をとった．

5 関連研究
本論文では IDE の内部表現との相互変換器を作成
図2

提案記法と D-Case の対応関係

したが，これとは別に D-Case Editor [4] では GUI メインの編集方法が研究されている．

12345678class DCaseNode {String NodeType;
String NodeName;
int Id;String Description;
MetaData[] MetaData;
DCaseNode[] Children;};

910111213class MetaData {String key;
String value;}

図3

DTree データ構造の実装

つ子ノードの情報を持たせている．メタデータは前述
したとおり複数の情報を保持できるように配列で表現している．上記のように基本的に Key と Value をセットにした情報を保持させる．今回は前章で述べた

DSL のデータ構造からこの DTree に変換する構文解
析器，ならびに DTree から DSL のデータ構造へと変

6 結論
今回，既存の IDE と相互変換可能でかつ容易にD-Case の編集を可能にする記法を提案し，実装した．
今後は，実際のシステムの連携に関して検討を行う．
謝辞本研究は，JST/CREST「実用化を目指した組込みシステム用ディペンダブル・オペレーティングシステム」領域の研究助成を受けて行われた．

参 考 文 献[1] : D-Case. http://dcase.jp.
[2] Tim, K. and Rob, W.: The Goal Structuring Notation A Safety Argument Notation, In Proc of DSN
2004, 2004.
[3] Tokoro, M.: Open Systems Dependability: Dependability Engineering for Ever-Changing Systems, CRC Press, 2012.
[4] Yutaka, M., Hiroki, T., and Yutaka, I.: A Dependability Case Editor with Pattern Library, Proceedings of the 2010 IEEE 12th International Symposium on High-Assurance Systems Engineering,IEEE Computer Society, November 2010.