紙の上の仕様からはソフトウェアをイメージすることは難しい

ソフトウエアの機能が増加するだけならそれほど問題はないでしょう。しかし,ソフトウエア開発においては,仕様変更がほぼ確実に発生します。紙の上でソフトウエアの振る舞いを打ち合わせたときには納得しても,いざプログラムを見ると「やっぱり違う,直してほしい」と言い出すユーザーは多いものです。私自身も,長らく職業プログラマとしてユーザーの「気まぐれ」に,愚痴をこぼす経験はたびたびありました。

それにもかかわらず,先日,同僚が作成したプログラムに対して,実際に動作するものを見てから注文を出してしまいました。今までさんざん愚痴をこぼしてきたユーザーと全く同じように振る舞ってしまった自分を思うと,ああ,人間とはいかに自分勝手なものかと嘆かざるを得ません。

人間が自分勝手なものであることは否定できないけど、それ以上に、紙の上の仕様からソフトウェアをイメージすることが難しいのだと思う。多くの人が事故を起こすような場所は道路に何か問題があると考えるべきだし、多くの人が事故を起こすようなクルマはクルマ自体になんらかかの欠陥があると疑うべきだろう。
動的なソフトウェアを静的な仕様書で記述することは、3次元の立体を2次元の設計図で表そうとするよりさらに困難だと考えるべきだろう。