アジャイルソフトウェア開発
Adaptive Software Development
ユーザ機能駆動開発 (FDD; Feature Driven Development)
Dynamic Systems Development Method (DSDM) (1995)
エクストリーム・プログラミング (XP) は、最初のアジャイル開発手法ではなかったようだが、数あるアジャイル開発手法の中で抜きん出た評判を確立した。 エクストリーム・プログラミングは、ケント・ベックが1996年に開発し、米クライスラー社で苦境にあった Chrysler Comprehensive Compensation (C3) プロジェクトを立て直す際に、実践した。 そのプロジェクトは最終的には中止となったが、ケント・ベックの開発手法は、Ron Jeffries による長期の指導と、ウォード・カニンガムの Portland Pattern Repository wiki での公開議論と、ケント・ベックのさらなる改訂を経て、1999年に書籍として出版された。 エクストリーム・プログラミングの構成要素は、別のアジャイル開発手法 Scrum と、ウォード・カニンガムの Episodes pattern language を、基にしているようである。
Dynamic Systems Development Method (DSDM) はヨーロッパで最初に確立されたアジャイル開発手法であると考えられている。
アジャイルソフトウェア開発は人間・迅速さ・顧客・適応性に価値をおくソフトウェア開発である(アジャイルソフトウェア開発宣言)。すなわち自己組織的なチームが対話の中で方向性・仮説を見出し、顧客へ価値を素早く届け、実践投入の学びから素早く改善をおこなう在り方に価値を置く。
この価値観を共有する開発がアジャイルソフトウェア開発であり、アジャイルソフトウェア開発という言葉はソフトウェア開発工程やソフトウェア開発方法論、またはその総称ではない。特定の開発工程に縛られることはないが、実態として多くのアジャイルソフトウェア開発でみられる典型的な開発工程が存在する。典型的にはまずアイデアを価値を生む範囲で小さく分割する(例: 新機能のコア部分)。その価値を実現する成果物を短いイテレーションの中で計画・実装・デプロイすることで(⇒反復型開発)、顧客へ迅速にプロダクトを届け価値の実証・学習・適応をおこなう。1つのイテレーションは小規模なソフトウェア開発プロジェクトに似ている。適応はプロジェクトにおける優先度の更新として可視化される。
開発を短期間に区切りこの区切りごとに計画・開発・デプロイ・適応をおこなうパターンがしばしばみられる。この1サイクルはイテレーション(例: エクストリームプログラミング)やスプリント(例: スクラム)と呼ばれる。イテレーションを導入する目的は、迅速にプロダクトをデプロイし適応するサイクルが着実に回るよう動機づける・習慣づけることである。