アジャイルとウォータフォールについて

ここ数年でアジャイル開発というプロジェクト手法が、広く一般的になってきました。

 

一昔前はプロジェクトというのは全てウォータフォールのプロジェクト手法でやってきましたが、今は大規模プロジェクトもいくつかに分割していてアジャイル開発でGoliveという形が取りいられるようになりました。

 

ウォータフォールモデルについて>

thinkit.co.jp

 

ウォータフォールモデルは1970年頃から導入された手法で、古典的な手法になります。

要件定義から設計実装テストまでを順番に行っていく手法です。

 

要件定義を完了しユーザーのサインオフを経てから、次の設計の段階に入ります。各フェーズごとにきっちり定義をするため、出戻りは少ないですが、同時にそれぞれのフェーズで時間がかかるため、全体が長くなってしまい最終的に当初描いていた前提条件が崩れてしまったりし、大きな出戻りが起きることがあり、時代に合わなくなってきました。

 

それに対して、IT業界で主流になってきたのがアジャイル開発です。

 

アジャイルについて>

アジャイル開発 ~顧客を巻き込みチーム一丸となってプロジェクトを推進する~ (前編): コラム | NECソリューションイノベータ

 内容としては以下を指します。

アジャイルとは『すばやい』『俊敏な』という意味で、反復 (イテレーション) と呼ばれる短い開発期間単位を採用することで、リスクを最小化しようとする開発手法の一つです。アジャイル型開発手法にはいろいろなバリエーションがありますが、例えば次のような進め方で開発をします。

  1. 顧客とエンジニアが少数精鋭の共同開発チームを作ります。(開発するプロダクトの規模によっては同時に複数のチームを立ち上げることもあります。)
  2. 共同開発チームは開発範囲全体をいくつもの短い範囲、おおむね2週間程度でできると思われる範囲、に区分します。そして業務プロセスの優先度を考慮し、どの範囲から着手するかを決定します。
  3. 共同開発チームは2週間という期間内に、その範囲の要求の決定、実装、テスト、修正、リリースを行います。
  4. リリースできた機能や残っている業務プロセスの範囲を検討し、次に着手する優先すべき区分を決めます。

上記の2から4のサイクルを繰り返して開発を進め、全体の完成度を高めていきます。

このような手法では次のようなメリットが得られます。

  1. 業務プロセスが確定された、優先度の高い重要な機能から着手できる。
  2. 顧客が実際に動く画面、機能を試すことができるので、仕様の間違いや要求漏れに早い段階で気づくことができる。
  3. 要求と実際のプロダクトの間に誤りが発生した場合でも、なぜ発生したかを分析することで顧客とエンジニアの情報の伝え方、確認の方法が向上していく。
  4. 開発の途中で業務プロセスが変更になった場合、未着手の部分は変更された内容で実装できる。すでに実装済みの場合でも修正の影響範囲は限定される。

このような開発プロセスで、顧客の要件をすばやく反映しながらプロダクトを開発することを『アジャイル型開発技法』と呼びます。たくさんの詳細な仕様書を作るよりも実際に動く、顧客が実際に使えるプロダクトを作ることを重視し、変化にできるだけ柔軟に対応し、チームの協調と個人の活躍を動機付け、プロダクト価値の最大化を目指すことに特徴があります。

従来型のウォーターフォール形式のプロジェクトだと標準化や文書化が重要視されますが、アジャイルでは実際に使えるプロダクトを作ることに重きを置き文書化もそこまで重要視はされません。

 

では、次回はアジャイル開発のメリットについてもう少し詳しく説明していきます。