不具合が見つかって初めて仕様が分かる

大きな規模のソフトウェアを開発していると、全ての仕様を完全に把握している人なんかいないので、各種のインターフェースやライブラリ等を境界として、仕様の切り分けが行われることになる。そのインターフェースは厳守するものとして、仕様変更時に他へ影響を及ぼす可能性があるのなら、事前に関係者へ連絡して合意を得ておくことは必須だ。

しかしながら、物事はいつもそんなにうまく行くとは限らない。暗黙の仕様やら変更履歴に載っていない仕様が存在する上に、開発者自身が理解していない意図せぬ仕様も含まれていたりする。そんなわけで、緊急招集された関係者は障害の発生状況を見ながら議論を始めることになる。曰く、こんな感じ。

  • 「このライブラリを、そんな形で使っているなんて知らなかった」
  • 「この変更が、そちらのモジュールへ影響するなんて認識していなかった」
  • 「あのデータ形式の変更が、こちら側に関係するなんて聞いていなかった」

こんな議論を経て、ようやく仕様に対する共通理解が生まれることも珍しくない。変な話だけど、これが現実だ。全ての仕様を資料に書けと言われても、読み手の背景知識はそれぞれ異なるから、書くべき内容も異なる訳でややこしい。作り手が想定していない使われ方をされたソフトの動作は、誰が判断すべきなのだろう?これをコミュニケーションの問題として片付けるのは少々無理があるように思う。