最近はさすがに減ったようだが、ベンダーが持ってくるシステムの開発企画書にはよく「ウォーターフォール型の開発により手戻りが少なく品質の良いシステムを作ります」みたいなことが書いてあった。
もう10年くらい前からだろうか、こういう一文が書いてあると、それだけで企画の評価を下げることにしていた。

ウォーターフォール型開発というのは、作る側には都合が良いだろうが、ユーザーには特に恩恵らしきものはない。もちろん開発がうまくいって、品質の良いシステムが手戻りなく、低コストできればそれに越したことはないけれど、普通、開発委託契約をする場合は、特段の変更がなければ、委託費は最初に決まった額であり、手戻りがあろうがなかろうが、支払う費用に違いはない。バグがあれば瑕疵担保責任を問うだけだ。
つまりウォーターフォール型開発というのは、ユーザーの問題ではなく、ベンダー側の問題であり、それも結果論にすぎない。
写真はウォーターフォールならぬ"Fallingwater"(落水荘)。本文とは関係ありません。
もちろん、委託契約を結んだ以上、委託先と発注元は運命共同体であり、双方が協力してプロジェクトを円滑に進めなければならない。そうしないと信頼関係も生まれず、第一、仕事が楽しくない。
ベンダーもわかっていると思うが、ユーザーの要求というのは、システムの姿が見えてくれば、より鮮明になってくる。ここをこうしてほしい、ここは変えてほしい。ところが、伝統的なシステム開発では、画面や帳票のデザインが初期に決定され、この段階でユーザーは仕様凍結を求められる。つまり、システムがユーザーに見えてくる前に、仕様凍結を強いられることになる。
しかし、データ構造やシステム操作手順がわかってくると、画面や帳票への要求は変わってくるのが普通である。ここで仕様変更だと大騒ぎされるとユーザーは困ってしまう。
もちろん、一般にシステムはモジュールの組合せで動くわけで、モジュールの仕様が変わればそのモジュールを使用する他の部分がすべて影響されるから、そういう意味ではモジュールの仕様凍結は重要である。
しかし、画面や帳票の見た目というのは、通常、システム内の他のモジュールに影響を与えるわけではない。かりに表示するデータが別のテーブルなどに由来して異なるSQLを発行しなければ実現しないとしても、それはこのモジュール自身が解決できることであれば、システムの他の部分には影響しないわけだから、仕様凍結をする論理的な意味はない。
仕様凍結をするもう一つの意味は、ベンダー側の再委託という問題である。表示項目、その長さや形まで確定していないと、完全なプログラムとしての仕様書にならないから、プログラム開発を外部委託する場合は、そこまでの仕様が求められる。そしてその些細な変更でもプログラムの再開発として計上されることになる。日本のベンダーでは、このプログラムを海外に委託している例も多いようだから、これが外注経費を押し上げる結果になる。
これはベンダーの無能さの表れでしかない。このコストをユーザーに押し付けられてはたまらない。
一般に、同一システムを開発・運用する場合、そのコストはシステムの品質に反比例する。
品質管理の認証、ISO9000シリーズというのがある。これも嫌いなものの一つだ。
こういう認証をとっている事業所の場合、会議や仕様凍結のたびに、ユーザーに確認を求めてくる。そういうドキュメンテーションがなされないと品質管理の認証を取得できないからだ。そしてこれが正規の書類となって、これへの変更は通常、仕様変更として委託費の増額の根拠となってくる。
ISO9000は品質管理技術の認証であって、製品の品質を直接保証するものではない。
ISO9000を取得していてもいいけれど、それを振りかざされるとユーザーは大迷惑だ、と思うのである。
異論のあるかたも多いだろうけど、これだけは言っておこう。
いやしくもシステム技術者ならば、無批判・無自覚に開発手法を選択するのは恥ずかしいことだ。
- 関連記事
-