日本で最もメジャーな開発モデル「ウォータフォール」とは

現在のソフトウェア開発で最も日本で多く取り入れられている開発モデルがウォーターフォール型開発である。名前の由来は、システムの開発を「要件定義」「基本設計」「外部設計」「内部設計」「プログラム設計」「コーディング」「テスト」工程の順に滝が上から下へと流れ落ちるように開発していくことからウォーターフォールと呼ばれている。

ウォーターフォール型開発とは

システムの開発を各工程毎に分け管理し、「要件定義」~「テスト」順に上流から下流へ開発を進める開発手法である。各工程で仕上げた成果を明確に文書として成果物として残すことで進捗を管理し、設計工程の段階の上流工程のうちから品質の作りこみができる。

ウォーターフォール型開発のメリット

上記ではウォーターフォール型開発は日本で最も普及している開発モデルであると説明したが、どういったメリットからこれだけ普及しているのだろうか。メリットについては以下の通り。

1.ウォーターフォール型開発の経験者が多い

 

日本ではウォーターフォール型開発は最も多く取り入れられており、比較的大規模なプロジェクトで適用されることが多いため、プロジェクト管理経験者が非常に多くプロジェクトマネージャーを確保しやすい。

さらに、ウォーターフォール型開発には、たくさんの適用事例があることから、ほとんどのシステム開発プロジェクトの経験者が使用しているため、プロジェクトの新規参入者に細かい説明をしなくてもプロジェクトの内容を理解してもらいやすい。

2.プロジェクトの進捗管理を明確化しやすい

 

実装の前に各設計工程で文書化してから承認を得た上で次の工程へ進むので、各工程が成果物として残るため、スケジュールや進捗を明確化しやすく、プロジェクト、開発要員の進捗管理のコントロールをしやすくなる。また、各工程で仕上げた成果を明確に文書化し、承認された後で次の工程へと開発を進めていくため、工程ごとに成果物の承認時に請求を行えるため資金繰りを行いやすく、ソフトウェア開発を行う際に、その都度契約を交わす必要である現在の日本のソフトウェア開発に適している。

ウォーターフォール型開発のデメリット

上記ではウォーターフォールのメリットを挙げてきたが、逆にどのようなデメリットがあるのかについて以下に挙げる。

1.開発途中での仕様変更及び追加に対応しにくい

ウォーターフォール型開発では、設計、仕様について主に上流SEが決める。設計、仕様が確定した後、PGが仕様書通りにコーディングする流れである。工程ごとに作業が進んでいくため、前工程に手戻りすることが難しい。また、開発の最終段階にならないと実際に動作するシステムなど目に見えるものが出てこないため、ユーザの意見を反映しにくい。

そのため、契約時や上流では明確となっていなかった想定外の顧客の要望や設計ミスなどが原因の仕様変更及び追加対応が発生した場合に納期遅延や予算超過につながってしまう恐れがある。

2.成果物作成に時間が掛かる

ウォーターフォール型は成果物としてのドキュメントがないと次の工程へ進めないことから、システムの開発規模が非常に大きい場合、結果的にドキュメント量は膨大になりやすく作成のための時間や仕様が変更による修正の管理に手間が掛かる。

ウォーターフォール型開発はどういった開発プロジェクトに向いているか

ここまでウォーターフォール開発の特徴や問題点を挙げてきたが、どんなタイプの開発プロジェクトがウォーターフォール型開発に向いているのだろうか。

1.大規模システム開発に適用しやすい

 

大型システムの開発は、たくさんの開発者が分担して平行して進むことから、あらかじめ決められた方針に沿って、開発者全員が決められた目標に向かって作業を進められる。ただし、開発途中での仕様変更及び追加が発生しないという前提である。

2.ユーザの要件が明確に定まっているシステム

 

ウォーターフォール型開発は設計、仕様が確定した後に仕様書通りにコーディングする流れであるため、ユーザの要件が明確になっており、ユーザー要件反映漏れ、誤りによる仕様変更及び追加によって前工程に手戻りが発生しない場合に適している。

まとめ

ウォーターフォール型開発は、ユーザの要件がはっきりと定まっているシステムの場合に適している。しかしながら、最初から自分の欲しいソフトウェアをはっきりと説明できないことが多く、出来上がったソフトウェアを見てから、自分の欲しいものではなかったと気づくことが多い。そのため仕様の変更、修正が発生して、コストの増加や納期の遅れが発生しやすい。そういった理由からウォーターフォール型開発の欠点をカバーできる反復型開発の取入れが必要となっている。しかしながらプロジェクトの特性によって反復型開発かウォーターフォール型開発か使い分ける必要があり、大規模システム開発などスケジュールや進捗を大勢の開発者に明示する必要がある場合にはウォーターフォール型開発が適しているが、逆に仕様の全体が見えないシステム開発などは反復型開発が適していることもあるため、適切な開発手法を選択、改善を行う必要がある。

免責事項

情報の掲載には注意を払っておりますが、掲載された情報の内容の正確性については一切保証しません。また、当サイトに掲載された情報を利用・使用(閲覧、投稿、外部での再利用など全てを含む)するなどの行為に関連して生じたあらゆる損害等につきましても、理由の如何に関わらず自己責任で行う必要があります。

 

 

参考文献

エンジニアの入り口 produced by リナックスアカデミー

開発手法の基礎、ウォーターフォールモデルの特徴とは

http://www.linuxacademy.ne.jp/lablog/programmer/98/

 

Mayonez

ウォーターフォール型開発とは?メリットとデメリット・開発事例

https://mayonez.jp/topic/3101