Agile Software Development
- 迅速かつ適応的なソフトウェア開発手法の総称.
- (少なくとも現在は)特定の開発手法をさす語ではない.
- 代表的な手法にXPがある.
- Manifesto for Agile Software Development[日本語訳 アジャイルソフトウェア開発宣言]
-
反復型開発
-
イテレーションと呼ばれる短い期間単位を採用.
- リスクの最小化.期間を短くすることで不確定要素を減らしリスクを下げる.
- 1回のイテレーションは1週間から1か月程度.
- 機能を小さく分割,1回のイテレーションで1機能を開発.
-
イテレーションと呼ばれる短い期間単位を採用.
- 1回の反復が終わるごとに毎回リリースすることを目指す.うまくいかない反復があっても,とりあえずリリースはする.
- 進捗管理は動くソフト(今までにどんな機能が実装済みになったか).実際に動くソフトウェアこそが進捗を示すと考える.
-
文書の量を大幅に減らす.
- 管理資料はつくらない。実際の成果物であるソフトそのものを進捗管理の尺度にする.
- 開発に関わる人が1箇所で作業する.文書はつくらず face to face で即決する.
- 開発に関わる人には顧客が含まれる.ここで顧客とは開発対象のソフトウェアがどんなものかを定義する人という意味なので,実際の顧客でなくてもよい.
計画重視のウォーターフォールに対して,agile software development のような考え方を「適応的開発手法」(adaptive development)と呼ぶ.
予測は難しい,特に長期・大規模になればなるほど難しいことを認め,事前に わからないことを,わからないといおうというのが基本精神.次週何をするかは十分な正確さで説明できる.しかし,次月に何しているかを予測するのは難しいという当然のことを認め,短い期間の開発を繰り返すことでリスクを小さくしようという発想.
カウボーイ コーディングとは ちがう
-
カウボーイ コーディング
- 職人技をもつ個人が自分の正しいと思うコーディングをおこなう.
- 開発に対する明確な手法がない.
- agileでは,計画の再評価,face to faceの意思疎通,相互評価を重視.