開発を繰り返しの単位に分けて少しずつ完成させるモデル。
反復型(イテレーティブ)開発とは、開発全体を「イテレーション」と呼ばれる短い繰り返しの単位に分け、各反復で機能を少しずつ完成させていく進め方のことです。イテレーション(iteration)は「繰り返し・反復」という意味です。
身近な例で考えると、レゴブロックで作品を作るのに似ています。一気に完成形を組むのではなく、まず土台を作って動きを確認し、次に壁、次に屋根…と1パーツずつ確かめながら積み上げることで、途中で気づいた修正も取り入れやすくなります。
上の図解のように、1回の反復ごとに「設計→実装→テスト」を一通り行い、動くソフトを完成させるのがポイントです。反復を重ねるたびに機能が増えていきます。
反復型開発には次のような利点があります。
・早く動くものが見られる:各反復の終わりに動くソフトが得られ、進捗を実感できる
・問題を早く見つけられる:早い段階で動作を確認するため、不具合や誤りに早く気づける
・仕様変更に対応しやすい:次の反復で要望を取り入れられるため、変化に強い
・リスクを分散できる:一度にすべてを作らないので、失敗の影響を小さく抑えられる
ウォーターフォールでは最後のテスト工程まで動くソフトが出てこないため、終盤で大きな誤りが見つかると手戻りが大きくなりがちです。反復型ならこまめに確認しながら進めるので、その不安を大きく減らせます。一方で、反復の計画や全体の管理に手間がかかる点には注意が必要です。
アジャイル開発は、この反復型開発の「短い反復を繰り返す」という考え方を土台にした開発の進め方です。アジャイルでは反復をさらに短くし、変化への対応や利用者との協調をいっそう重視します。
両者の関係を整理すると次のようになります。
・反復型開発:開発を反復に分ける、という大きな考え方そのもの
・アジャイル開発:反復型を土台に「素早く・変化に強く」を突き詰めた進め方
・スクラム:アジャイルの代表的な手法。スプリントという短い反復を繰り返す
つまり「反復型 ⊃ アジャイル ⊃ スクラム」のように、大きな考え方から具体的な手法へと範囲が狭まっていく関係だと捉えると整理しやすいです。