アジャイル開発の方法論は大きく2分される。ひとつはXPに代表されるプログラミング改善を主に置くもの。もうひとつはFDDに代表されるリリース改善に主を置くもの。
FDDの特徴は機能毎にリリース計画をたてることである。システムを6ヶ月後にデリバリーしなければならないなら、通常の開発であれば、最初の1ヶ月目で基本計画と要件定義、2ヶ月目で基本設計、3ヶ月目で詳細設計、4ヶ月目でプログラミングと単体テスト、5ヶ月目で結合テストとシステムテスト、6ヶ月目で受け入れテストとデータ移行、リリースという感じであろう。しかし、これでは受け入れテストでクライアントがNGを出した場合にリリース遅延が発生してしまうリスクがある。
そこでFDDでは重要な機能を先行リリースする。これによりクライアントが重要な機能でNGをだしても対応が容易い。

例えば買い物サイトを考えてみよう。ざっと考えても次のような機能があげられる。

ドクロログイン機能
ドクロメニュー機能
ドクロ商品照会機能
ドクロ商品明細機能
ドクロ買い物カゴ照会機能
ドクロ会計機能
ドクロユーザ登録機能
ドクロユーザ管理機能
ドクロ商品管理機能
ドクロ取引管理機能

さて、FDDで開発するならこれらの機能に優先順位をつけなければならない。
まず、リリース日に最悪間に合わなくてもいい機能を洗い出そう。それは管理機能、つまりユーザ管理機能、商品管理機能、取引管理機能である。これらは最悪リリースに間に合わなくても運用でなんとかなる。一般ユーザが使う機能ではないからだ。これらは最後にリリースする。
次に画面遷移順に優先順位を考える。これなら優先順位の高いのはログイン機能でありメニュー機能である。
さて、いまの段階で優先順位は3段階に分けられている。

<優先順位1>
叫びログイン機能
叫びメニュー機能
<優先順位2>
ニコニコ商品照会機能
ニコニコ商品明細機能
ニコニコ買い物カゴ照会機能
ニコニコ会計機能
<優先順位3>
ドクロユーザ管理機能
ドクロ商品管理機能
ドクロ取引管理機能

これでイテレーションは3回だが、もう少し分割してイテレーションを7回にしてみよう。

<優先順位1>
叫びログイン機能
叫びメニュー機能
<優先順位2>
ニコニコ商品照会機能
<優先順位3>
にひひ商品明細機能
<優先順位4>
ラブラブ!買い物カゴ照会機能
<優先順位5>
ラブラブ!会計機能
<優先順位6>
ドクロユーザ管理機能
<優先順位7>
ドクロ商品管理機能
ドクロ取引管理機能

優先順位が決まったら次にリリース日を計画する。最初のリリースはログインとメニューしかない所謂ブランクシステムである。といっても、ログイン機能にはログイン画面の他にユーザ登録画面が必要だし、セッションにユーザ情報をセットしなければならない。ユーザ情報を管理するテーブルも必要だ。メニューにしてもトップ画面としての画面デザインも重要である。また、最初のリリースであれば開発者も環境に「慣れ」ていない。つまりこのリリースは簡単ではない。そこでイテレーションは4週間に設定し、優先順位2移行を2週間単位でリリース計画をたてる。

イテレーション型は従来型のやり方を何度かに分けているにすぎないのでリリース日は早まるわけではない。だが従来型に比べ、フィードバックによる学習効果がある。これにより開発者の勘違いが減り、単体レビューによる手戻りは激減する。またノウハウをシェアできるので開発効率や品質は向上し、遅延による損害リスクも最小限に抑える事ができる。