ウォーターフォールに関する風評被害を払拭したい

ウォーターフォール、してますか?

要件定義、設計、製造、検査、配送、と順々に流れていくアレですね。自分たちがやっているのはウォーターフォールだと勘違いされている方々も多々いらっしゃるかと思います。

ウォーターフォールはとても難しい方法であり、人間向けの開発手法であるアジャイルソフトウェア開発が有名になってからは特に多くの風評被害を受け続けています。しかし、その多くは「無計画に進めた」結果であって、「ウォーターフォールを用いた」結果ではありません。

今回は契約交渉にスポットライトを当てて、その違いを見ていきましょう。ついでに、いわゆる「アジャイル」とも比較します。

無計画

*予算を保証する(残業しないとは言ってない)
*納期を保証する(延期しないとは言ってない)
*機能を保証する(変更しないとは言ってない)

契約交渉によって何かを保証することは、確定することと裏表の関係になっています。つまり、確定しなければ保証することもできません。「保証する」と言って実際には「確定しない」のが無計画な進め方の大きな特徴です。

仕事が終わらないのは「終わる」ようになってないからです。適当なところで「終わらせる」ことはできるので、早く帰りましょう。

ウォーターフォール

*予算を保証する
*納期を保証する
*機能を保証する = 変更を受け入れない(有料であっても)

基本コンセプトは「問題の先送りを徹底的に避ける」です。

具体的に言えば、製造の段階で設計の不良を残さないようにしています。製造の段階で設計の不良が残っていると不良品を大量生産してしまうことに繋がります。工程の後戻りを避けるのは副次的な効果であって、本質ではありません。

問題の先送りを避けるため「未知の問題をいかにして発見するか?」ということにとても気を使います。

代表的な対策の一つは「モジュール化」です。

例えば、携帯ショップで新しいプランを契約する場面は「モジュール化」を生かしたウォーターフォールの形です。プランやカスタマイズの全てはあらかじめ完成されたモジュールであり、最終的には一つの契約として統合(製造・組立に当たる工程)されますが、プランとそのカスタマイズの組み合わせはあらかじめ念入りに検討されていて、未知の問題が入り込む隙はほとんどありません。未知の問題がなければ、発見する必要もありません。

アジャイル

*予算を保証する
*納期を保証する
*機能を保証しない = 変更を受け入れる(無料)

ウォーターフォールに対して、アジャイルの立場からは「問題の先送りは避けられない」と考えています。というよりも、そのような案件に適しています。つまり、「想定された部品の組み合わせ(+最小限の新規開発)」以外の全領域です。

どうやって問題の先送りを実現しているのでしょうか?

答えは簡単で、後戻りを工程に組み込めばいいのです。短い間だけ機能を確定し、必ず後戻りして変更を取り込むのが特徴で、変更を繰り返してプロダクトを発展させます。これをスプリントと呼んだり、イテレーションと呼んだりします。

工場など、有形の製品を作っている場面では廃棄が発生するので、あまりに大きな製品は後戻り自体が重くなります。よって、製造数を1にしたり(試作品を作ったり)、部品を細かく分割したりして何度も設計し直していることでしょう。未知の問題を掘り尽くすために。元々、ウォーターフォールの初期段階で「想定された部品の組み合わせ」を用意するために採られていた手法の子孫がアジャイルなのです。

終わりに

あなたの職場はどれに当てはまりましたか?

ウォーターフォールはまだまだ第一線級です。飲食店でメニューから選んで頼むのも、携帯ショップで新しいプランを契約するのも、企業努力によって「ウォーターフォールでできるように」工夫されています。

この記事が気に入ったらサポートをしてみませんか?