後工程になってから前工程の不備や誤りが見つかると、手戻りが発生して多大な費用や時間がかかります。それを防ぐために、各工程ごとに関係者の承認を得てから次工程に進む開発技法をウォータフォール型開発技法といいます。
従来から広く採用されている技法で、環境変化が比較的少ない分野での大規模なシステムに適しています。
しかし、ウォータフォール型開発技法では、次のような欠点があります。
前工程が完成しないと次工程に進めないので、開発に時間がかかる。
外部設計後に環境変化が起こっても、手戻りするのが困難である。
利用者は、移行実施段階になってから実物を見て、要求の手違いがわかる。
それで、環境変化が激しい分野のシステム開発には不向きです。
ウォータフォール型の欠点を回避するために、次のような特徴を持つ開発技法が提唱されています。
- アジャイル開発技法
- 短期間でシステム開発を行うための開発技法の総称です。
- イテレーション型開発技法
- ウォータフォール型開発技法では、要求分析から移行までを1回しか行わないのに対して、それは短期間に行い繰り返す開発技法の総称です。
- インクリメンタル型開発技法
- 一挙にシステム全体を構築するのではなく、まず中核となる部分だけを構築し、逐次機能を追加したり、対象範囲を拡大する方法の総称です。
ウォータフォール型開発技法以外の主な開発技法を示します。上記の区分は何に注目したかの視点によるものであり、以下の開発技法は複数の総称技法に属しています。
- プロトタイピング開発技法
- プロトタイプ(見本)を短期間に構築して利用者に見せ、要求を取り入れて逐次改善していく方法です。
- スパイラル開発技法
- プロトタイピング開発技法は、見方を変えれば、各工程をスパイラル(らせん)的に繰り返すことだともいえます。また、スパイラル開発技法は中核を作ってからスパイラル的に対象を拡大する開発技法だともいえます。
- RAD(Rapid Application Development)
- 比較的短期間の開発期間を決めておき、その間で開発する方法です。典型的には業務をよく知っているユーザと、能力の高い開発者がペアになって開発を行い、テストや文書化などの作業はまわりのスタッフが支援するような体制で行ないます。
- XP(エクストリーム・プログラミング)
- 近年注目されている開発技法です。次の特徴を持っています。
- 少人数開発:顧客側1名、開発側2名程度の小グループが常に一緒になって作業をする(コミュニケーション重視)。2人の開発者は1台のコンピュータで作業する(ペアプログラミング)。
- シンプルさ:その時点で必要最低限の仕様にして、非常に短期間(極端には数分)でプログラムを作成する。追加機能が起こったときにフィードバックして変更すればよい(変化ヲ抱擁セヨ)。
- テスト重視:プログラムを作る段階でテストのためのプログラムも作り、テストを行いながらプログラムを完成させる。機能追加するたびにテストを行い、常に品質100%の状態にしておく。
- リファクタリング:追加機能によりプログラムが複雑になったら、システムの動作を変えることなくシステムを再設計する。