アジャイル開発とウォーターフォール開発の違い



ソフトウェア

公開日:2020/8/11          

前提知識


■ウォーターフォール開発
ウォーターフォール開発とは、システムやソフトウェア開発手法の一つで、初めに要件定義/システム設計を行い、その後は決められた計画に従い設計/検証していく開発プロセスです。 重要なポイントは、一度決めた要件/システムは後から変更されないという前提で設計する、つまりそれくらいきっちり要件/システム固める必要があるということ、また、 それぞれの後工程に対しても、成果物をしっかり引き継いでいく必要があります。この様に上流から下流に仕事を受け渡していく様、一度流れたら上流に戻らない様が、 水が高い所から流れていく様に似ている為、ウォーターフォールと呼ばれます。

下記はモデルベース開発のV字プロセスに対してウォーターフォール開発を当てはめたものです。モデルベース開発とウォーターフォール/アジャイル開発は相反するものではなく、共存可能です。



<メリット/デメリット>
メリットは、全体の進捗を管理しやすいこと、成果物を後工程に引き継いでいくので担当者が別れていても対応できるので大規模開発に向いています。 一方でデメリットは、後戻りが無い前提といっても開発を進めていくうちに、新たな要件が加わる等、当初の前提が崩れる場合があり、その際に大幅な計画の見直しが生じます。

従ってウォーターフォール開発が適しているのは、当初決めた要件が変わりにくく、かつ大規模な開発が適しているといえます。建築、土木業などはこの開発が適しているのではないでしょうか。 なお私が携わっている自動車開発は、他社との激しい競争、市場のニーズの変化に即応する必要があるという性質上、要件が頻繁に変わるので、このウォーターフォール開発は適しているとは言い難いと感じております。

■アジャイル開発
アジャイル開発とは、ウォーターフォールとは異なり要件の変更がある前提で開発を進め、小規模な実装とテストを繰り返して開発を進めます。要件を決めても、いざ物を作ってみたらやはりイメージと違うというのは良くあることで、要件を修正し改善していきます。



<メリット/デメリット>
メリットは、変化する要求に即応できるので手戻りによる開発工数のロスを少なくできます。デメリットは、変更を受け入れやすい一方全体の進捗を把握しづらいため、個別に要求をどんどん受け入れてしまったがために、いざ蓋を開けてみたら、もともと定めた納期をオーバーしてしまうという事があり得ます。 そのため、全体を管理し状況に応じて要求を取捨選択するマネジメントの存在が必要です。

また注意が必要なのは、アジャイルは、仕様ミスがあってもリカバリーはしやすいですが、仕様をミスしても良いからとにかく作ってみよう、という考えではありません。仕様ミスは無い方が当然手戻りは少なるので、 仕様ミスを防ぐ手立てを考えることは必要です。

<アジャイル開発とリーン開発の違い>
アジャイル開発とリーンソフトウェア開発はセットで語られることがありますが、リーンソフトウェア開発とはアジャイル開発を進めるための手法の一つです。リーン開発の詳細はこちらで説明。









サブチャンネルあります。⇒ 何かのお役に立てればと

関連記事一覧



ソフトウェア