オブジェクト指向技術を日本でいち早く紹介するなど、ソフトウエア開発の現場における品質向上にこだわり、「バグ無し」開発を追い続けるコンサルタント兼翻訳家の酒匂 寛氏。バグ無し開発の現状について聞いた。
(聞き手は田島 篤=出版局)



バグ無し開発に一貫して取り組まれています。そもそもバグ無し開発は本当に可能なのかを教えてください。

 結論から言えば、ソフトウエアを開発するうえで、その論理的な振る舞いを表現した仕様(スペック)が正しく与えられれば、バグ無し開発は可能です。

 ただし、これは大前提に過ぎません。ソフトウエアができたとして、その与えられた仕様を正しく実装できたのか、さらには、仕様そのものは正しかったのかが問われます。実装が正しかったとしても、仕様が正しいとは限らないわけです。こうして見ていくと、そもそもバグとは何なのかという疑問が浮かびます。バグとは何でしょうか。

[画像のクリックで拡大表示]

プログラムのなかにある不具合だと思いますが。

 そうだとすれば、仕様が正しく与えられていれば、それを正しくプログラムに変換できるかどうかという意味でのバグ無し開発は可能です。ただ、「仕様を正しくプログラムに変換できたか」を確認するためには、基準となる仕様がはっきりしていなければなりません。

 仕様というものを、要求を出す側と開発する側の合意と見なし、そこを明確化するための概念として「契約による設計」と呼ばれるものがあります。

 契約による設計とは、あることを実現したいときに、前提となる状態(事前条件)があり、これに対して適切な仕事をしたら、望んでいる状態(事後条件)が実現されることをきちんと書いて、要求を出す側と開発する側が合意しておきましょうということです。ここで「仕事をする」という部分がプログラムの役割になりますが、実際の仕事の内容そのものを考えることは開発者に任されています。

 この契約による設計という概念を実現するための手法として、例えば、形式仕様記述を用いることができます。形式仕様記述言語の一つに、VDM(Vienna Development Method)と呼ばれるものがあり、比較的素直に「契約による設計」としての仕様を表現することが可能です。ここで書かれる仕様とは、具体的には、入出力の型や事前・事後条件、不変条件などを指します。この仕様が、要求を出す側(プログラム発注者)と作る側(受注者)の契約書になるわけです。

この先は日経クロステック Active会員の登録が必要です

日経クロステック Activeは、IT/製造/建設各分野にかかわる企業向け製品・サービスについて、選択や導入を支援する情報サイトです。製品・サービス情報、導入事例などのコンテンツを多数掲載しています。初めてご覧になる際には、会員登録(無料)をお願いいたします。