付録 - IPA 独立行政法人 情報処理推進機構

大規模・複雑化した組込みシステム
のための障害診断手法
モデルベースアプローチによる事後 V&V の提案
付録
(Ver.1.0)
2015 年 3 月
Copyright© 2015, Information-technology Promotion Agency, Japan. All rights reserved.
目次
付録 ............................................................................................................................................ 1
付録 A
化学プラントシミュレーター .............................................................................. 1
付録 A-1
シミュレーターに対する要求仕様 ............................................................... 1
(1)模擬化学プラントの構成 .................................................................................. 1
(2)模擬化学プラントに対する安全制約と機能要求 ............................................ 2
(3)模擬化学プラントの機能の詳細 ...................................................................... 2
付録 A-2
化学プラントの動特性モデル ....................................................................... 3
(1)タンク 1 ............................................................................................................. 3
(2)タンク 2 ............................................................................................................. 4
(3)ポンプ ................................................................................................................ 4
(4)制御弁 CV1 ........................................................................................................ 4
(5)止め弁 SV1、SV2、SV3.................................................................................... 5
(6)排水弁 EV1、EV2 .............................................................................................. 5
(7)給水弁 FV2、フロート弁 .................................................................................. 5
(8)流動モデル ........................................................................................................ 5
(9)測定系 ................................................................................................................ 6
付録 A-3 MATLAB/Simulink によるシミュレーターの作成 ........................................... 7
付録 A-3.1 シミュレーターの構成 ............................................................................... 7
(1)「プラント」部の構成 ....................................................................................... 7
(2)「コントローラー」部の構成 .......................................................................... 10
付録 A-3.2 故障モデル ................................................................................................ 14
(1)緩和ロジックのバグ ....................................................................................... 14
(2)タンク 1 水位計指示のバイアス .................................................................... 15
(3)タンク 1 出口配管の詰まり ............................................................................ 15
(4)止め弁 SV2 の閉故障 ...................................................................................... 16
(5)タンク 1 入口配管の詰まり ............................................................................ 16
(6)排水弁 EV1 の固着 .......................................................................................... 16
(7)タンク 1 アラート水位計故障 ........................................................................ 17
(8)タンク 1 アラーム水位計故障 ........................................................................ 17
付録 A-3.3 GUI の概要 ................................................................................................. 18
(1)グラフ表示 ...................................................................................................... 18
(2)System Operation .............................................................................................. 18
(3)ミミック図 ...................................................................................................... 19
(4)操作ボタン ...................................................................................................... 19
(5)故障模擬 .......................................................................................................... 19
付録 A-3.4 状態遷移モデルの導入 ............................................................................. 20
付録 B
ソフトウェア検証のケーススタディ~要求仕様の検証事例~ .......................... 22
付録 B-1
課題 .............................................................................................................. 22
付録 B-2
結論 .............................................................................................................. 22
付録 B-3
調査方法 ....................................................................................................... 22
付録 B-3.1 2 つの方法 .................................................................................................. 22
I
付録 B-3.2 2 つの方法の連携 ....................................................................................... 23
付録 B-4
調査第 1 ステップ:要求仕様自体を診る .................................................. 24
付録 B-4.1 構文化手法による仕様内容の階層化 ....................................................... 25
付録 B-4.2 要求仕様の例 ............................................................................................. 26
付録 B-4.3 構文化手法による仕様内容の診断法 ....................................................... 27
付録 B-4.4 形式手法による仕様内容の証明法 ........................................................... 29
付録 B-4.4.1. 証明の準備:両手法の連携 .................................................................. 31
付録 B-5
調査第 2 ステップ:実装から要求仕様を診る .......................................... 34
付録 B-5.1 実装モデルタイプ A の障害 ..................................................................... 34
付録 B-5.2 実装モデルタイプ B .................................................................................. 38
付録 B-5.3 実装モデルタイプ C .................................................................................. 38
付録 B-5.4 実装モデルの障害や不具合の整理と障害原因診断 ................................ 38
付録 B-6
まとめと今後の課題 .................................................................................... 40
付録 B
参考文献、用語説明 ....................................................................................... 40
付録 C
モデル検査概要 .................................................................................................. 41
付録 C-1
モデル ........................................................................................................... 41
付録 C-2
モデル検査 ................................................................................................... 41
付録 C-3
意味モデル ................................................................................................... 42
付録 C-4
モデル検査アルゴリズム ............................................................................ 42
付録 C-4.1 CTL のモデル検査アルゴリズム ............................................................... 42
付録 C-4.2 LTL モデル検査アルゴリズム ................................................................... 44
付録 C-5
時間オートマトン ........................................................................................ 45
付録 C-6
その他、発展的なシステム......................................................................... 47
付録 C
参考文献 .............................................................................................................. 48
付録-II
図表目次
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
図
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
付録
A-1-1 模擬化学プラントの構成 ........................................................................... 1
A-3-1 化学プラントシミュレーターの全体構成 ............................................... 7
A-3-2 「プラント」部のモデル構成 .................................................................. 8
A-3-3 タンク 1 のモデル ..................................................................................... 8
A-3-4 タンク 2 のモデル ..................................................................................... 9
A-3-5 流動モデル ................................................................................................ 9
A-3-6 タンク 1 水位計のモデル ........................................................................ 10
A-3-7 フロート弁のモデル ............................................................................... 10
A-3-8 「コントローラー」部のモデル構成 ......................................................11
A-3-9 FV2 アクチュエーターのモデル ..............................................................11
A-3-10 SV3 アクチュエーターのモデル ........................................................... 12
A-3-11 CV1 制御系のモデル .............................................................................. 12
A-3-12 安全・緩和機能システムのモデル ....................................................... 13
A-3-13 緩和ロジック(タイプ B)のモデル(1/2) ................................................. 13
A-3-14 緩和ロジック(タイプ B)のモデル(2/2) ................................................. 14
A-3-15 緩和ロジック(タイプ A)のモデル(1/2) ................................................. 15
A-3-16 緩和ロジック(タイプ A)のモデル(2/2) ................................................. 15
A-3-17 SV2 アクチュエーターのモデル ........................................................... 16
A-3-18 EV1 アクチュエーターのモデル ........................................................... 16
A-3-19 化学プラントシミュレーターGUI 外観 ................................................ 18
A-3-20 状態遷移モデルを導入した「コントローラー」部の構成 .................. 21
A-3-21 緩和機能処理の状態遷移モデル ........................................................... 21
B-3-1 階層化法と証明法を用いた要求仕様の明確化手順 ............................... 24
B-4-1 システム事例:化学プラントシミュレーター ....................................... 25
B-4-2 要求仕様の階層的表現 ............................................................................. 26
B-4-3 事例:緩和操作 ........................................................................................... 26
B-4-4 要求開発プロセス .................................................................................... 27
B-4-5 構文化手法による要求分析 ..................................................................... 28
B-4-6Even-B による証明方法 ............................................................................ 30
B-4-7Even-B による証明方法(拡大図) .............................................................. 30
B-4-8 構文化手法による階層化 ......................................................................... 31
B-4-9Event-B によるモデルの記述 .................................................................... 32
B-4-10 構文化手法の階層図(拡大図) ............................................................ 33
B-4-11 Event-B でのモデル記述(拡大図) ...................................................... 33
B-4-12 構文化手法 SLP での論理記述モデル記述(拡大図) ......................... 33
B-5-1 実装モデルタイプ A................................................................................. 35
B-5-2 構文化手法による論理分析例 ................................................................. 35
B-5-3 構文化手法による自然言語による論理的な記述例 ............................... 36
B-5-4Event-B モデルと各イベントブロック ..................................................... 37
B-5-5 実装モデルタイプ B ................................................................................. 38
B-5-6 実装モデルタイプ C ................................................................................. 38
C-2-1 モデル検査 ............................................................................................... 41
C-3-1 Kripke Structure ......................................................................................... 42
C-4-1CTL のモデル検査 ..................................................................................... 43
付録-III
図 付録 C-4-2CTL モデル検査のサブアルゴリズム群(一部).................................... 44
図 付録 C-4-3EU の計算 .................................................................................................. 44
図 付録 C-6-1 待ち行列モデル ........................................................................................ 47
表
表
表
表
表
付録
付録
付録
付録
付録
B-3-1
B-4-1
B-4-2
B-5-1
B-5-2
調査ステップ ............................................................................................ 22
要求仕様例 ............................................................................................... 26
構文化手法による決定表 ......................................................................... 29
障害や不具合の整理 ................................................................................ 39
実装モデルの障害原因診断 ..................................................................... 39
付録-IV
付録
付録A 化学プラントシミュレーター
ここでは、システム障害原因診断のテストベッドとして作成した化学プラントシミュレ
ーターについて、基本的な要求仕様、化学プラントの動特性モデル、科学技術計算ツール
MATLAB/Simulink を用いて実現したシミュレーション・プログラムの概要を示す。
付録A-1
シミュレーターに対する要求仕様
(1)模擬化学プラントの構成
シミュレーションの対象とする模擬化学プラントは、図 付録 A-1-1 に示すように 2 つの
タンク、ポンプ、複数の弁、配管、及び計測制御系より構成される。
図 付録 A-1-1 模 擬 化学プラ ントの構 成
タンク 1 の断面積は 100cm 2 、タンク 2 の断面積は 200cm 2 であり、それぞれ底面から 60cm
と 50cm の高さの擁壁で仕切られた溢水受けを備えている。タンク 1 は、安全系(アラー
ムレベル、アラートレベル)と通常水位制御用の 2 系統の水位センサーを備え、通常水位
は 30cm、アラート水位は 40cm、アラーム水位は 50cm である。
主配管の断面積は 1cm 2 、ドレン配管の断面積は 2cm 2 である。ポンプの定格流量、回転
数はそれぞれ 6ℓ/min、600rpm である。SV1~SV3 は主配管の止め弁、CV1 は流量調整用の
制御弁、FV2 はタンク 2 の給水弁、EV1、EV2 はそれぞれタンク 1 及びタンク 2 の排水弁
である。また、ポンプの下流側の SV1、CV1 には定格時に 10%の流量を示すミニマムフロ
ー弁を設けている。給水弁 FV2 の下流にはタンク 2 の水位により開閉するフロート弁が設
けられており、給水時の流量は 0.5 ℓ/s である。タンク 2 の通常水位は 40cm である。
付録-1
(2)模擬化学プラントに対する安全制約と機能要求
上記構成のプラントに対して、以下の 4 つの機能が要求仕様として与えられた。
機能要求 1:タンク 1 を反応炉と想定し、その水位が一定の目標値になるように制御
する。
機能要求 2:タンク 2 はバッファータンクとし、タンク 1 への給水用の水を一旦保管
するために用い、また、タンク 1 からの排水を受けるために用いる。
機能要求 3:タンク 2 の水位が低下した場合はフロート弁で自動注水するが、排水機
能は持たない。
機能要求 4(安全要求)
:タンク 1 の水位がアラートレベル(40cm)を超えた場合、自動
的または運転員の手動要求でドレン配管の排水弁を開いて排水する。そ
の際、ドレン配管からの排水速度は、ポンプの最大容量での注水速度を
上回るよう設計する。
また、プラントのハザードとして、タンク 1 ならびにタンク 2 の溢水を仮定し、タンク
1 からの溢水防止を安全制約とする。配管からのリークは、インシデント(軽微故障)扱
いである。
(3)模擬化学プラントの機能の詳細
模擬化学プラントは、通常の起動、停止の他、前記の安全制約を担保するための 2 つの
機能、即ち緊急排水機能と緩和操作機能を持つ。それぞれの詳細は以下の通りである。
緊急排水機能:タンク 1 水位のアラームレベル越え、または、運転員指示で、弁 EV1、
EV2 を開いて、タンク 1、2 の水を直接排水路に排水する。併せて、ポ
ンプを停止し、止め弁 SV1、SV2、SV3 を閉じる。運転員指示の場合
の再確認機能は設けない。タンク 2 の溢水防止のアラームは設けない。
緩和操作機能:タンク 1 アラートレベル越え、または、運転員指示で、5 秒間 EV1 を
開き、その後 10 秒だけ操作の受付を禁止する。ポンプと制御系は動作
状態のままとする。
起動機能
:給水弁 FV2 を開いてタンク 2 が通常水位になるまで注水する。排水弁
の制御はしない。一定時間後に、止め弁 SV3 を開いて、ポンプを起動
する。ポンプ起動後、止め弁 SV1 と制御弁 CV1 を開いてタンク 1 に
注水し、水位が一定レベルに達したら止め弁 SV2 を開き、制御弁 CV1
を用いた PI 制御モードに移行する。
これら一連の動作はシーケンス制御で行う。ミニマムフロー弁は開い
たままで制御はしない。
停止機能
:起動時と逆のシーケンスで、 ポンプを停止し、止め弁(SV1、SV2、
SV3)、排水弁(EV1、EV2)、注水弁(FV2)を閉じる。排水弁は開けず、
水は張ったままとする。
付録-2
付録A-2
化学プラントの動特性モデル
前節で与えられた要求仕様を満たす化学 プラントシミュレーターを実現するためには、
プラントの各状態量の動的な変化をモデル式で記述する必要がある。最も注目 すべき状態
量はタンク 1 の水位であるが、プラントを構成するすべての機器の状態変化が、タンク 1
からの流出量あるいは流入量の変化に影響を与えることによって、直接的、間接的にタン
ク 1 の水位に影響を及ぼす。従って、ここではプラントを構成する機器毎にその状態量の
変化を記述する。
(1)タンク 1
タンクの断面積を A 1 、水位を L1 、流出配管の断面積を S 1 とすると、タンク 1 の水面と
流出配管の開放端の圧力水頭はゼロであり、A 1 ≫S 1 の場合、流出速度 v 1 は v1 
2gL1 とな
る。即ち、流出量 Fout1 は流出係数を c 1 とすると、 Fout1  c1S1v1  1 L1 と表わされる。流
出係数 c 1 は、摩擦等によるエネルギー損失を考慮した速度係数と、縮流による有効断面積
の減少を考慮した縮流係数(≒0.65)の積(≒0.6)で与えられる。実際には出口弁 SV2 の開度
によってこの流量は制限される。
タンク 1 の水位が 60cm 高さの擁壁を越えて溢水を生じた場合、その後も流入量が流出
量より多い状態が続くと、タンク 1 の水位は 60cm に維持され、溢水はすべてタンク 2 に
流入する。一方、流入量が流出量よりも少なくなった場合には、溢水は止まり、タンク 1
の水位は 60cm 以下に減少する。
これより、タンク 1 のモデルは次式のように表現される。
A1
dL1 F1 , if L1  60cm or

