今回のコラムでは、システム開発の手法であるウォーターフォール型開発とアジャイル型開発について取り上げます。
ウォーターフォール型開発とは、リリースの早さよりも品質の確実性を重視する業務系などのシステム開発現場でよく用いられる手法で、一般的には次の順番で進められます。
1.要件定義
クライアントが要求する機能や性能を明確にし、システムの果たす機能を決定する。
2.外部設計
要件定義で明らかにした要求を具体的な設計に反映する。
3.内部設計
開発するシステム自体をターゲットとした設計を行う。
4.詳細設計
開発者や内部者に向けて書類を作成するフェーズで、内部設計で設計したシステムの機能をより詳細化し、実際にどのような処理を行ってプログラムを動作させるかを決める。
5.プログラミング(実装)
設計書を基に、エンジニアがプログラミングを行う。
6.単体テスト
モジュール(分割されたプログラムの単位)ごとに、プログラムが正しく動作するか性能を評価する。
7.結合テスト
モジュールすべてを結合し、プログラム全体が正しく動作するか性能を評価する。
8.デプロイ
実際にシステムが動作するサーバー上にプログラムを配置し、外部システムとの連携などのために環境設定を行って、ユーザーの使用するシステムとして動作可能な状態にする。(※ここで、もしバグが見つかった場合は修正し、再度、単体テスト、結合テスト、デプロイを行う)
9.総合テスト
環境設定まで含めて問題ないかどうかを確認するため、全体的な動作テストを行う。
一方、アジャイル型開発とは、ウォーターフォール型開発より小さい単位で実装とテストを繰り返す手法で、スピーディーな開発が可能になります。アジャイル開発には、「スクラム」「エクストリーム・プログラミング(XP)」「ユーザー機能駆動開発(FDD)」といった手法があります。Webアプリやエンタメ系アプリなどの開発によく用いられています。
続いて、ウォーターフォール型開発とアジャイル型開発のメリットとデメリットをまとめます。
ウォーターフォール型開発
メリット
・最初に仕様を決め、実装し、テストを繰り返し行うことで、高い品質の製品を仕上げることが出来る
・規模が大きいプロジェクトに対応できる
・アジャイル型開発と比較すると、開発のスケジュールや予算を立てやすい
・各工程が分業となっていることが多いので、人材を集めやすく、教育もしやすい
デメリット
・トラブルの内容よっては、戻る工数が多く、時間とコストがかかる
アジャイル型開発
メリット
・スピーディーにシステムを開発できる
・ウォーターフォール型開発よりも、仕様変更に柔軟に対応できる
デメリット
・開発の方向性がぶれやすい
これら各開発手法のメリット・デメリットを正しく理解し、各案件に最適な開発手法を用いることで、よりクオリティの高い開発が可能になります。
【参考ページ】
アジャイル開発とは(前編)
アジャイル開発の概要とウォーターフォール開発との対比
https://www.fujitsu.com/jp/group/fst/about/resources/featurestories/about-agile-01.html