本フェーズの入力は,様々なタイプの多数の合意文である.最上位の目的,システム要求,ソフトウェア要求,環境に対する前提,関連する問題領域の特性と概念定義である.(…)出力は,要求文書(RD)の最初のバージョンである.(p.119)
以前のスパイラルモデルの第4象限にあたるのが,本章である.この章では,形式的・半形式的・自由形式での様々な書き方の紹介がある.ここに深入りすると終わらなくなるので,注意しながら説明していきたい(それでも横道にそれるだろうが).
「制約のない自然言語による自由形式」方式
利害関係者が多数いる場合,自然言語による方法は,形式としてはもっとも障害が少ない.一方で,曖昧さの問題がつきまとう.
以下が例のひとつである.
次の場合に,列車は全制動しなくてはならない.失効した加速指令を受けたとき,または,X m.p.h より速い速度で駅区画に入ったとき,かつ先行する列車との距離がYメータより近くなったとき.
ここでは,「または」と「かつ」が混在しているので,全制動するのがいつなのかが,分かりにくくなっている.次のパターンが考えられるとしている.
- 失効したコマンドを受け取ったとき,或いは,(駅区画に速い速度で入って)先行する列車と近づきすぎたとき
- 先行する列車と近づきすぎたとき
今,条件らしきものは三つあって,構造は,A or B and C となっている.これを,A or (B and C) と考えるか,(A or B) and C と考えるかである.
ここで,後者は,なぜ C だけに単純化できるか? ORで繋ぐ2つの条件式は,意味がないというのが,ここでの説明である.但し,Case1とCase2に重なり合う部分がないとする.
if Case1 then <Statement1> or if Case2 then <Statement1>
この真偽は,次のように変形することで求めることができる.
(not Case1 or Statement1) or (not Case2 or Statement2) // 含意に対して良く用いる命題論理式の変形
これは,次の様に変形できる.
not (Case1 and Case2) or Statement1 or Statement2
not false or Statement1 or Statement2
ここから明らかに,恒真式となる(not false は true でそれが,OR結合しているから).
従って,中黒の2番目「先行する列車と近づきすぎたとき」のみが残ることになる.
論理式については,別途まとめることになるが,ここでは重要なのは,自然言語を論理式に置き換えることによって,曖昧さを取り除けるかもしれないということである.論理式が自然言語よりすばらしいということではない.
(nil)