ウォーターフォール式開発とはどのようなことか

システム開発の方法として、ウォーターフォール式開発という方法があります。この手法は多くの開発現場で取り入れられているものです。葉の上を水滴が流れ落ちていくようなイメージでこの名がついていて、開発の方法としては古くからスタンダードになっている方法です。システムを開発するための工程を最初から最後までしっかりと区切り、順を追って確実に進めていく方法になります。各工程のことをフェーズと呼ぶことが多いです。

ひとつのフェーズから次のフェーズに進むために綿密な確認を行い、逆戻りが発生しないようにするのが定石ですが、実際の開発ではやむを得ず逆戻りが発生することも多いです。そのため、各フェーズである程度ゆとりをもったスケジューリングが大切になってきます。各プロセスは工程表として発注側と共有することがほとんどで、項目が縦軸、時間が横軸で表され、上から順にバー状に塗りつぶし、各フェーズをどのタイミングで、どの程度の期間かけることになるのかということを示します。

時間軸に沿ってそのタイミングのフェーズに集中することになるため、確実にこなしていかなければ工程が逆戻りし、開発期間が伸びてしまうのが難点です。このスタイルでは最初の要件定義をもっとも重視し、漏れの無いように綿密に詰めていくことになります。あらかじめ開発したい機能を明確にすることができなければ、採択することが困難な方法です。とりあえず使ってみてランニングチェンジしていきたいというような場合には適さない開発モデルになります。

また、開発期間が長大なものになると、その間にビジネス構造自体が変わってしまう可能性もあります。ビジネスのスピードが加速している昨今においては、数年に渡る開発期間を設けてしまうとシステムが完成した頃にはすでに陳腐化しているという状況もありえます。特に進歩が著しいWeb系のシステムにおいてはそのリスクがもっとも高く、そのようなことを回避するためにすべてオリジナルのフルスクラッチ開発ではなく、あらかじめ提供されているパッケージソフトウェアの導入が増えているということです。

外的要因に左右されにくい基幹系のシステムに関しては、社内のワークフローを固めておけば陳腐化することはないので、この方式によるフルスクラッチが採択されることが多いです。一般に公開される部分に近づくほどパッケージ導入の割合が増えます。変化する市場に対応するためにはやや形骸化した方法といえますが、確実性という意味では信頼性が高く、工程の把握も容易なため、重用されています。