開発プロセスモデル
ウォーターフォールモデルとは
代表的な開発プロセスの1つにウォーターフォール・モデルがあります。今回は、このウォーターフォール・モデルに焦点を当て、説明していきます。
ウォーターフォール・モデルは、非常に古くから存在するもので、1970年ごろまでさかのぼると言われています。ウォーターフォールモデルでは、プロジェクトの全体工程を「要件定義」「設計」「実装」「テスト」「運用」等の工程に分割します。そして、これら分割された各工程を、直列に進めていくことで、システムを構築していく開発プロセスです(図1)。各工程を直列に進めていくということで、水が川を流れるかのごとく、上流から下流まで開発を進めていくため、「ウォーターフォール」という名前が付いています。
ウォーターフォール・モデルでは、各工程を直列に進めるため、各工程の開始や終了のタイミングが非常に重要となります。通常は、各工程での成果物が明確に定義されていて、その成果物の作成が終了したら、その工程が終了となり次の工程に進みます。ですので、ある工程においては、前工程の成果物を前提として、前工程の成果物の内容を精緻(せいち)化/実現化する方向で、自工程の成果物を作成することにより、開発は進められます。
よく、「ウォーターフォール・モデルは、後戻りできない」という話を聞きます。前工程の成果物が前提となっているため、後工程に入ったら前工程の変更はしない、という意味合いです。これについては、特に「ウォーターフォール・モデルでは、絶対に後戻りしてはならない」と言う訳ではなく、現実問題として、前工程の変更はしないのが一般的、程度に考えた方が良いでしょう。前工程を変更するかしないかは別問題としても、ウォーターフォール・モデルは基本的に、上流工程で決まったことが正しい、下流工程で後戻りを発生させないように、上流工程できちんと決めておく、というコンセプトになっています。
ウォーターフォールモデルの向き/不向き
上で説明しましたが、ウォーターフォール・モデルでは、前工程の成果物の上に、次の工程の成果物を重ねていきます。つまり、後工程の成果物は、前工程の成果物の品質に左右される、ということです。品質が良ければ後戻りは発生しない、という考え方ですね。
では、後戻りしない開発は、実現可能なのでしょうか。先ほど、ウォーターフォール・モデルは古くからある、と述べましたが、コンピューターが「計算機」だった時代は、ウォーターフォール・モデルは、今よりも現実的な開発プロセスだったと思われます。最近は、ECサイトや企業内ポータル等、さまざまな要件をシステムで実現できる世の中になっていますし、その要件が企業の競争力の源泉になっていることも少なくありません。
そういう意味では、要件変化のスピードはシステム開発のスピードよりも速いのが普通ですから、極端な話、「3ヶ月後に使うシステムの要件を、今決めて変更しないのは無理」というユーザーの声も、ある意味うなずけます。
ウォーターフォール・モデルに限らず、開発プロセスには、向き/不向きがあります。そのため、重要なのは、開発プロセスの持つメリット/デメリットを踏まえた上で「どの開発プロセスを適用するか」を見極めることになります。開発プロジェクトによっては、すでに開発プロセスが決まっていて、開発プロセスの選択肢がない場合もあるでしょう。その場合には、「どのように適用するか」を工夫することになります。では、メリット/デメリットについて見ていきましょう。