SBVA法の今後の展開と関連研究
要求の記述と表現方法
システムの「あるべき姿」が見えてきたら、それを何らかの形で表現する必要がある。つまり、後の実装工程のために要求仕様を記述するわけである。その表現方法は、日本語による文章形式や、各種の図解表現、UMLなどのモデリング表記、数式を用いた厳密な表現など、多種多様である。
「自然言語」とは、日本語や英語といった我々が普段日常の中で用いている言語のことである。「形式言語」とは人工的に作られた言語で、数学を基礎に文法や意味論が厳密に定義されている。UMLも形式言語の一種であり、図式(ダイヤグラム)による表現が可能で、文法や意味論が定義されている。
自然言語は、特殊な訓練を積まなくても誰でも読み書きが可能であり、どんな対象領域でも表現できる。ただし、記述の論理性に充分に配慮しないと、あいまいな表現や言葉の持つ多義性により、誤った記述や解釈が起こりやすい。
一方、形式言語は論理や集合を使って解釈が一意になるよう厳密に記述するため、先の自然言語で記述した場合に起こり得る曖昧性や多義性をクリアできる。しかし形式言語を使うためには、普段使い慣れている自然言語と違った、記述のための新たな言語を習得しなければならない、といった障害がある。
形式言語や自然言語以外の表現手段として各種の「図解表現」がある。UMLも図解表現が可能であるが、ここで言う図解とはもっと一般的に非形式的なもので、ちょっとしたスケッチなども含む。シンプルなシンボルを用い、空間的位置関係(上下左右)、あるいは矢印などの誰にでも理解できる表現により、図を描いた方が直感的に分かりやすく記述できる対象もある。しかしながら空間的位置関係に基づく表現などが必ずしも意図した通りに相手に伝わるとは限らず、また作成者の美的センスにも依存するという問題もある。
なお、UMLはもともと図解表現に重点をおいて開発されたと言っても良いが、近年では形式的な意味が厳密に定義されており、その位置付けはずいぶんと変化している。これらの表現方法のメリット・デメリットを図3にまとめる。
形式言語はなぜ普及しないのか?
さて、本連載では、自然言語と図解表現を積極的に取り入れたSBVA法について述べてきた。そこで最後に「形式言語」について述べてみたい。なぜ形式言語による記述はなかなか普及しないのであろうか。
形式言語で仕様を記述するには非常に工数がかかる。そのことを嫌って、例えばXP(eXtreme Programming)のように要求を厳密に記述する必要はない、としている方法論もある。XPの場合、UMLを用いる場合であっても、適宜必要なダイヤグラムの必要な記法のみを用いてシステムのラフスケッチを得ることを目的として利用する。これは、UMLを本来の目的であるビジュアルであり、なおかつ形式的な表現手法として使用すると、アジャイル開発において必要なスピード感が得られないからである。
一方、形式言語は厳密な記述により、仕様の矛盾や整合性を検証することができる。UMLでも、バージョン2で導入されたOCL(Object Constraint Language)を用いることで、モデルの意味を正確に記述できる。
こういった形式言語を実際の開発に用いる場合、自ずと開発プロセスが変化してくる。先ほど述べたXPのようなアジャイル開発にはなかなか適用しづらい。しかしながら、開発全体に形式的な手法を導入する必要はなく、できる範囲で用いれば良いのである。例えば、基本的には自然言語で記述し、モデリング言語による図を適宜入れる。そしてその一部のみを形式言語で記述して部分的に検証するなど、適材適所で言語を使い分けることで自分たちにとってベストな開発を進めれば良い。
近年、ようやく形式手法も産業界で注目されつつある。形式手法の歴史は思いのほか長い。しかし、学術的研究中心で独自な発展を遂げてきたため、現実問題への適用にそぐわない部分が出てきたりもする。一方、産業界では「形式手法 = 非実用的」という認識が根強く残っている。こういった誤解の払拭や、産業界にとって真に役に立つ研究が強く望まれる。