if otherwise
dt  0 ,
F1  Fin  Fout1  Fdrain1  Fvap1
F1  0
Fout1   SV 2  X SV 2  L1 100 ,
X SV 2はSV 2開度(%)
Fdrain1   EV 1 X EV 1  L 1 100 ,
X EV 1はEV 1開度(%)
Fvap1  const.
ここで、⊿F1 はタンク 1 への流入量と流出量との差、即ち正味の流入量 (cm3 /s)を表す。
F in は主配管の流量であり、後述するようにポンプ回転数と止め弁、制御弁の開度で決まる。
Fout1 は SV2 からの流出量、Fdrain1 は排出弁 EV1 からの流出量、F vap1 はタンク水面からの蒸
発量である。但し、現在蒸発量はゼロとしている。
なお、現在タンク 1 出口の SV2 は止め弁となっているが、ポンプ流量が定格状態で、タ
ンクの水位が通常水位にあるとき、SV2 からの流出量がポンプ流量と一致しなければ定常
状態を維持することができない。SV2 が制御弁であったとすると、定常となる開度は 68.7%
と計算される。そのため、ここでは SV2 を止め弁とし、これを全開にした場合に、丁度定
格流量が維持されるような α SV2 値を有するものとした。
以上に示した通り、流出量の式は非線形であるが、タンクが空の状態から溢水状態まで
の大きな水位変化を模擬できるように、モデル式は線形化せず、上記の式のまま用いるも
のとする。擁壁からの溢水が生じた場合、溢れた水はオーバーフロータンク内で液面を構
成せず、そのままタンク 2 に流入するものとする。このとき水位 L1 の変化は無く、正味の
流入量⊿F1 が正の値を持てば、⊿ F1 はそのままタンク 2 へ流入する。
付録-3
(2)タンク 2
タンク 2 の水位変化も、タンク 1 と同様のモデル式で記述できる。
A2
if L2  50cm or F2  0
dL2 F2 ,

if otherwise
dt  0 ,
F2  Fout1  Fout2  Fovf  F fdw  Fdrain2  Fvap2
Fout2  Fin
F , if L1  60cm and F1  0
Fovf   1
if otherwise
 0,
F fdw  500  X FV 2 100 , フロート弁開時, X FV 2はFV 2開度(%)
Fdrain2   EV 2 X EV 2  L2 100 ,
X EV 2はEV 2開度(%)
Fvap2  2  Fvap1
ここで、⊿F2 はタンク 2 への正味の流入量(cm 3 /s)である。また、Fout2 は止め弁 SV3 から
主配管を流れる量であり、従ってタンク 1 への流入量 Fin と同じ値である。Fovf は既に述べ
たタンク 1 からの溢水量である。プラント全体への給水流量である F fdw は、給水弁 FV2 が
開かれた状態において供給される。フロート弁は、タンク 2 の水位 L 2 が通常水位より 1cm
以上低い場合に開き、通常水位に達した時に閉じるものとする。 Fdrain2 は排水弁 EV2 から
の流出量、F vap2 はタンク水面からの蒸発量である。タンク 2 の断面積がタンク 1 の 2 倍で
あるため、蒸発量もタンク 1 の 2 倍となるが、現在は蒸発量をゼロとしている。
(3)ポンプ
ポンプ回転数 N p (rpm)は次式のように時定数 T p =2 s の一次遅れ特性を示すものとする。
回転数設定値 N s は、起動時には定格 N 0 =600 rpm、停止時にはゼロである。
Tp
dN p
dt
 Ns  N p
プラントの起動時には、タンク 2 の水位が通常水位の 95%に達した後、5s 待ってポンプ
を起動するものとする。
(4)制御弁 CV1
制 御 弁 の 開 度 X CV1 (%) の 変 化 は 、 開 度 要 求 X CV1,d (%) の 変 化 に 対 し て 、 無 駄 時 間
delayCV1=0.1s と、減衰係数 ζ=0.8、非減衰固有角周波数 ω=2π(rad/s)の二次遅れとの 2 つを
併せた応答特性を示すものとする。起動時には、ポンプ回転数が定格の 95%を超えた時点
で通常運転開度 X CV1,0 =70%が要求開度として設定される。
X CV 1 
2
 e delayCV1s  X CV 1,d
s2  2    s   2
その後、タンク 1 の水位が通常水位の 50%を超えた時点で、タンク 1 水位及びポンプ流
量を制御変数、CV1 開度を操作変数とする、PI 制御による自動制御が開始される。流量、
水位ともに測定値を用いるため、観測雑音が含まれており、CV1 の頻繁な動きを抑制する
ために次式のように±0.5cm の不感帯を設けている。
付録-4
X CV 1,d  X CV 1, 0  PI out

PI out  Pgain  xDB  I gain   xDB dt

 xin  0.5 , if xin  0.5

xDB   0 , if  0.5  xin  0.5
 x  0.5 , if x  0.5
in
 in
xin  L1,obs  L1, 0  Qobs  Q0  A1
ここで、L1,obs 、Q obs はタンク 1 水位と流量の測定値、L1,0 、Q 0 はそれぞれの通常値、X DB
は不感帯出力、PI out は PI 制御器出力を示し、比例ゲイン P gain =5、積分ゲイン I gain =0.1 とし
ている。
(5)止め弁 SV1、SV2、SV3
これら 3 つの止め弁開度の変化は、それぞれの開度要求の変化に対して何れも時定数
0.1s の一次遅れ応答特性を示すものとする。プラントの起動時には、タンク 2 の水位が通
常水位の 95%に達した後、4s 待って SV3 の開度要求が 100%に、またポンプ回転数が定格
の 95%に達した時点で SV1 の開度要求が 100%に、それぞれ設定されるものとする。そし
て、タンク 1 の水位が通常水位の 95%を超えた時点で SV2 の開度要求が 100%に設定され
る。
(6)排水弁 EV1、EV2
2 つの排水弁はそれぞれの開度要求の変化に対して何れも時定数 0.1s の一次遅れ応答特
性を持つものとする。緊急停止時には、EV1、EV2 共に全開となり、排水完了後に全閉と
なる。緩和操作機能が働いたときは、EV1 の要求開度が 5s 間だけ 100%となる。
(7)給水弁 FV2、フロート弁
給水弁 FV2 は開度要求の変化に対して時定数 0.1s の一次遅れ応答特性を持つものとする。
FV2 はプラント運転員の起動指令と同時に開度要求が 100%となり、緊急停止あるいは停
止の指令で開度要求が 0%となる。一方、フロート弁は、タンク 2 の水位が通常水位より
1cm 以上低い場合は全開となって、給水弁が全開状態で 0.5 ℓ/s の水をタンク 2 に供給し、
通常水位に到達した時点で全閉となる。
(8)流動モデル
タンク 2 の出口からタンク 1 の入口に至る流路の流量 Q (ℓ/min)は、ポンプ回転数と流路
に位置する複数の弁、SV1、CV1、SV3 の開度に比例して変化する。本来は、定格回転時
の流量 Q 0 =6 ℓ/min は、ポンプの流動特性と各弁の通常運転開度における流動抵抗によって
決まるが、ここでは簡単のために、回転数 N p と各弁の開度から次式で流量を求めることと
した。
Q
N p  X CV 1  X SV1  X SV 3
N p ,0  X CV 1,0  X SV1,0  X SV 3,0
 Q0
