Rapid Application Development(RAD)
Rapid Application Development(RAD:高速アプリケーション開発)について
Rapid Application Developmentとは
Rapid Application Developmentとは、ユーザを含む少人数の開発チームが、スパイラルアプローチやRADツールなどを用いて、短期間に高品質のシステムを開発する手法です。
この開発手法は、1991年に発行されたJames Martinの著書「Rapid Application Development」で提唱されました。
RADは、プロトタイプ開発と反復型開発の組み合わせです。
RADは、簡潔に言うと、プロトタイプ開発と反復型開発を組み合わせた開発手法といえます。
ユーザを含む少人数のチームで分析・仕様検討、設計、開発を進め、プロトタイプ(試作品)を評価することで仕様を確定させます。
そして、そのプロトタイプに評価や改良を反復(スパイラルアプローチ)することで、品質を高めながら製品を完成させていきます。
スパイラルアプローチとタイムボックスについて
スパイラルアプローチとは、ユーザから継続的フィードバックを受けつつ、設計とプロトタイピングを繰り返して開発していく手法です。
(なお、スパイラルアプローチとスパイラルモデルはほぼ同義です。
詳細はスパイラルモデル
を参照ください。)
なお、RADでは、分析工程や設計工程にユーザが必ず参画して、要件定義を明確にします。
しばしば、要求分析段階ではJRP(Joint Requirements Planning)を、外部設計にはJAD(Joint Application Development)というワークショップ手法を用います。
RADでは、スパイラルアプローチによる無制限のサイクルを繰り返さないように、「タイムボックス」を設定します。
タイムボックスとは、開発期限をあらかじめ設けて置き、一定の期間が来たら次の工程に強制的に移る手法です。
短時間開発を実現するために、時間に追われる心理を利用して、必要な機能を優先的に実装します。
RADの開発ステップ
- プロジェクト要件の定義する。
- 開発者、ユーザ・顧客、その他関係者含めてプロジェクトに関わる「全員」で、プロジェクト要件 (目標、期間、予算など) を定義し、完成させます。
- ユーザー デザインを構築する。(スパイラルアプローチ)
- 設計・開発者はユーザ(顧客)共に、MVP(実用最小限の製品)を作成し何度も反復改良します。
- 開発者はプログラムを検査し、バグ、エラー、脆弱性などの有無を検証します。
- 完成したプロトタイプをクライアントに提出し、フィードバックを受けます。
- 迅速な施工
- 設計フェーズからのプロトタイプとベータシステムを取得し、それらを実用モデルに変換します。
- 完成品に対するフィードバックが厳密に肯定的な場合は最終ステップに進みます。しかし、フィードバックが否定的であれば前ステップに戻る選択を採ります。
- カットオーバー(cutover)
- カットオーバーとは、新規に開発されたシステムを本番環境で利用開始することです。 (和製英語でいうところの「サービスイン」です。)
RADツールについて
RADツールとは
RADツールとは、開発期間の短縮のために用いる、開発支援ツールのことです。
統合開発環境によるプログラミングの半自動化や、視覚的なユーザーインターフェイスの設計、テンプレートの活用、プログラムコードの入力支援や自動生成、機能モジュール開発などの機能を備える開発ツールを使うことで、短期間に目的プログラムを作成することができます。
広義には、統合開発環境(IDE)やビジュアルプログラミング言語のことをRADツールと呼ぶこともあります。
ビジュアルプログラミング言語とは、Visual BasicやInterface Builderなどのソースコードを記述せずにGUI部品の配置でウィンドウを作ることができるソフトウェアのことです。
CASE(Computer Aided Software Engineering)ツールとは
Computer Aided Software Engineering(CASE)とは、ソフトウェア開発やソフトウェアの保守にソフトウェアツールを利用することを指します。
CASEツールとは、開発支援のソフトウェアのことで、設計が正しく行われているかチェックしたり、ドキュメントやプログラムを自動生成することができます。
RADでは、プロジェクトに適したCASEツールを利用して、開発速度を向上させます。
RADの注意点
プロジェクトメンバーのスキルに依存する
RADは、ビジネス要件の洗い出しとモデル作成において、高度な知識と経験を積んだプロジェクトメンバーに大きく依存します。
誤った要件とモデリングを作成した場合には、プロトタイピングがムダになるだけでなく、全体の方向性を見失わせる可能性まであります。
また、RADプロジェクトを遂行するには、高度なプログラミング経験が必要となります。
RADツールを使用することは、多くの場合、専門知識と一定以上の経験を必要とします。
プロトタイピング開発において、開発者が期限までにソフトウェアを提供できないということは、プロジェクト自体が破綻する可能性があります
ステークホルダーへの大きな負荷が発生する。
RADでは、すべての関係者が定期的な会議に参加して、頻繁にコミュニケーションを取り、プロトタイプへのフィードバックを提供しなければなりません。
ユーザ要件が明確になっていなければ、プロトタイプへの適切な改良が行われないことにもなります。
そのために、顧客やエンドユーザに対して、しばしば期日のあるノルマを課すことになり、業務的な大きな負担をかけることになります。