従来、ウォーターフォールモデルが主流のシステムやソフトウェアの開発手法ですが、2000年代以降、新たな手法としてアジャイル開発が登場しました。
アジャイル開発の最大の特徴は、小さな開発サイクルを何度も繰り返すこと。仕様変更にも柔軟に対応でき、従来の開発手法よりもリリースまでの時間を短縮できるのが特徴です。
この記事ではアジャイル開発とは何か、メリット・デメリット・向いているプロジェクトについて解説します。
アジャイル開発とは
アジャイル開発(agile software development)とは、現在よく使われているソフトウェアやシステムの開発手法の1つです。Agile(アジャイル)とは、日本語で「素早い・俊敏な」と訳されます。アジャイル開発では機能単位の小さなサイクルで、計画から設計・開発・テスト・リリースまでの工程を繰り返すことにより開発をすすめます。アジャイル開発はユーザーが満足するシステムを開発するために、短い間隔で、動くソフトウェアをリリースし、ユーザーからのフィードバックをもとに開発を繰り返してシステムをよりよくしていく手法です。なので、アジャイル開発を採用する企業、プロジェクトが増えているのでしょうか。
アジャイル開発の流れ
上図に示したアジャイル開発の流れと概要を簡単に紹介すると次のようになります。
<リリース計画>
プロジェクト開始に向けて徹底したヒアリングを通じ、お客様のニーズを分析して、『計画→設計→実装→テスト→リリース』を取りまとめることを、アジャイル開発ではリリース計画と呼びます。おおまかな計画のみでは、その後の実装フェーズで問題が起こりそうですが、仕様が決まっていないと途中で変更があっても臨機応変に対応できるため、顧客のニーズに最大限応えることが可能です。
<イテレーション>
イテレーションとは、一連の工程を短期間で繰り返す、開発サイクルのことです。イテレーション(iteration)は日本語で反復・繰り返しと呼びます。
アジャイル開発のメリット・デメリット
それぞれの開発手法にはメリットとデメリットがあります。
メリット:柔軟な対応により、開発スピードが早い
ウォーターフォール開発の場合には最初から設計・計画・完了日を設定するので、バグがあったら、戻る工程が大きく、時間もコストもかかります。しかしアジャイル開発の場合は小規模で少しずつ開発を行うので、修正にかかる工程が小さくすみます。
それに、開発途中でお客さんとユーザーが開発した部分を確認できますので、バグがあったら、すぐ修正できます。また、仕様変更や追加に対応可能なので、ユーザーの要望に最大限応えることが可能です。
デメリット:スケジュールの管理が難しいこと
アジャイル開発では仕様・要件ごとにスケジュールを設定するため全体のスケジュールや進捗具合が把握しにくくコントロールが難しい点がデメリットです。
つまり:アジャイル開発に向けるプロジェクト
アジャイル開発では開発途中で設計・仕様などを変更する・追加するのが簡単なので、仕様の変更や追加が予想される案件に向いています。例えば、競争が激しいモバイルアプリなどにおいては、開発の途中で仕様の変更や追加がおこなわれることが予想できます。
逆に、業務システムのリプレースのような案件では、すでに作るべき機能が明確に決まっているので、ウォーターフォール開発が向いているでしょう。また、厳密な仕様を決めていないため、追加要件や変更を繰り返すうちに開発の方向性がブレやすくなるというデメリットがあります。