ここで、X k 、X k,0 はそれぞれ弁 k の現在の開度、通常運転時の開度を表す。
こうして求めた流量に対して、標準偏差で 2%程度のゆらぎを加えた値を実際流量とす
る。
付録-5
(9)測定系
模擬化学プラントには、図 付録 A-1-1 に示したように、タンク 1、2 の水位を連続的に
測定するための水位計と、ポンプ流量を測定するための電磁流量計、ポンプ回転数を測定
するための速度計、制御弁 CV1 の開度を測定するための開度計を備える。これらの連続式
測定系の他、タンク 1 の水位がアラートレベルあるいはアラームレベルにそれぞれ到達し
たことを検出する接点式水位計と、各弁の全開あるいは全閉状態を検出するためのリミッ
トスイッチとを備える。
シミュレーターにおいては、連続式のタンク水位計、ポンプ流量計、ポンプ速度計、制
御弁開度計はすべて時定数 0.1s の一時遅れ系で模擬し、2 つのタンクの水位信号には通常
時に標準偏差で 0.1cm 程度の観測雑音を加えるものとする。
付録-6
付録A-3
MATLAB/Simulink によるシミュレーターの作成
化学プラントシミュレーターの動作を再現するためには、前節に示したモデルをプログ
ラミングすると共に、シミュレーションの実行とを制御し、結果として得られる各種の状
態量の変化を表示するためのグラフィカルなユーザー・インターフェイス(GUI)を備え
る必要がある。さらに、事後 V&V 検証用のテストベッドとするためには、正常状態のみ
でなく、様々な故障や異常を模擬できねばならない。ここでは、モデリングやシミュレー
ションに適しているとされる科学技術計算ツール MATLAB 及び Simulink を用いて作成し
たシミュレーターの概要を示す。
付録A-3.1
シミュレーターの構成
Simulink を用いて実現した化学プラントシミュレーターの全体構成を図 付録 A-3-1 に示
す。図に見る通り、シミュレーターは、前節に示した化学プラントの動特性モデルを
Simulink のブロックモデルとして記述した「プラント」部と、化学プラントの緊急排水機
能、緩和操作機能、起動・停止機能を実行する「コントローラー」部から成るフィードバ
ック系として構成されている。図の左下に示すように、運転員が GUI を介して化学プラン
トの起動、あるいは緊急排水、あるいは緩和操作、を指令した時にそれぞれ「 1」となる 3
変数、
「startup」、
「emergency」、
「mitigateM」、が「コントローラー」部への外部入力となっ
ている。
図 付録 A-3-1 化 学 プラント シミュレ ーター の 全体構成
(1)「プラント」部の構成
「プラント」部は、図 付録 A-3-2 に示すように、2 つのタンク、ポンプ、8 つの弁、フロ
ート弁、流動モデル、及び多数のセンサー・モデルから構成されている。
付録-7
図 付録 A-3-2 「 プ ラント」 部のモデ ル構成
一番複雑なモデルはタンク 1 であり、その構成を図 付録 A-3-3 に示す。図中に示されて
いる「T1_ovfLevel」はタンク 1 の溢水受けの擁壁高さであるが、これらの定数は Simulink
モデルには変数として与えておき、モデルを起動する際に実行されるプリロード関数に お
いて、すべての変数の値を読み込むようにしている。
図 付録 A-3-3 タ ンク 1 のモ デル
同様に、タンク 2 のモデルを図 付録 A-3-4 に示す。
付録-8
図 付録 A-3-4 タ ンク 2 のモ デル
流動モデルは、図 付録 A-3-5 に示すように、流量の平均値に対して常に同程度の割合と
なるように、平均値で規格化したゆらぎをプロセス雑音として加えている。
図 付録 A-3-5 流 動 モデル
ポンプと、制御弁 CV1 以外の弁とは何れも一次遅れ特性であり、また連続式測定系も す
べて一次遅れ特性である。ここでは、観測雑音を含むタンク 1 水位計のモデルを、一次遅
れ特性を持つモデルの例として図 付録 A-3-6 に示す。
付録-9
図 付録 A-3-6 タ ンク 1 水位 計のモデ ル
接点式水位計と、各弁のリミットスイッチ、及びフロート弁のモデルには、ヒステリシ
ス特性のモデル化に適した Simulink のリレー・ブロックを用いている。例としてフロート
弁のモデルを図 付録 A-3-7 に示す。
図 付録 A-3-7 フ ロ ート弁の モデル
(2)「コントローラー」部の構成
「コントローラー」部は、図 付録 A-3-8 に示すように、プラントから得られる状態変数
と運転操作で変化する指令変数を入力とし、ポンプへの速度要求と 7 つの弁への開度要求
を出力とする「アクチュエーター」群と、安全・緩和機能システム、CV1 制御系、及び
GUI システムより構成される。本来の「アクチュエーター」は、入力エネルギーを物理的
運動に変換する機械・電気系の中の機械要素を指すが、本シミュレーターでは機械要素は
すべて「プラント」部の一次遅れ特性あるいは二次遅れ特性に含まれるものとし、CPU を
含む電気要素をすべてアクチュエーターに含めている。
付録-10
図 付録 A-3-8 「 コ ントロー ラー 」部 のモデル 構成
GUI については付録 A-3.3 で述べることとし、ここでは先ずアクチュエーターの例とし
て、EV1、EV2 のアクチュエーターと共に最も簡単な給水弁 FV2 のアクチュエーター・モ
デルを図 付録 A-3-9 に示す。同図において、入力となるのは GUI からの起動指令「startup」
であり、この値が「1」となることで、出力である FV2 開度要求が初期開度「X0fv2(=0%)」
から通常開度「fv2_X0(=100%)」に切り替わるようになっている。このようなシーケンス
制御に、Simulink のスイッチブロックを用いている。
図 付録 A-3-9 FV2 ア クチュ エーター のモデル
図 付録 A-3-10 には、より複雑な止め弁 SV3 のアクチュエーター・モデルを示す。プラ
ント起動時には、タンク 2 の水位が通常水位の 95%に達した後、4s 待って SV3 の開度要求
を初期開度「X0sv3(=0%)」から通常開度「sv3_X0(=100%)」に切り替わるように組まれて
いる。タンク 2 水位の判定には Simulink のリレー・ブロックを、時間遅延には輸送遅れブ
ロックを用いている。他のアクチュエーターについても同様である。
付録-11
図 付録 A-3-10 SV3 ア ク チュ エーター のモデル
次に、制御弁 CV1 の制御系モデルを図 付録 A-3-11 に示す。
図 付録 A-3-11 CV1 制 御 系の モデル
タンク 1 の水位が通常水位の 50%を超えている条件で、タンク 1 水位とポンプ流量のそ
れぞれの通常値からの偏差の重み付け加算値を制御変数とする PI 制御が行われる。但し、
測定信号にはゆらぎがあるため、CV1 のモデル式の説明において述べたように、制御変数
の値が±0.5cm 以下の場合には制御動作を行わないよう、不感帯ブロックを用いている。
また、自動制御の条件が解除された場合、PI 制御器の出力をリセットするようにしている。
最後に、安全・緩和機能システムのモデルを図 付録 A-3-12 に示す。タンク 1 がアラー
ム水位を超える(L1Alarm=1)か、緊急停止操作が行われた場合(emergency=1)には、排水弁
EV1 に無条件で全開要求が出力される。タンク 1 がアラート水位を超える(L1Alert=1)か運
転員による緩和操作が行われた場合(mitigate=1)には、パラメータ designError の値によって
選択された緩和ロジックによる処理が行われる。
付録-12
図 付録 A-3-12 安 全 ・緩和機 能システ ムのモデ ル
通常は designError=0 として、図 付録 A-3-13 に示すロジックのモデルが実行される。
図 付録 A-3-13 緩 和 ロジック (タイプ B)の モデル (1/2)
このロジックでは、常に運転員による操作が優先される。図中のタイマーは、次 図 付
録 A-3-14 に示すように、EV1 を開く時間(5s)と、一度緩和操作が開始された後に続く緩和
操作を禁止する時間(15s)、の制御を行う部分である。
付録-13
図 付録 A-3-14 緩 和 ロジック (タイプ B)の モデル (2/2)
付録A-3.2
故障モデル
システムのシミュレーターを用いて障害原因診断を行う場合、一般には、対象システム
に想定される様々な故障を模擬し、観測されている事象と比較すると言うアプローチをと
る。ここでは、模擬化学プラントに想定される故障の中から、安全に係るもの、言い換え
ればタンク 1 水位の上昇を引き起こす可能性のあるものを選択して、前記のモデルに組み
込んだ。以下、これらの故障の内容と、そのモデルについて記す。
(1)緩和ロジックのバグ
実プラントの安全・緩和機能システムは、CPU 上に組み込まれたソフトウェアとして実
装されると考えられる。ソフトウェアのバグは故障とは言えないが、一定の条件が満たさ
れた時に顕在化し、想定外の動作を引き起こす可能性がある。
例えば、タンク 1 の水位がアラート水位を超えて緩和動作が行われた後、 15s の緩和操
作禁止期間の間に再度水位が上昇してアラート水位を超えた時、図 付録 A-3-13、図 付録
A-3-14 に示した本来の緩和ロジックであれば、運転員が緩和操作を要求した場合には直ち
に排水弁 EV1 が作動する。これに対して、図 付録 A-3-15、図 付録 A-3-16 に示す緩和ロ
ジック(タイプ A)の場合には、同じ事態において運転員が緩和操作を要求しても受け付
けられない。
先に図 付録 A-3-12 に示した通り、パラメータ designError の値を「1」にすることで、
このロジックを選択することができる。
付録-14
図 付録 A-3-15 緩 和ロジ ック (タイプ A)の モ デル (1/2)
図 付録 A-3-16 緩 和ロジ ック (タイプ A)の モ デル (2/2)
(2)タンク 1 水位計指示のバイアス
プラントが自動制御運転中に、タンク 1 の実水位ではなく、水位計の指示が通常水位よ
り 0.5cm 以上低下方向にバイアスした場合、これを補償するために制御弁 CV1 の開度が増
し、実水位が上昇する。このような故障を模擬するため、先に図 付録 A-3-6 に示した水位
計 1 のモデルに、負のバイアス(LevelBias)を加えられるようにした。
(3)タンク 1 出口配管の詰まり
止め弁 SV2 が取り付けられている配管の何処かに詰まりが生じる故障である。 図 付録
A-3-3 に示したタンク 1 のモデルにおいて、SV2 流量(SV2_Flow)を出力するゲイン・ブロ
ックの値(Tank1OutArea)を、通常時の「1」から小さくすることにより、この故障を模擬す
る。
付録-15
(4)止め弁 SV2 の閉故障
SV2 の開度が急に低下する故障であり、前記出口配管の詰まりと同様の影響を 与え る。
本シミュレーターでは、図 付録 A-3-17 に示す SV2 アクチュエーターのモデルにおいて、
通常時の開度要求値(sv2_X0)に掛けるゲイン・ブロックの倍率(SV2PosDemand)を通常の「1」
から短時間のうちに小さくして行くことでこの故障を模擬する。
図 付録 A-3-17 SV2 ア ク チュ エーター のモデル
(5)タンク 1 入口配管の詰まり
この故障は、ポンプ出口からタンク 1 入口に至る配管の何処かで詰まりが生じるもので、
タンク 1 の水位は低下するため、安全系が作動するものではないが、一方のタンク 2 の水
位が上昇する。シミュレーターでは、図 付録 A-3-5 に示した流動モデルにおいて、最後に
流量 Q を出力するゲイン・ブロックの値(pipeArea)を通常の「1」から小さくすることによ
り、この故障を模擬する。
(6)排水弁 EV1 の固着
通常時「閉」状態にある EV1 が、閉状態のまま固着するという故障である。従って、こ
の故障だけが生じた場合には運転状態に影響を与えない。排水弁を開く必要が生じた時に
初めて異常が顕在化する。
この故障は、図 付録 A-3-18 に示す EV1 アクチュエーターのモデルにおいて、開度要求
値に掛ける定数(EV1PosDemand)の値を通常の「1」から「0」にすることで模擬する。
図 付録 A-3-18 EV1 ア ク チュ エーター のモデル
付録-16
(7)タンク 1 アラート水位計故障
タンク 1 がアラート水位に達したにも関わらず、それが検知されないと言う故障である。
シミュレーターでは、接点式水位計の動作値(Tank1_alertLevel)に定数(AlertFactor)を掛けて
おき、その定数値を通常の「1」からずっと大きな値に変えることにより、この故障を模擬
する。
(8)タンク 1 アラーム水位計故障
前記と同様で、接点式アラーム水位計の故障であり、模擬方法も同様である。
付録-17
付録A-3.3
GUI の概要
化学プラントシミュレーターにおける GUI では、シミュレーターの実行を制御する機構、
化学プラントの運転操作を行う機構と化学プラントの運転状況を表示する機構を備えてい
る。あわせて、故障模擬を行う機構を備えている。外観を以下に示す。
図 付録 A-3-19 化 学プラ ント シミュレ ーター GUI 外 観
グラフィックのベース作成には MATLAB の GUI アプリケーション構成ツールである
GUIDE を利用し、シミュレーション状態の反映については別途定期的に描画を実行してい
る。詳細について以下で説明する。
(1)グラフ表示
時間遷移によるセンサー値の変化を描画する項目である。
タンク 1 水位(cm)
時間ごとのタンク 1 水位センサーの測定値を示す。
タンク 2 水位(cm)
時間ごとのタンク 2 水位センサーの測定値を示す。
ポンプ流量(cm^3/s)
時間ごとの電磁流量計の測定値を示す。
CV1 開度(%)
時間ごとの CV1 開度センサーの測定値を示す。
縦軸の情報は Simulink における GUI ブロックへの入力データを、横軸の情報はシステム時
間からシミュレーション開始時間を引いた値を使用している。図 付録 A-3-19 にはプラン
トが起動して 20s 後からの変化が示されており、タンク 2 は既に通常水位 40cm にある。
その後、ポンプが起動し、CV1 開度が 70%の状態でタンク 1 の水位が上昇しており、通常
水位の半分に達した時点で CV1 の自動制御が始まり、タンク 1 の水位が通常の 30cm まで
上昇を続けている。流動モデルに加えたシステム雑音と水位計の観測雑音により、何れの
信号にも実プラントの場合のようにゆらぎが現われている。
(2)System Operation
シミュレーターの実行を制御するボタン項目である。
Start
シミュレーションを開始する。アプリ起動時、シミュレーション停止中以外は
付録-18
操作無効としている。
Pause
シミュレーションを一時停止する。シミュレーション動作中以外は操作無効と
している。
Restart シミュレーションを再開する。シミュレーション一時停止中以外は操作無効と
している。
Stop
シミュレーションを停止する。シミュレーション動作中以外は操作無効となる。
(3)ミミック図
化学プラントの運転状況を表示する項目である。
タンク
実水位に合わせて水色部分が増減する。タンク 1 に関しては 40cm を超
えると水色が黄色に、50cm を超えると赤色となる。各水位は Simulink の
Tank ブロックの出力信号をそのまま反映させることで、実際の水位をそ
のまま表示している。
フロート弁
タンク 2 の実水位に合わせてフロートが昇降する。昇降には上限、下限
があり、フロートの上限より水位が高い場合は上限の高さ、フロートの下
限より水位が低い場合は下限の高さで表示される。フロート弁が閉じてい
る場合は四角部分が赤色に、開いているときは緑色で表示される。
各バルブ
閉じている場合は赤、半開の場合は赤と水色、全開の場合は水色 となる。
各バルブの上端/下端センサーの値に基づいて表示を行っている。
ポンプ
ポンプ流量に応じてブレード回転速度が変化する。ポンプ速度センサー
の値に基づいて表示を行っている。
状態表示パネル プラントの状態に応じて、運転中、停止中、緩和操作作動、安全系作
動の各左側にあるランプが点灯、若しくは消灯する。Simulink 上の状態値
(startup,mitigate1,emergency)に基づいてそのまま表示している。
(4)操作ボタン
化学プラントの運転操作を行う項目である
起動
プラントを起動する。startup を 1 にする。
停止
プラントを停止させる。startup を 0 にする。
緩和操作
緩和操作を実施する。mitigate1 を 1 にする
緊急停止
緊急排水を実施する。emergency を 1 にする
(5)故障模擬
各故障模擬を実施する項目である。
緩和ロジックバグ 緩和系作動中(5 秒の EV1 開及びその後 10 秒の禁止区域を指す)かつ
タンク 1 水量が 40cm を超えている場合(L1Alert センサーが検知して
いる場合)に手動の緩和操作を行った場合に、論理設計ミスにより、
以後タンク 1 水量が 40cm 未満になるまで手動操作を受け付けなくな
るソフトウェア起因の障害を発生させる。通常時は緩和系作動により
タンク 1 水量が 40cm を下回るため、手動操作が効果をなすことと、
EV1 開状態で手動操作が利かないこと、後に(タンク 1 水量が 40cm 未
満の状態で)手動操作を再度実行して動作することのテストだけでは
特定できない障害である。
付録-19
水位計バイアス
タンク 1 水位計が実水位より低い値を計測する、センサー故障を発生
させる。システム中の時間換算で 30 秒毎にバイアスは大きくなり、
60 秒後にバイアスは最大値となる。チェックを入れて更新ボタンを
押すことで、LevelBias の値を 0 から-15 に 60 秒かけて 2 段階で変更
している。チェックを外して更新ボタンを押した場合は、即座に
LevelBias を 0 に変更する。
出口配管つまり タンク 1 からタンク 2 への排水が止まる、配管が詰まる故障を発生さ
せる。チェックを入れて更新ボタンを押すことで Tank1OutArea の値を
1 に変更している。チェックを外して更新ボタンを押した際は 0 に変更
している。
SV2 閉故障
SV2 が閉状態となる故障を発生させる。システム中の時間換算で 30
秒毎に SV2 開度が減少し、60 秒後に完全に閉状態となる。チェックを
入れて更新ボタンを押すことで SV2PosDemand の値を 60 秒かけて 1 か
ら 0 に 2 段階で変更している。チェックを外して更新ボタンを押した
際は即座に 1 に変更している。
入口配管つまり タンク 2 からタンク 1 への給水が止まる、配管が詰まる故障を発生さ
せる。チェックを入れて更新ボタンを押すことで pipeArea の値を 1 に
変更している。チェックを外して更新ボタンを押すことで pipeArea の
値を 0 に変更している。
EV1 固着
EV1 が常に閉状態となる故障を発生させる。チェックを入れて更新ボ
タンを押すことで EV1PosDemand の値を 0 に変更している。チェック
を外して更新ボタンを押すことで EV1PosDemand の値を 1 に変更して
いる。
L1Alert 故障
タンク 1 のアラートセンサーが反応しなくなる故障を発生させる。チェ
ックを入れて更新ボタンを押すことで、AlertFactor の値を 2 に変更し
ている。チェックを外して更新ボタンを押すことで AlertFactor の値を
1 に変更している。
L1Alarm 故障
タンク 1 のアラームセンサーが反応しなくなる故障を発生させる。チ
ェックを入れて更新ボタンを押すことで AlarmFactor の値を 2 に変更し
ている。チェックを外して更新ボタンを押すことで AlarmFactor の値を
1 に変更している。
付録A-3.4
状態遷移モデルの導入
模擬化学プラントのシミュレーターは MATLAB/Simulink を用いて作成したもので、単
一 CPU で実行されるものになっている。しかしながら、実プラントにおいては多数の制御
装置がそれぞれ異なる CPU で実行される。あるいは複数の CPU が情報の授受をしながら
制御を行う状況が想定される。このように複雑なシステムの障害原因診断を検討するため
のテストベッドの作成が今後の課題である。その予備検討として、現在 Simulink のみで作
成しているコントローラー部の GUI を除いた部分を、MATLAB/StateFlow を用いて単一ス
レッドの状態遷移モデルに置き換えることを行った。この置き換え後のコントローラー部
の構成を図 付録 A-3-20 に示す。
付録-20
図 付録 A-3-20 状 態遷移 モデ ルを導入 した「 コ ントロー ラー 」部 の構成
図中の「State_Controller」チャートが、図 付録 A-3-8 のアクチュエーター群と安全・緩
和機能システム、CV1 制御系のモデルとなっている。MATLAB/Simulink では、チャートの
1 枚が 1 スレッドで実行される。従って、将来的にはこのチャートの内容を分割あるいは
複製することで、マルチスレッド化して行くことが可能である。
上図の状態遷移モデル部分の内容全体を 1 枚の図で示すことは、大き過ぎてできないの
で、ここではその一部、緩和機能処理の部分のみを取り出して図 付録 A-3-21 に示す。同
図の左半分は正常な緩和ロジック、右にはバグのある緩和ロジックが組まれているが、両
者の違いは、図の下方に示した「Close」ステートから「ResetTimer」ステートへの遷移条
件のみであり、先に示した Simulink モデルに比べてロジックの表現が非常に容易になって
いる。
本ロジックにより、前節で述べたブロック図ベースのコントローラーシミュレーターと
同等の動作が可能なことを現時点で確認している。
図 付録 A-3-21 緩 和機能 処理 の状態遷 移モデル
付録-21
付録B ソフトウェア検証のケーススタディ~要求仕様の検証事例~
『システム障害原因診断~要求仕様の階層化と証明によるアプローチ~』
付録B-1
課題
本調査では、システムの障害原因がソフトウェアにあるか否かを、開発ライフサイクル
のスタートとなる要求仕様に焦点を当て診断することを課題とする。ただし事例を用いて
具体的に行う。
付録B-2
結論
事例となるシステムのソフトウェア要求仕様を、次の方法を用いて精査したところ、期
待される成果を得た。すなわち要求仕様を以下の 2 つの方法で検査した。
・構文化手法を用いて階層化する。
・形式手法を用いて証明する。
これらによって、要求仕様に障害発生の原因の可能性があると診断できた。
付録B-3
調査方法
次の 2 ステップで調査を行った。どちらのステップにも構文化手法と形式手法を適用し
た。2 段階とは以下である。
・第 1 ステップ:要求仕様自体を診断する。(トップダウン方式)
・第 2 ステップ:実装から要求仕様を診断する。(ボトムアップ方式)
表 付録 B-3-1 調 査ステップ
ステップ
内
容
第1
要求仕様自体を診る
第2
実装から要求仕様を診る
構文化手法
(階層化法)
○
形式手法
(証明法)
○
○
○
第 1 ステップは要求仕様書自体を対象として、文書自身の論理整合性等を 診断するもの
である。後続の開発を規定する工程を対象とすることから、 トップダウン方式といえる。
第 2 ステップは最終的に開発された実装対象から遡って要求仕様を診断するものである。
工程を逆に辿ることから、ボトムアップ方式といえる。
付録B-3.1
2 つの方法
(1)構文化手法による仕様内容の階層化法
付録-22
構文化手法とは、要求仕様の文に焦点を当て、アプローチして行く方法である。その
方法は、要求内容の文を主語、述語等に分析し、定められた規則で文を再構成し、構成
された文同士を論理関係で結び、このような文の集まりを上下に階層化し、また文の矛
盾等の検査を文全体にわたり計算処理するものである。用語の統一、条件の漏れ防止が
はかれる。この手法にはツールがあり、課題の調査研究にはそのツール SLP を用いた。
[SLP]
(2)形式手法による仕様内容の証明法
形式手法では、仕様内容を事象が発生する前の状態(事前条件)と後の状態(事後条
件)とに分けて記述し、論理学的な推論規則を用いて、条件が成り立つことを確認する。
事象を集合論的な記号で記述し(文)、文同士に推論規則を適用し、新たな文を導き出
す。このような形式的規則で最後に導出された文が真であるとき、「証明」ができたと
いう。他方、最後の文が偽のとき、前提ないし導出過程に用いられた文同士が矛盾して
いることを示す。これは仕様内容が真として「証明」し切れていないことを示す。
なお、「証明」は文の導出関係をいい、文の真偽には言及するものではない、という
のが一般的な考えである。ここでは普段現場で要求仕様の正しさが問題にあり、そこで
「仕様の「証明」が必要である」というような場合を想定している。この場合には「証
明」は真偽を問題にしているといえる。本稿では後者の現場での「証明」という用語の
用い方に従っている 1 。
形式方法を用いる利点は、仕様の意味内容の数理論理学的な厳密性を保証できること
にある。この形式手法のツールとして Event-B の考え方(仕様)をツール化した Rodin
を用いた。[Event-B]
付録B-3.2
2 つの方法の連携
構文化手法と形式手法は、下図のようなイメージで連携して使用される。➀~⑨が今回
行った要求仕様を正確にするための標準的な順番を示している。要求仕様を障害原因診断
に向けて精査するためには、要求仕様を明確にすることが必要である。図は 2 つの方法を
連携させながら要求仕様を明確する順番を示している。仕様内容の抽象化と具象化を繰り
返すところが特徴である。そのためのリファインメントとは用語や文、また文と文との論
理関係を正確にすることを指す。
1
「証明」に関する議論については、本文「4.2.2.要求仕様の階層化と証明」を参照のこと。
付録-23
図 付録 B-3-1 階 層化法と証 明法 を用 いた要求 仕様の 明 確化手順
手順は、まず要求仕様内容を 構文化手法により階層化する(①、②)。ここで②で作成
された文書を SLP 文書と呼ぶ。
SLP 文書の内容の粒度により、対応する Event-B 文書の抽象度のレベルが決まる。図で
は抽象度が中間という意味でレベル 3 とした。図では②=③であり、Event-B 文書は SLP
文書に合わせて、レベル 3 で書かれることになる(④)。レベルの中間であるので、Event-B
はリファインメントをまずはレベル 0 に進める(⑤)。レベル 0 とは、内容の濃度をもっと
も抽象的なものにした場合である。数理論理学の立場でいえば、もっとも基本的な前提と
なる、いわば「公理」を立てることに似ている。その後、具体的な内容を加え、要求仕様
が実現可能な内容をもったものへと具象化する(⑦)。
SLP 文書も Event-B のレベルに合わせて、記述のレベルを合わせる(⑥、⑧)。レベル合
わせが逆の場合も多い。SLP の階層的考え方が、階層の階層を連想させる刺激を与えるな
どの効果があるからである。要求開発工程における仕様分析に相当する。
要求仕様のどれを正本にするかは議論のあるところであるが、図では原本に修正を加え
ることで修正後の正本としている(⑨)。
付録B-4
調査第 1 ステップ:要求仕様自体を診る
事例「化学プラントシミュレーター」のシステム全体の概要図を示す。
当該のシステムはタンク 1 とタンク 2 の水量のバランスを保つことを行っている。その
手段として、センサーによる電磁弁の開閉動作や、運転員による随時操作がある。やや機
能を詳しく述べると以下となる。
付録-24
図 付録 B-4-1 シ ステム事例 :化学 プ ラントシ ミュレー ター
•
•
•
•
タンク 2 はバッファータンクとし、タンク 1 への給水用の水を一旦保管するために
用い、また、タンク 1 からの排水も受けるために用いる。
タンク 2 の水位はフロートで自動注水するが、排水機能は持たない 。
タンク 1 を反応炉と想定し、そこでの水位を一定の目標値になるように制御する。
プラントのハザードとして、タンク 1 ならびにタンク 2 の溢水を仮定する(安全制
約は溢水防止)。配管からのリークは、当面は、インシデント(軽微故障)扱いと
する。
【操作盤の機能】
(1) 起動:起動制御(FV2,SV1~3,CV1 開、ポンプ起動、タンク 1,2 注水、水位制御)
(2) 停止:停止制御(FV2,SV1~3,CV1 閉、ポンプ停止、タンク 1,2 は通常注水)
(3) 緩和操作:緩和制御(排水弁 EV1 5 秒開)
(4) 緊急停止:緊急停止制御(FV2,SV1~3,CV1 閉、ポンプ停止、タンク 1,2 排水)
付録B-4.1
構文化手法による仕様内容の階層化
事例「化学プラントシミュレーター」の仕様の全体を階層化する。図 付録 B-4-2 はその
一部を示している。朱色の円でくくった箇所は後に事例として取り上げる部分である。
ここで「階層」とはどういうことかは本文で述べている。
付録-25
図 付録 B-4-2 要 求仕様の階 層的表現
付録B-4.2
要求仕様の例
事例である緩和操作系の仕様概要を模式的に描くと次の ような図(図 付録 B-4-3 事例:
緩和操作)となる。緩和動作機能は、インプットしてタンク 1 水位と操作盤がからの情報
がある。アウトプットとして排水弁の制御がある。
タンク1水位
(緩和系)
L1Alert
緩和動作
(mitigate1=1)
排水弁(EV1)
3秒間開指示
15秒間操作禁止
緩和操作
(操作盤)
図 付録 B-4-3 事 例 :緩 和操作
この緩和操作系の要求仕様として以下が提示された。
表 付録 B-4-1 要 求仕様例
【要求仕様】
要求 1:水位がアラートレベル(40cm)を超えると、5 秒間排出弁を開き、同時に 15
秒間(含む 5 秒間)は新たな排出弁の開指示を受け付けない。
要求 2:運転員の指示で、上記と同じ排出弁の開閉操作を 行う。
要求 3:運転員の指示は、常に優先する。
(15 秒間の禁止区間でも受け付け、自分自身
の過去の指示に対しても優先する。)
付録-26
この要求仕様の精度は要求開発プロセスの初期のものである。化学プラントシミュレー
ターの動作を模擬的にまずは見るということから、口頭でのやりとりをメモしたレベルに
近い仕様の提示で始まった。後に動作を確認し、とりあえず正常に動くと確認した後で、
改めて 3 つの仕様に書き改めたというものである。
要求開発は一般に「要求獲得⇔分析⇔仕様化⇔妥当性確認」と進むといわれるが( 図 付
録 B-4-4 要求開発プロセス)、この要求開発のプロセスから見てみると、当該の要求はまだ
要求獲得の工程かもしれない。
図 付録 B-4-4 要 求開発プロ セス
しかし、実際の動作を確認したということから要求分析も正しくなされたと判断された
かもしれない。さらにまた、この事例の試作は開発 ツールとして、
「動く仕様書」ともいわ
れる Matlab/Simulink であったことから、要求の仕様化も終わったとも認識されていたのか
もしれない。
付録B-4.3
構文化手法による仕様内容の診断法
構文化手法では所与の 要求仕様を、明確な文とすることから始める。構文規則があり、
文を主語(目的語)+述語からなる最小単位の文(単位文)にし、単位文同士を if などの
論理構文で結ぶ。論理規則に基づいて、検査が行われるので、任意の主語(要素)が同じ
論理パスの中で、矛盾した述語を持っていないかなどが検査される。用語統一の支援も行
う。用語の不統一や曖昧さなどから生まれる、仕様の誤解を少なくするためである。
事例の要求仕様を構文化手法で記述すると以下となる。
付録-27
図 付録 B-4-5 構 文化手法に よる要求 分析
要求 1 は 1 行目〜3 行目にそのまま記述できる。構文化手法の記述の左端に行数を示す。
要求 2 や 3 を要求 1 と合わせて意味を検討することが構文化手法では重要である。個々
の要求が独立であるのか、相互に関係しているのかの判断である。単位文の論理的な関係
を行う作業である。この例では相互に関係しているので、要求 2 は要求 1 の条件下に記述
される。
要求 2 は「運転員の指示で」は「運転員の指示がなされたならば」と解釈でき、5 行目
に反映されている。実際には最初は 4 行目に書いたのであるが、要求 3 により 5 行目に移
された。要求 2 の「上記と同じ」は要求 1 に書かれている内容で、具体的には 2 行目と 3
行目に書かれたものと解釈された。よって、6 行目、7 行目にそのままコピーされている。
問題は要求 3 である。「運転員の指示は、常に優先する」ので、「運転員の指示がなされ
たならば」
(要求 2 で書かれた 5 行目)、9 行目の通り、新たな指示がなされたならば、
「同
時に 15 秒間(含む 5 秒間)は新たな排出弁の開指示を受け付ける」ので 7 行目と 9 行目は
論理矛盾を起こすことになる。9 行目は否定記号“¬”を用いて、
「¬{、、、受け付けない}」
となっているので、7 行目の文と述語が正反対となる。構文化手法ツールはこれを自動検
査する。(図の中央の枠の中に「矛盾しています」の検査指摘がある。)
矛盾の指摘を形式的に示すと以下である。
<新たな開指示>=a、{同時に 15 秒間(含む 5 秒間)は受けつけない}=P、否定記号=¬、
連言記号=∧とすれば、7 行と 9 行は Pa∧¬Pa となり、要求は論理的に矛盾している。
なお、このような矛盾を明示するために、構文化手法では決定表の自動生成を行う。下表
がそれである。
付録-28
表 付録 B-4-2 構 文化手法に よる決定 表
水位
アラートレ
ベ ル ( 40cm)
を越える
運転員の指示
優先 ∧ なされ
た
新たな開指示
[同時に 15 秒間(含む 5 秒間)は
受け付けない] ∧ ¬同時に 15 秒
間(含む 5 秒間)は受け付けない
●運転員の指示
優先
右端の●付きの列は「運転員の指示を優先せよ」と読み、左側の列は「水位が アラート
レベル(40cm)を越え)かつ(∧)「運転員の指示、、、」かつ「新たな開指示、、、」と主語+
述語として文を構成し、それらの文が連言で結合していると読む。最後の文「新たな開指
示は、、、」において、述語(朱色)は「同時に 15 秒間(含む 5 秒間)は受け付けない ∧ ¬
同時に 15 秒間(含む 5 秒間)は受け付けない」となっている。“¬”は否定記号であり、
これは正反対の述語を持っていることを明示している。よって 文「新たな開指示は、、、」が
矛盾した文であることを示す。矛盾な文を含む連言文は矛盾しており、矛盾した文からは
どんな文も導出可能であるが、逆に「運転員の指示を優先せよ」は意味の無い文といえる。
障害の原因診断においては、第三者に説明する上で容易で明示的な表現法も重要である。
構文化手法の提供する決定表はこの要件に適う。
ところで、一般に事例のような要求仕様を次の工程を担う設計部門に回すと、大方の設
計部門では上のような矛盾を回避する設計を行う。要求を合理的に解釈するからである。
構文化手法では「上記と同じ」、「優先する」を字義通りに解釈している。しかし設計部
門では「同じ」を同じ「ような」と解釈し、必ずしも字義通りには解釈しない。また「優
先」の内容もよく分析し、優先に関連する各々の機能に「優先度」を割り当てるであろう。
しかしこのような設計への依存は要求を変えてしまうリスクもある。実際第 2 ステップ
の「実装から要求仕様を診る(ボトムアップ)」ではそのようなことが指摘された。
要求仕様を獲得・分析等を行う要求開発部門との確認が必要である。ここでの矛盾の指
摘を受けて、要求を整合的に関係づけることができていたなら、第 2 ステップでの要求の
変更や不具合を防止できた思われる。
このことは形式手法での矛盾の指摘の場合にも当てはまる。要求の不具合を発見したが、
いずれも発見で指摘しただけに終わっている。
もちろん、本作業は「事後 V&V」として行っているため、「事後」の指摘のみで作業の
条件は満たしてはいる。
しかしこのことを開発のための教訓としていえば、複雑さと規模が増大し、かつ安全性
に厳しい基準を設けなけらばならないシステムにおいては、要求自身を精査する専任部門
が必要かもしれない。
付録B-4.4
形式手法による仕様内容の証明法
形式手法として Event-B を採用した。Event-B は要求仕様を対象とする技法であるからで
ある。
図 付録 B-4-6 に Event-B、正確には Event-B のためのツール Rodin の画面を示す。構文
化手法と同例を扱っている。
付録-29
図 付録 B-4-6Even-B に よ る 証明方法
上図を拡大したものを下に示す。
図 付録 B-4-7Even-B に よ る 証明方法 (拡大 図 )
図 の 見 方 を ま ず 説 明 す る 。「 図 付 録 B-4-7Even-B に よ る 証 明 方 法 ( 拡 大 図 )」 の 右 の
VARIABLES(変数)の欄では記号を列挙している。記号の記述法はツールが背後に持つ 記
号の記述規則に基づいている。INVARIANTS(不変式)の欄には前提条件が書かれる。推
論規則の適用の際に用いられる。EVENTS(事象)は事象の実行結果を記述している。例
では INITIALISATION という事象では「排出弁が閉」(act1)にすべきことを述べている。
左は証明義務(Proof Obligations)を指している。緑色が任意の要求が証明されたことを
示し、褐色はいまだ証明されていないことを示す。
「 運転員が指示した際に緩和動作を行う」
はずであるが、それがまだ証明されていないこと、「現在の時刻を更新する」、すなわちタ
イマーの時刻が更新されることがまだ証明されていないことを示している 。
付録-30
Event-B は、集合論を基礎とした形式手法である。仕様内容を事前、事後などの条件と
して抽出(モデル化)する。そして、推論規則を用いて、条件等の真偽を確認する 。これ
を「モデルの証明」と称する。このような機能がツール Rodin に実現されている。
「抽出」するとは、構文化手法のように単位文化することである。ただし、表現は集合
論的に「a∊P」と表す。ただしこれは要素 a は集合 P に属する(∊)と読む。P には a 以外に
他にも要素が存在するかもしれないので、Event-B では事前に P の要素を限定(定義)す
る。定義された以外の要素が証明過程で導出された場合には矛盾となる。
Event-B の条件は構文化手法の if 文に相当する。
Event-B では、変数やイベント発生条件を定義しておき、左のウィンドウに表示されて
いる項目に沿って証明作業を行っていく。図では緑色のマーキングは証明が完了したこと
を示す。茶は証明不能なことを示す。すべての項目が証明されたとき、モデルの 正当性が
保証される。
図では「運転員指示時に緩和操作を行う」が証明できないことを指している。このよう
な証明されない内容を残したまま、設計工程に進むと障害の原因となるのではないかと推
測される。仕様内容を変更し、証明可能にすることが求められている。
付録 B-4.4.1. 証明の準備:両手法の連携
構造化手法と形式手法による結論はすでに述べた。ここでは両者を連携させ、Event-B で
証明に至る過程について述べる。
「 図 付録 B-3-1 階層化法と証明法」で述べたことである。
図 付録 B-4-8 構 文化手法に よる階層 化
付録-31
図 付録 B-4-9Event-B に よる モデルの 記述
仕様のモデル化を明確に行うためにはリファインメントを行う。リファインメントは構
文化手法によって階層化された構文を参考にすると有効である。
た
だし Event-B での証明を行う際に、構文化手法は必須ということではない。自然言語ラ
イクな構文化手法の表現の方が理解しやすく、またその文書が Event-B による証明で保証
されているならば、文書としての信頼性も高まる。
「図 付録 B-4-8 構文化手法による階層化」と「図 付録 B-4-9Event-B によるモデルの記
述」は構文化手法の階層的記法を Event-B(Rodin)が参考にすることを示している。図はそ
れぞれのツールの画面であるが、文字が小さいので、重要な箇所について個別に説明する。
【リファインメント計画】
例ではリファインメントが 3 回行われており、
「 図 付録 B-4-8 構文化手法による階層化」
ではそのことが階層レベル 1 に「リファインメント 0」、
「リファインメント 1」、
「リファイ
ンメント 2」で示されている(下図では後者 2 つのみ書かれている)。またレベル 2 ではそ
れぞれのリファインメントのリファインメント化された項目が書かれているが、リファイ
ンメント 0 では 2 個、リファインメント 1 では 5 個、リファインメント 2 では 8 個となっ
ている。図 付録 B-4-10 ではリファインメント 1 が、項番 2.5 で終わっており、5 個あるこ
とが示されている。
付録-32
図 付録 B-4-10 構 文化手 法の 階層図( 拡大図)
【形式手法のモデル化】
リファインメント計画により、実際に Rodin でモデル記述をされたものが下図である。
図では「運転員指示時に緩和動作を行う」が記述されている。これは「 図 付録 B-4-10 図 付
録 B-4-10 構文化手法の階層図(拡大図)」では項番 3.3 に書かれているものである。構文
化手法 SLP で書かれた項番 3.3 の論理記述欄に書かれたものを「図 付録 B-4-12 構文化手
法 SLP での論理記述モデル記述(拡大図)」を示す。両者は対応している。
図 付録 B-4-11 Event-B で の モデル記 述(拡大 図)
図 付録 B-4-12 構 文化手法 SLP で の 論理記 述モデル 記述 (拡大図 )
付録-33
付録B-5
調査第 2 ステップ:実装から要求仕様を診る
調査の第 2 ステップとして、実装から逆に要求仕様を診断する。ボトムアップ的アプロ
ーチとも呼べる。「表 付録 B-4-1 要求仕様例」の仕様に基づいて実装が行われた。
「タイプ A」は最初のものである。敢えて障害を作っている。
「タイプ B」はその障害を
取り除いたものである。「タイプ C」は要求そのものをすべて満足させたものである。
これらの実装対象を調査分析し、要求仕様との乖離などを検討するのがここでの課題で
ある。それを踏まえ「事後 V&V」において、障害の発生時に要求仕様をどのように診断し
たらよいのかを提案する。
なお、実装はモデリングツール Matlab/Simulink で行った。同ツールで記述されたブロッ
ク線図は同ツールにより動作される(シミュレーションされる)。よってブロック線図を 実
装コードとみなし、要求仕様と比較することができる。ブロック線図は MIL 記号で表記さ
れているが、回路図ではなく、論理的な動作を表現している。
付録B-5.1
実装モデルタイプ A の障害
実装モデルタイプ A のブロック線図を掲げ(図 付録 B-5-1 実装モデルタイプ A)、モデ
ルの動作を説明する。障害の内容を理解するためである。また障害を技術者以外の第三者
にも伝える必要も出てこよう。
なおタイマーは次のような特性を持っている。
タイマーはオフ状態であるときに、入力データによる立ち上がり指示データ(今までは
データが来なかったが今回初めて来たというデータ(“0→1”と記す))で立ち上がり(オ
フ状態がオン状態となること)、 カウントを開始し事前に設定されている時間だけデータ
(1)を出力し続け、設定時間が来たならばデータ出力が終了し、オフ状態になる。
タイマーはオン状態のときは、新たな立ち上がりの入力データ(0→1)が来ても受け付
けない。
また、カウンターはリセットされた場合、どんな場合でも強制的にオフ状態となり、タ
イマーも停止し、カウンターも 0 となる。0 となり、カウントアップを再開するというこ
とはない。
「運転員の指示」は指示が与えられたなら(1)を出力し、その次の時間で(0)となる。ソフ
トウェアの仕様としては(0)を出力すると考えてよい。「水位アラート超え」も超えた段階
で(1)を出力し、その次の時間で(0)となる。
また図中「スイッチブロック」は入力データの真偽 (1or0)を逆転させる関数である。
なお、対象モデルを端的にいえば、タイマーのカウント時間に合わせて排出弁を開閉し、
もう一つのタイマーに合わせてそのカウント時間分だけ排出弁の開を禁止するというもの
である。
(1)タイプ A での障害
タイプ A では、5 秒タイマーが稼働中に運転員が緩和操作をしても受け付けない、とい
う障害などが起きた。
付録-34
水位アラー
ト越え
(40cm)
①
スイッチブロック
⑲ OR
②
AND
⑤
運転員の指 ③
示
⑫
R ⑱
⑮×
⑧⑭
⑥
⑦
⑪ ⑬ ⑯5S
排出弁開
⑨
⑰
④
⑩15S
図 付録 B-5-1 実 装モデルタ イプ A
(2)タイプ A 構文化手法での論理分析
「図 付録 B-5-1 実装モデルタイプ A」のブロック線図の動作に対して、構文化手法によ
る論理分析を適用する。タイプ A での各動作が論理的な条件の組合せに依存して起きてい
ることが明示されている。図 付録 B-5-2 では排出弁開の要求が無視される場合が赤の太線
で示されている
なお、図中“if”は条件文の前件を指し、
“ *”は後件の文を指す。
“< >”は主語ないし目的
語、“{ }”は述語を指す。また①、②、③、、、等の数字は「図 付録 B-5-1 実装モデルタイ
プ A」の数字と対応している。
if <水位>が{アラート(40cm)を越えた}ならば(①)
*<ORブロックからの出力>は{1}となり(②)、このとき、
if <運転員の排出弁開の指示>が{あった}ならば(③)、指示データはORブロックと15秒タイマーブロックに向かう。
'15秒タイマーに関していえば、15秒タイマーへの指示データは15秒タイマーをリセットし、
*<15秒タイマーブロックからの出力>は{0}となり(④)、その結果、
*<スイッチブロックへの入力データ>は{0}となり、
*<スイッチブロックのANDブロックへの出力>は{1}となり(⑤)、ANDブロック入力②、⑤から、
‘(以下、スイッチブロックについては入出力をまとめて「<スイッチブロックのデータ>は{0→1(反転)}」と書く。)
*<ANDブロックからの出力>は{1}となり(⑥)、5秒タイマーブロックへデータが向かう。これは排出弁を開とする要求である。
ただしこの要求はANDブロックからの直近の出力データが無し(0)から有り(1)への反転データでなければ
'立ち上がりデータ(0→1)にはならない。そこで、次の条件を挿入する。すなわち、
if <ANDブロックからの直近の出力データ>は{0}であり、かつ、
if <5秒タイマー>が{オフ(0)}であったならば(⑦)
*<5秒タイマー>は{オン(1)}となり(⑧)、排出弁は開となる。と同時に、
*<5秒タイマーブロックから15秒タイマーブロックへのデータ出力>も{開始}となる(⑨)。
これは立ち上がりデータ(0→1)である。また5秒カウンターのカウントアップも同時に始まる。
for <秒カウンター>を{0}とせよ; <秒カウンター>が{5以下}なら以下を繰り返せ; <秒カウンターC>を{1アップ}せよ
*<5秒タイマーブロックから15秒タイマーブロックへのデータ出力>が{なされる} (⑨)。
'先に運転員の指示があり(③)、よって15秒タイマーは強制的にリセットされた訳だが、そのまま、
if <15秒タイマー>が{オフ(0)}であり(⑩)、
'と同時にここでも15秒タイマーが受け取るのは立ち上がりデータ(0→1)でなければならないので、次の条件を挿入する。すなわち、
if <15秒タイマーが受け取るデータ>が{立ち上がりデータ(0→1)}であったならば(⑨)
*<15秒タイマー>は{オン(1)}となり、15秒間のカウントを開始する。
*<スイッチブロックのデータ>は{1→0(反転)}となり、
*<ANDブロックからの出力>も{0}となり(⑪)、排出弁開のデータ指示が閉ざされ、15秒間の禁止区間が始まる。
'これは「同時に15秒間(含む5秒間)は新たな排出弁の開指示を受け付けない」(要求3)を満たすように思われる。
for <秒カウンター>を{0}とせよ; <秒カウンター>が{15以下}なら以下を繰り返せ; <秒カウンター>を{1アップ}せよ
'しかし、このとき、
if <運転員の指示>が{なされた}とする(⑫)。すると、15秒タイマーはリセットされ、
*<15秒タイマーブロックからの出力>は{0}となり、
*<スイッチブロックのデータ>は{0→1(反転)}となり、
いまANDブロックからの出力=0であるので(⑪。少なくとも15秒間は)、よって、
*<ANDブロックからの出力>は{立ち上がりデータ(0→1)}となるので(⑬)、
if <5秒タイマーのカウンター>が{5秒未満}ならば、
'5秒タイマーはオンの状態なので(⑭)、5秒タイマーブロックへの運転員の指示データは無視されることになる(⑮)。
'これは「要求3:運転員の指示は、常に優先する。(自分自身の過去の指示に対しても優先する。)」に違反する。
else
図 付録 B-5-2 構 文化手法に よる論理 分析例
付録-35
(3)障害の説明
障害を第三者に分かりやすく説明する必要がある。システムの障害原因を論理的側面か
ら述べることは、論理的な条件の重なりを述べることではないかと思われる。それはあた
かも法律の条文が幾重にも条件が重なり、司法の場で何らかの弁明や判決を行う際に、条
件を幾層にも重ねる場合に似ている。
先に「図 付録 B-5-2 構文化手法による論理分析例」で構文化手法を用い、条件を幾層に
も重ね、特定の障害が特定の条件のときに発生することを示した。このことを自然言語で
表現できれば、ソフトウェアの専門家以外の第三者にも、また長く文書を保存するうえで
も、有効ではないかと思われる。もちろん報告は専門的な文書も添える必要もある。
構文化手法は構文化された各文を自然言語ライクに置き換えられる。それを以下に示す。
もし水位がアラート(40cm)を越えたならば(①)、OR ブロックからの出力は 1 と なり(②)、この
とき、もし運転員の排出弁開の指示があったならば(③)、指示データは OR ブロ ックと 15 秒タイマ
ーブロックに向かう。
15 秒タイマーに関していえば、15 秒タイマーへの指示データは 15 秒タイマー をリセットし、 15
秒タイマーブロックからの出力は 0 となり(④)、そ の結果、スイッチブロックへの入力データは 0
となり、よってスイッチブロックの AND ブロックへの 出力は 1 となり(⑤)、AND ブロック入力②、
⑤から(以下、スイッチブ ロックについては「スイッチブロックのデータは 0→1(反転)」と書く。)、
AND ブロックからの出力は 1 となり(⑥)、5 秒タイマ ーブロックへデータが向かう。これは排出弁を
開とする要求である。
ただしこの要求は AND ブ ロックからの直近の出力データが無し (0)から有り(1)への反転データで
なければ立ち上がりデータ(0→1)にはならない。そこで、次の条件を挿入する。
すなわち、もし AND ブロッ クからの直近の出力データは 0 であり、かつ、、かつ 5 秒タイマーがオ
フ(0)であったならば(⑦)、5 秒タイマーはオン(1)となり(⑧)、排出弁は開となる。と同時に、 5
秒タイマーブロックから 15 秒タイマーブロックへのデータ出力も開始となる(⑨)。これは立ち上が
りデータ(0→1)である。また 5 秒カウンターのカウン トアップも同時に始まる。5 秒タイマーブロッ
クから 15 秒タイマーブロ ックへのデータ出力がなされる( ⑨)。
先に運転員の指示があり(③)、よって 15 秒タイマー は強制的にリセットされた訳だが、そのまま、
もし 15 秒タイマーがオフ(0)であり(⑩)、と同時にここでも 15 秒タイマーが受 け取るのは立ち上が
りデータ(0→1)でなければならないので、次の条件を挿入する。すなわち、もし 15 秒タイマーが受
け取るデータが立ち上がりデータ(0→1)であったならば(⑨)、15 秒タイマーはオン(1)となり、15
秒間のカウントを開始する。スイッチブロックのデータは 1→0(反転)となり、AND ブロックからの
出力も 0 となり(⑪)、排 出弁開のデータ指示が閉ざされ、 15 秒間の禁止区間が始まる。
これは「同時に 15 秒間(含む 5 秒間)は新たな排出弁の開指示を受け付けない」(要求 3)を満た
すように思われる。
しかし、このとき、もし運転員の指示がなされたとする(⑫)。すると、15 秒タイマーはリセッ
トされ、15 秒タイマーブロックからの出力は 0 となり 、スイッチブロックのデータは 0→1(反転)
となり、いま AND ブロック からの出力 =0 であるので( ⑪。少なくとも 15 秒間は)、よって、AND ブロ
ックからの出力は立ち上がりデータ(0→1)となるので(⑬)、もし 5 秒タイマー のカウンターが 5 秒
未満ならば、5 秒タイマー はオンの状態なので( ⑭)、5 秒タイマーブロックへの運転員の指示データ
は無視されることになる(⑮×印)。
これは「要求 3:運転員の指示は、常に優先する。
(自分自身の過去の指示に対しても優先する。)」
も違反する。
図 付録 B-5-3 構 文化手法に よる自然 言語によ る論理的 な記述例
付録-36
(4)形式手法の適用
「図 付録 B-5-1 実装モデルタイプ A」の実装モデルを Event-B のモデルとして記述した。
「水位アラート越え」、「OR」、「AND」など 7 つのブロックを作り(赤の破線)、ブロッ
ク単位に入力変数、出力変数を定義した。そしてイベントを発生させるための限定条件(ガ
ード条件)が満たされた場合には、その入力変数をアクション(ACTION)の定義により、
出力変数を決定する。ここでアクションとは、たとえば OR ブロックに関していえば、入
力 1 または入力 2 が 1 であったならば、1 を出力変数にせよ、というような条件を指す。
(Event-B の用語に関しては、「図 付録 B-4-11 Event-B でのモデル記述(拡大図)」などを
参照のこと。
①
水位アラー
ト越え
(40cm)
②
運転員の指
示
15Sタイマー
リセット入力
ANDブロッ
ORブロッ
ク入力1
ク出力
ORブロッ
ク入力1
③
OR
ORブロッ
ク入力2
AND
3Sタイマー
入力
ANDブロ
ック出力
⑥
ANDブロッ
ク入力2
R
15Sタイマー
入力
⑤
④
15S
タイマーカウン
ター,+1
3Sタイマー
出力
⑦
排出弁開
5S
タイマーカウン
ター,+1
5Sタイマー解
除
15Sタイマー
解除
図 付録 B-5-4Event-B モ デル と各イベ ントブロ ック
このようにブロックを定義し、またシステムがどのようなイベントが発生しても満たさ
なければならない条件を不変式(INVARIANTS)に追加する。
このようにして証明義務(Proof Obilgation)の欄でどの項目も証明されるか否かを見る。
事例では障害は、5 秒タイマーはオンの状態のときに、運転員の排出弁の開という指示デ
ータは無視されるというものであった。そこで、これの否定文を不変式に追加すると、証
明義務の欄において証明できない項目が発生する。すなわち、否定文は「 5 秒タイマーは
オンの状態のときに、運転員の排出弁の開という指示データは無視されない」というもの
である。
この否定文の不変式への追加は、障害がすでに分かっている場合には有効である。
Event-B では、証明は動作(動くこと)が証明されるだけであり、 従って障害をもって動
いても、動くことが「証明」されるだけで、おかしいというチェックがかからない。この
事例ではタイプ A の実装モデルを受けて、それと同時に Event-B を記述しているので、
「動
きます」とすべて証明されてしまう。
しかし、すでに見たように要求仕様自体に対しては、「 図 付録 B-4-11 Event-B でのモデ
ル記述(拡大図)」には証明できない項目があり、要求仕様には矛盾があった。実際この動
く証明された Event-B モデルに対しても、要求仕様とおなじ「優先」を意味する否定文を
追加すると証明義務の欄の項目に、証明できないという褐色のものができる。( 記載略)
付録-37
付録B-5.2
実装モデルタイプ B
タイプ A で「排水弁が閉のままである(運転員の指示を受け付けない)」という障害を
対策したモデルを以下に示す。
これは、運転員の指示が 5 秒タイマーを経由して、弁の開閉にダイレクトに届くように
改善したロジックである。
しかし、このモデルでも 15 秒の操作禁止区間(タイマー)の任意のタイミングでの延
長には対応できていない。
説明はタイプ A に準じるので略す。次のタイプ C に関しても同じく省略する。
水位アラー
ト越え
(40cm)
15S
OR
運転員の指
示
AND
OR
5S
排出弁開
5S
図 付録 B-5-5 実 装モデルタ イプ B
付録B-5.3
実装モデルタイプ C
タイプ A、B での障害(不具合)をさらに改善したモデル C を以下に示す。
5 秒・15 秒のタイマーが随時効くようにした。運転員指示優先の要求を満たした。
水位アラート
越え(40cm)
R
OR
運転員の指
示
AND
5S
R
15S
図 付録 B-5-6 実 装モデルタ イプ C
付録B-5.4
実装モデルの障害や不具合の整理と障害原因診断
各実装モデルの比較結果を下表にまとめた。
付録-38
排出弁開
要求仕様に対応できている場合に○印をつけており、他方×印では、具体的な障害を記
述している。
障害を引き起こしているのは、
「要求 3」に記載された機能が関係している。改めて要求
3 の機能を確認してみると、
「要求 3:運転員の指示は、常に優先する。
(15 秒間の禁止区間でも受け付け、自分自身の
過去の指示に対しても優先する。)」
とあり、
「それでは禁止区間を設定することにはどんな意図があるのだろう。禁止区間を設
けながら、それ以上に運転員が常に優先するということに、システム開発の委託者(発注
者)のどんな企図があるのか」という疑問が湧いてくる。
この疑問は、構文化手法の「図 付録 B-4-5 構文化手法による要求分析」で指摘したこと
と一致する。
表 付録 B-5-1 障 害や不具合 の整理
各実装モデルの障害原因診断を次のように要約できる。
表 付録 B-5-2 実 装モデルの 障害原因 診断
タイプ A
タイプ B
タイプ C
要求分析で、「常に優先する」という表現を、タイマーのリセットはどん
な 場 合よ り も 優 先 する と 字 義通 り に 解 釈 した と こ ろに 障 害 発 生 の原 因が
あったと推測される。
「常に優先する」という用語の解釈が特定されないままに、開発が設計、
実装へと進んだ。「上記と同じ」という用語に関しては、問題が発生しな
かった。
タイプ A での障害原因を取り除くことを優先したと思われる。その結果、
「表 5.4 1 障害や不具合の整理」のように、要求仕様例をすべて満たして
いる訳ではない。しかし、見方をかえれば 、運転員の指示を「常の優先」
とはせず、現実の操作の範囲に留めたモデルといえる。タイプ B が現実の
仕様に留めた理由は排出弁の流量の大きさに依存するかもしれない。
要求を忠実に実現したモデルである。「常に優先」を字義通りに解して実
装をした。しかし、果たして運転員の指示を頻繁に行わせる必要があった
のかは疑問である。開発委託者の真の「意図」がどこにあったのか確認す
べき事例といえる。
付録-39
付録B-6
まとめと今後の課題
事後に発生した障害を、その障害の原因は要求仕様の中になかったかという視点からア
プローチした。
このアプローチを第 1 ステップで「要求仕様自体を診る」こと、第 2 ステップで「実装
から要求仕様を診る」こととで行った。
アプローチの方法として、要求仕様の文を構文化し論理矛盾等を指 摘する方法(構文化
手法)と、要求仕様の文を集合論的記法で記述し文書の整合性を証明する方法(形式手法)
を連携的に用いることを試みた。
その結果は先に「表 付録 B-5-1 障害や不具合の整理」と「表 付録 B-5-2 実装モデルの
障害原因診断」の通りである。「まとめと今後の課題」を述べる。
(1) 要求仕様においては、実装において 障害や要求仕様とのミスマッチ(不具合)の原因
となる表現が内在するリスクがある。以下、「表現リスク」と呼ぶ。ここで表現リスク
とは用語等の表現、及び用語によりつくられる文の論理的な関係も指す。
(2) このリスクを回避する方法として、構文化手法や形式手法は有効である。
(3) また診断結果を第三者にも理解できるように論理的な説明も原因診断の不可欠な条件
と思われる。構文を自然言語に変換機能を持つ構文化手法はこの点でも有効と思われ
る。
なお、複雑・大規模化するシステムの開発ライフサイクルの中で、要求仕様の表現リス
クは設計等後続の工程に依存するのではなく、要求開発工程で低減しておくべきである。
ただし、この提言を実証するような経済的効率性などの調査研究は今回行った訳ではない。
これは、今後の課題である。
あわせて、次のようなことがいえる。
要求仕様の「表現リスク」はシステムの複雑・大規模化の増大に比例すると予測される。
よって「事後 V&V」においても、複雑・大規模化システムへの「表現リスク」への体系的
で適用可能なアプローチ法の開発・実証が必要とされる。
付録 B 参考文献、用語説明
[SLP] 要求仕様の文を主語と述語に分けて記述し、文同士 を論理的な関係で結ぶ。この構
文化手法により、要求の内容も分割され、内容も上下概念が階層的に表現される。これ
により文書全体の論理的な矛盾などを検査する。決定表などの後続のテスト仕様も出力
する。
http://www.jfp.co.jp/slp/
[Event-B] 形式手法の一つで、要求仕様を対象とする。任意の要求仕様を集合論のモデル
とみなし、集合の階層に応じて抽象化や具象化を行い(refinement)、仕様を段階的に構
成する。構成された仕様に対して、その正しさを公理や定理など数理論理学的な道具立
てを用いて証明する。証明用のツールとして Rodin がある。
http://www.event-b.org/
http://set.style.coocan.jp/wiki/?Rodin%2FTutorial
付録-40
付録C モデル検査概要
付録C-1
モデル
設計検証における情報システムのモデル(model :模型)とは、情報システムのある着目
する側面(aspect)にもとづいて「理想的に」抽象化を行い 、着目しない側面を削ぎ落と
し、解析などを容易にした体系と考えることができる。
情報システムに限らず、多くの体系は、着目する側面に応じたモデルを持つと考えるこ
とができる。例えば古典力学の物理モデルは以下のようになる。
•
•
対象:自然界の質量を持つ全物体
検証(解析)の目的:質点の運動
•
•
•
モデル: 質点の動きに関する微分方程式
着目している側面:質点の位置
着目しない(削ぎ落とされた)側面:物質の原料、形状、大きさ
情報システムはソフトウェア、ハードウェア、さらにはネットワークなどからなるとみ
なすことができる。以下では特にソフトウェアに焦点を当てて考える。
力学系などの連続系を含まないシステムであれば、離散系のモデルでソフトウェアの「振
る舞い」
(着目する aspect)を適切にモデル化できる。一旦モデル化できれば以下のような
利点を享受できる。
•
•
モデルに対する実装の乖離具合を「数学的/論理的」に「解析」できる
乖離があるときにその乖離を「同定」することが可能になる
付録C-2
モデル検査
ソフトウェアの開発ではモデルに基づいた開発手法を既に活用している。なかでもモデ
ル検査手法は設計段階の設計誤りを早期に発見する手法として注目されつつある 。
一般にモデル検査手法(図 付録 C-2-1)ではモデル(Model)と検証性質(Property)を与え、モデ
ル上で検証性質が成り立つかを網羅的かつ論理的に調べる。成り立つ時は、その性質がモ
デル上で成り立つことが保証され、成り立たないときは反例(Counterexample:CE)とい
う、具体的にどの実行系列で与えられた性質が成り立たないかを表す情報が出力されるこ
とが多い。すなわち、反例はバグ同定に役立つトレース情報とみなすことができる。
図 付録 C-2-1 モ デル検査
付録-41
付録C-3
意味モデル
SPIN 等で採用されているモデルの意味モデルは Kripke 構造(図 付録 C-3-1)と呼ばれる
遷移系である。Kripke 構造は有限状態機械+各状態でのブール値の割り当てと見なすこと
ができる。
図 付録 C-3-1 では、R,Y,G のブール変数があり、初期状態では変数 R が真であり、他の
変数は偽である。初期状態からは、ブール変数 G が真となる状態に遷移できる。
図 付録 C-3-1 Kripke Structure
以下に幾つかの時相論理式(LTL 式のクラス)とその直感的な意味を挙げる。p は論理式で
あり、時相演算子を含んでもよい。
G p:常に p が成り立つ
F p : いつか p が成り立つ
X p : 次の時点で p が成り立つ
p U q: q が成り立つまでは 、 p が成り立ち続ける
付録C-4
モデル検査アルゴリズム
付録C-4.1
CTL のモデル検査アルゴリズム
CTL モデル検査アルゴリズムの概要を述べる。基本的には、入力の CTL 式の部分式に
対する構造的帰納法を用いた再帰アルゴリズムとなる。すべてのオペレーターに対する部
分アルゴリズムは不要であり、必要なアルゴリズムを議論するために CTL のオペレータ
ー間の恒等関係を整理する。
•
•
•
•
•
•
•
AX f
AG f
AF f
A( f
E( f
A( f
EF f
≡ ¬ EX ¬ f;
≡ ¬ EF¬ f;
≡ ¬ EG ¬ f;
R g) ≡ ¬ E( ¬ f U ¬ g);
R g) ≡ ¬ A( ¬ f U ¬ g);
U g ) ≡ ¬ E( ¬ g U ( ¬ f ∧ ¬ g)) ∧ ¬ EG ¬ g;
≡ E(true U f).
最後の 2 つを自明な双対形として与えていないことに注意(もちろんこれらの双対形も
付録-42
成立する)。このことより、CTL のモデル検査アルゴリズム(以下の方針のもとで)は EXf,
EGf, EfUg の 3 つ(と ¬ f, f ∨ g) に対するアルゴリズムのみ与えれば十分である。いずれ
のアルゴリズムも Kripke 構造 M と、CTL(部分) 式 f の 2 つ(EU の場合は CTL が 2 式と
なり合計 3 つ)を入力として与える。各アルゴリズムではそのアルゴリズムで Kripke 構
造のノードのラベルを更新(既存のラベル情報を残したまま 、新しい情報を付加)する。
ノードのラベルは各アルゴリズム実行後で判別している、そのノードで成り立つ状態式を
意味する。すなわち、出力として各状態で成り立つ時相論理式が得られる。
checkCTL(M,f)
Require: f is AX, AG, AF, AR, ER, AU, EF free
if f = ¬ g then
checkCTL(M,g);
checkNot(M,g);
else if f = g1 ∨ g2 then
checkCTL(M,g1);
checkCTL(M,g2);
checkOr(M,g1, g2);
else if f = EXg then
checkCTL(M,g);
checkEX(M,g);
else if f = E(g1Ug2) then
checkCTL(M,g1);
checkCTL(M,g2);
checkEU(M,g1, g2);
else if f = EG(g) then
checkCTL(M,g);
checkEG(M,g);
end if
図 付録 C-4-1CTL の モデル検 査
checkNot(M,f)
foreach s ∈ S do
if f ∈ L(s) then
L(s) := L(s) ∪ { ¬ f};
end if
end for
checkOr(M,f, g)
foreach s ∈ S do
if f ∈ L(s) or g ∈ L(s) then
L(s) := L(s) ∪ {f ∨ g};
end if
end for
checkEX(M,f)
付録-43
foreach s ∈ S do
T := {s | sRs};
foreach s ∈ T do
if f ∈ L(s) then
L(s) := L(s) ∪ {EXf};
end if
end for
end for
図 付録 C-4-2CTL モ デル検査 のサブア ルゴリズ ム群(一 部)
checkEU(M,f, g)
T := {s | g ∈ L(s)};
foreach s ∈ T do
L(s) := L(s) ∪ {E(fUg)};
end for
foreach s ∈ T do
U:={s | s_Rs};
foreach s ∈ U do
if f ∈ L(s) ∧ E(fUg) _ ∈ L(s) then
L(s) := L(s) ∪ {E(fUg)};
end if
end for
end for
図 付録 C-4-3EU の 計 算
図 付録 C-4-1 に全体アルゴリズム、 図 付録 C-4-2 及び図 付録 C-4-3 に一部のサブア
ルゴリズムを記述している。全体アルゴリズムでは与えられる CTL 式が先ほどの恒等式
を用いて置き換えられ、すでに AX,AG, AF,AR,ER,AU, EF が現われないものであることを
仮定している。次に E(fUg) を検査するアルゴリズムを挙げる(図 付録 C-4-3)。最後に、
checkEG の手続きを簡単に説明する。EGf の検査をするときに f が成り立ち続ける状態の
特徴付けがポイントとなる。この特徴付けは Kripke 構造 M を有向グラフとしてみたとき、
強連結成分(strong connected component; 以下 SCC で略) でできる。SCC は頂点の集合で
これに含まれる任意の 2 頂点間を結ぶパスが SCC 内に存在する。SCC はそのような集合
のうち極大なものとして定義される
付録C-4.2
LTL モデル検査アルゴリズム
LTL 式のモデル検査は本質的に効率の良いアルゴリズムが望めない (PSPACE-complete)。
このことは LTL 式が本質的にパス(あるいはパスの集合) に関する性質について言及して
おり、有限で簡単な Kripke 構造に対しても、考えなければならないパスが爆発的に増え
ることに原因がある。歴史的には Lichtenstein と Pnueli らの Tableau 法[ Lichtenstein1985 ]
に基づくモデル検査アルゴリズムが先に示されたが 、一般には与えられた Kripke 構造 M
と LTL 式 L に対し、M と ¬ L に対し、ω オートマトンを作成し、それらの積オートマト
ンの空語判定問題を解くことによって、モデル検査を行う方法も知られている[ Gerth1995 ]。
上述のようにシステムに対するモデルとそのモデル上において成り立つべき検査式を
作成すれば、モデル検査アルゴリズムにより、検査式がモデル上で成り立つかどうか網羅
付録-44
的にかつ機械的に探索することが可能である。
付録C-5
時間オートマトン
時間オートマトンはオートマトンにクロックを追加したものである 。
時間オートマトンはロケーションという遷移状態とトランジションと呼ばれる遷移か
らなる。グローバル状態変数として有限個のクロック変数を持つ 。UPPAAL の拡張ではさ
らに有限の値を持つ有限個の変数(離散変数と呼ぶことにする)をグローバルに持つこと
ができる。トランジションではクロック変数と整数定数の比較式 、2 つのクロック変数の
減算式と整数定数の比較式をガードとして課すことができる 。またロケーションではクロ
ック変数と整数定数の比較式をインバリアントとして記述できる。クロック変数は通常の
時計と同様に時間経過にともない一様にそれぞれの値を増加させると意味付けすることが
できる。注意としてクロック変数の値は実数値を持つ。UPPAAL の拡張ではさらに離散変
数に関する制約式をトランジションのガードとして課すことができる。
トランジションで一部のクロック変数の値を 0 リセットすることがきる。また UPPAAL
の拡張では離散変数についてそれらの値を制限のある数式で更新することができる 。
このような TA の構文に対して TA の意味は各ロクック変数の付値及び各離散変数への付値、
ロケーションからなる全状態と 2 種類の遷移(時間遷移とアクション遷移)からなるオー
トマトンで与えられる。また複数の TA の動作定義はアクションを CPS と同様の定義を行
うことによって与えられる。
TA の形式的定義と意味モデル及び遷移の条件を以下に与える 。
定義 クロック制約式
クロックの有限集合 C 上のクロック制約式 g の構文を以下のように与える。
g::=x<c | x≤c | x>c | x≥c | x−y<c | x−y≤c | x−y>c | x−y≥c | g ∧ g
ここで x, y ∈ C, c は整数定数リテラルとする。
c(C) を C 上のクロック制約式からなる集合とする。
定義 時間オートマトン( timed automaton )
時間オートマトン A は 6 項組 (A, L, l0 , C, I, T ) で与えられる。
ここで
 A : アクションの有限集合
 L : ロケーションの有限集合
 l0 ∈ L :初期ロケーション
 C : クロックの有限集合
 I : L → c(C) : ロケーションから クロック制約式 へのラベリング
 T : 遷移集合
である。
C
遷移集合 T は T ⊂ L×A×c(C)×2 ×L を満たす。
𝑎,𝑔,𝑟
遷移 t = (l1 , a, g, r, l2 ) ∈ T を l1 →
l2 と表記する。
a はアクションであり、g をガード、 r をリセットクロックと呼ぶ。
付録-45
定義 クロックの評価関数( clock assignment )
ν : C → R ≥0 なる ν をクロックの評価関数と呼ぶ。
d∈R ≥0 に対して (ν+d) を x∈C なるすべての x について ν(x)+d と定義する。
R ⊆ C とする。
𝑑, 𝑥 ∈ 𝑅
𝜈[𝑅 ⊢ 𝑑](𝑥) = {
𝜈(𝑥), 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
と定義する。
g ∈ c(C) に対して g(ν) を ν の各クロックの評価のもと での g の評価(真または
偽)と定義する。
また、 0
C
で x ∈ C なる各クロック x に対する値を 0 とするクロック評価関数を
表すとする。
定義時間オートマトンの動作意味
時間オートマトン TA =(A,L,l0,C,I,T)に対して TA の状態集合を S = L×N とする。
C
TA の初期状態は (l ,0 ) ∈ S で与えられる。
𝑎,𝑔,𝑟
状態遷移 l1 →
𝑙2 (∈T) に対し次の
2 つの遷移が定義される。
𝑔(𝜈), 𝐼(𝑙2 )(𝜈[𝑟 ⊢ 0])
(𝑙1 , 𝜈) ⇒ (𝑙2 , 𝜈[𝑟 ⊢ 0])
𝑎
,
∀𝑑 ≤ 𝑑, 𝐼(𝑙1 )(𝜈 + 𝑑)
(𝑙1, 𝜈) ⇒ (𝑙1 , 𝜈 + 𝑑)
𝑑
前者をアクション遷移( action transition )、後者を時間遷移( delay transition )と呼ぶ。
𝑎,𝑔,𝑟
アクション遷移は以下を意味する 。 l1 から l2 に遷移 →
があり、 現在のクロ
ッ ク評 価 ν の も と で ガ ード 式 を 満 た し (g(ν)) 、ク ロ ッ ク リ セッ ト を 施し た 後 ν[r
⊢0] で l2 でのインバリアント I(l2 ) を満たすならば、 対応するアクション遷移が
存在する。
一方、 時間遷移は指定された時間 d の間は同一ロケーションに留まるが、その
間インバリアントを満たし続けることを要請している。
d として任意の非負実数を取ること、及び時間遷移は各クロック一様に値を増加さ
せる。
d として任意の非負実数を取ること、及び時間遷移は各クロック一様に値を増加さ
せる。
付録-46
付録C-6
その他、発展的なシステム
確率オートマトンでは確率が遷移に影響を与える。
DTMC(離散時間マルコフ鎖)では状態遷移に確率がラベリングされており、その遷移
が選択される確率がそのラベルに従う。一方 CTMC(連続時間マルコフ鎖)では遷移にラ
ベリングしたパラメータで定まる確率分布に従い、その遷移で経過する時間が定まる。
図 付録 C-6-1 待 ち行列モデ ル
図 付録 C-6-1 は確率 p で遷移する長さ 2 の待ち行列を DTCM で表現したものである。
このモデルに対して例えば検証性質記述として EF p < 0.5 (s2) が記述できる。これは「長
さ 2 にいつか確率 0.5 以下で到達できる」という性質を意味している。Prism 等の確率モデ
ル検査ツールではこのようなモデルや性質に対し、シミュレーションや確率的モデル検査
を行うことができる。
ハイブリッドシステム[Lunze2009]は従来研究されてきた離散モデルに 連続モデル要素
を追加したものである。様々なモデルが提案されている。その中で 1 つ典型的なモデルを
挙げると離散モデルとして従来通りの状態遷移系を持ち連続モデルとして微分方程式を持
つものが挙げられる。これらのハイブリッドシステムは近年注目を浴びている 。
ハイブリッドシステムは多くのシステムを記述できる強力な記述能力を持つが 、現在の
ところ計算機を用いた網羅的解析は容易ではない。
ハイブリッドシステムの研究は進みつつある。以下の研究を挙げておく。
• 形式モデル
–
hybrid automaton [Henzinger1996]
• モデル検査器
– HyTech [Henzinger1997] (線形ハイブリッドオートマトン)
• 記述のための(宣言的)言語とシミュレーター
– Hybrid cc [ Gupta 1995] , Hybrid cc interpreter
– HydLa [Ueda2011] , Hyrose
• ハイブリッドシステムの(商用)総合解析環境
– Simulink
一 般 に モ デ ル 検 査 で は 大 き な シ ス テ ム に 対 す る 状 態 爆 発 問 題 (State Explosion Problem)
への対処が課題となる。
モデル化において人手で行う場合は以下の点に留意する必要が一般にある 。
• 適切なモデルの種類を用いて
付録-47
•
適切な状態数のモデルを作成する
– 人間が理解できて
– システムにおいて着目している側面を維持し
– 状態爆発もしない
付録 C 参考文献
[spin] http://spinroot.com/spin/
[nusmv] http://nusmv.fbk.eu/
[uppaal] http://www.uppaal.org/
[prism] http://www.prismmodelchecker.org/
[Lunze2009] J. Lunze, and F. Lamnabhi-Lagarrigue, “Handbook of
Tools, Applications,”
Hybrid Systems Control: Theory,
Cambridge University Press (2009).
[Henzinger1996] T. A. Henzinger, “The theory of hybrid automata,” Proceedings of Eleventh Annual
IEEE Symposium on Logic in Computer Science, LICS ’96, pp.278-292 (1996).
[Henzinger1997] T. A. Henzinger, Pei-Hsin Ho, and H. Wong-Toi, “HYTECH: A model checker for
hybrid systems,” Lecture Notes in Computer Science, Vol.1254, pp.460-463 (1997).
[Gupta1995] V. Gupta, R. Jagadeesan, V. Saraswat, and D. G. Bobrow, “Programming in hybrid
constraint languages,” Lecture Notes in Computer Science, Vol.999, pp.226-251 (1995).
[Ueda2011] K. Ueda, H. Hosobe, and D. Ishii, “Declarative semantics of the hybrid constraint
language HydLa,” Computer Software, JSSST, 28(1) pp.306-311 (2011)
付録-48