アジャイル開発 【agile software development】 アジャイルソフトウェア開発
概要
アジャイル開発(agile software development)とは、ソフトウェアを迅速に、また、状況の変化に柔軟に対応できるように開発する手法の総称。「アジャイル」(agile)とは、俊敏な、しなやかな、素早い、などの意味で、短いプロセスを何度も反復して次第に全体を組み立てていくアプローチの手法が多い。従来から主流であるウォーターフォール型などの開発プロセスでは、要件定義、設計、実装、テストなどの各工程を順番に一度だけ行なうことを前提にしているが、アジャイル開発では一度ですべてを作ろうとせずに、当初は最低限の機能だけを持ったソフトウェアの完成を目指し、各工程を迅速に進める。
とりあえず動作するソフトウェアを元に、開発チーム内あるいは顧客とチームが密接に議論を交わし、変更する箇所や追加する機能を決め、もう一度各工程を反復する。このサイクルを短い周期(多くの手法では数週間以下)で何度も繰り返すことにより徐々にソフトウェアの完成度を高めていく。
適用範囲
アジャイル開発はどのような開発プロジェクトにも適しているわけではなく、一ヵ所に集まった10人程度までの少人数の開発チームが、インターネット関連など変化の速い分野や、最初からはっきりとした要件を定義するのが難しい案件のソフトウェアを開発する際に最も適しているとされる。
一方、開発途上で要件がほとんど変化しないことが最初から分かっている場合や、大人数や大規模なプロジェクト、不具合が人命や財産に大きく関わるような社会的に重要なシステムなどの開発には適さないとされる。
代表的な開発手法
どのような条件を満たせばアジャイルであると言えるのかという厳密な定義や要件が決まっているわけではないが、2001年に著名な軽量開発手法の提唱者が集まって共同で策定した「アジャイルソフトウェア開発宣言」の主旨に適う手法が該当するとされる。
代表的な手法として、「エクストリームプログラミング」(XP:eXtreme Programming)や「Scrum」(スクラム)、「Crystal」(クリスタル)、「フィーチャ駆動型開発」(FDD:Feature Driven Development)、「適応的ソフトウェア開発」(ASD:Adaptive Software Development)、「リーンソフトウェア開発」(LSD:Lean Software Development)などがよく知られている。