■問題その2: 前工程の成果物は完全であることを前提としており、要求の変更などにより工程の成果物に見直しが入ることを想定していない
ウォーターフォールモデルでは各工程はモレなく完全に行われていることを前提としています。後戻りを許さないということは、後戻りしなくてもよいところまで要件をきっちりと詰めて、さらに承認という行為によりその成果物が正しいことを証明されたあとで、次工程に取り掛かることを意味します。この前提は、開発後期の段階に仕様変更が生じた場合、膨大なやり直し作業が発生することになり、納期やコストが超過してしまうというウォーターフォールの弱点を補うためのものと言えます。
しかし、すでに述べたように最近のシステム開発では事前に要件をすべて固めることが難しい上に、ビジネス環境の変化に合わせて要件が変化する可能性もあり、要件定義工程でモレなく完全に要件を洗い出すことは難しくなってきています。したがってウォーターフォールモデルが前提としている工程の完全さが担保出来ず、納期やコストが計画より大幅に超過してしまうというリスクを背負うことになると考えられます。
アジャイル開発では要求が変更される場合は、各イテレーションの計画時にユーザーによる優先順位づけを調整した上で計画されることになります。要求は変更されるものと考え、要求の変更を許容するようなアーキテクチャを選択しておけば、修正が必要な箇所を局所化しておくことも可能で、計画からの大幅な逸脱を避けることができます。
以上の点から、ウォーターフォール型とアジャイル型を図に示すと、次のようになります。