KAOS (59) 要求の仕様化と文書 (4.0, 4.1)

本フェーズの入力は,様々なタイプの多数の合意文である.最上位の目的,システム要求,ソフトウェア要求,環境に対する前提,関連する問題領域の特性と概念定義である.(…)出力は,要求文書(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)