IID(あいあいでぃー)情報マネジメント用語辞典

iterative and incremental development / 反復型開発 / イテレーティブな反復型開発

» 2008年11月04日 00時00分 公開
[@IT情報マネジメント編集部,@IT]

 インクリメンタル型開発とイテレーティブ型開発を合わせたソフトウェア開発手法のこと。システム全体をいくつかの部分に分割して反復しながら機能や品質を洗練し、それを段階的に全体に統合していく開発プロセスをいう。狭義にはアジャイル開発と区別されるが、広義には含まれる。

 インクリメンタル型開発はシステム全体を部分に分割してそれらを段階的に開発し、できた部分から全体に統合していく方法を指す。分割した部分のそれぞれをインクリメントという。イテレーティブ型開発は一度リリースしたシステム全体(または一部)に洗練・チューニングを繰り返して完成度を高めていく方法を指す。この反復作業の1回をイテレーションという。

 もともとのイテレーションは一度完成したリリースを洗練したり、チューニングを加えることだが、多くの開発手法ではイテレーションごとに新たな機能を追加することから、総称して「インクリメンタルな反復型開発」(IID)といい、単純に反復型開発と呼ぶことも多い。

 イテレーションの期間は方法論によって異なるが、1週間から6週間であることが多い。1回のイテレーションは小さなプロジェクトであって、要求分析・設計・実装・・テストなどの作業からなる。イテレーションは、終了した段階で“部分的”ながら動作するシステムをリリースすることが目標となる。このリリースは内部リリースであり、次のイテレーションのベースラインとなる。想定されたすべての機能が実装された最後のイテレーションのリリースを迎えたときが製品の完成であり、外部(市場や顧客)にリリースされる。

 反復型開発は、およそソフトウェア開発が行われるようになった最初期からごく普通に実行されていた開発プロセスである。しかし、1970年代には反復(手戻り)を考慮しないウォーターフォール・モデルが“一般的な開発プロセス”と見なされるようになった。これが米国防総省の規格「DOD-STD-2167」に取り入れられると、手戻りを許容しないプロセスとされてしまい、プロジェクトの失敗が相次ぐようになった(1995年、米国防総省は同規格に準拠した開発の約75%が失敗/未使用に終わったという報告を発表している)。

 こうしたこともあって、1990年代には反復型開発モデルを強調する流れが強まった。米国防総省では1994年に反復型開発を推奨する「MIL-STD-498」を通達。オブジェクト指向ソフトウェア開発でもUPRUPへつながる反復型プロセスが登場。また、アジャイル開発に分類される緒手法も広く紹介された。

参考文献

『人月の神話 新装版――狼人間を撃つ銀の弾はない』 フレデリック・P・ブルックス・Jr=著/滝沢徹、牧野祐子、富沢昇=訳/ピアソン・エデュケーション/2002年11月(『The Mythical man-month: essays in software engineering』の邦訳)

▼『初めてのアジャイル開発――スクラム、XP、UP、Evoで学ぶ反復型開発の進め方』 クレーグ・ラーマン=著/児高慎治郎、松田直樹=監訳/越智典子=訳/日経BP社/2004年9月(『Agile and Iterative Development: A Manager's Guide』の邦訳)


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