自然言語に、人工言語的な形式化のルールを適用して、サブセットを作る

要求仕様書文章の質 ―日本語による要求仕様書記載文型― その2

http://www.juse-sqip.jp/honne/backnumber_023.html

 

こういう試みをやってみる人がいるのですなあ。

日本語の文法、品詞の種類に分け入って、ソフトウェア要求仕様を記述するために、人工言語のように厳密な意味論と構文を持つ言語のサブセットを作ってやろう、という狙いのようです。

面白い試みだな、と思う反面、何点か。

 

まず、「これから表現しようとしている、要求そのもの」が、厳密で明瞭であることが前提になっていますよね。つまり、ある程度要求が引き出され、はっきりしてきたところで使い始めることになる。

そして、それがいつになるかは、分かりません。プロトタイプを作ってみたところで、あるいはシステムテストになったところで、「厳密な要求」が分かるかもしれない。・・・ここまできた後では、「形式化した日本語」であらためて表現する意味は無いでしょう。

つまり「いつ使えるのか・使うのか、よく分からない」。

 

あるいは、「このルールに従った形で表現可能なレベルを目標に、厳密化していく」ことも考えられる。そうすると、「いつ使えるか・使うか」は決められます。

でも、本当に可能なんでしょうか?自分の頭の中にある要求を、この不自然な言語を駆使して、厳密に表現できるユーザーはいるのでしょうか。また、文章で表現された全体が、矛盾無く厳密に表現できていると、検証できるユーザーや開発者はいるでしょうか?

結論から言えば、かなり難しいでしょうね。本文でも述べられている通り、UMLのクラス図などでモデリングし、そのモデルへの付記において「形式化した日本語」を使う、という使い方をして、全体を見渡しやすくしてあげないと、かなり難しい。

でもって、UMLを書いた瞬間に、あえて「形式化した日本語」である意義が薄れてしまいます。クラス図の多重度の表記であったり、OCLであったり、もっとうまく形式的に意味を表現する人工言語があるわけで。

 

結局、自然言語は、曖昧さが弱点ではあるのだけれども、その曖昧さによって、曖昧なアイデアを発して、他者に伝えることができます。そこに誤解が生じ得るのは間違い無いけれども、曖昧さが緩衝地帯となって、大量の情報を伝えられることも認める必要があるのではないでしょうか。形式言語化した日本語というアイデアは、その曖昧さを奪うことにより、あまり筋の良い取り組みではないように思います。