アジャイル開発とは(前編)
アジャイル開発の概要とウォーターフォール開発との対比

アジャイル開発とは

変化の激しいビジネス環境の中で、ソフトウェアに対する要求の変化も激しさを増しています。要求の変化に追従するとともに新しいビジネス変化を生み出すために、より迅速なソフトウェアの提供が求められています。迅速にソフトウェアを開発する技法として、アジャイル開発が近年ますます注目されてきました。

本稿では、アジャイル開発プロセスの概要を述べます。また、アジャイル開発とウォーターフォール開発の特徴を比較します。

アジャイル開発プロセスの概要

アジャイル開発には、スクラム、リーン開発、XPなど様々な手法や方法論があり、プロセスも様々です。ここでは各開発方法論に共通したアジャイル開発プロセスの概要を示します。

反復増加型開発

アジャイル開発は、1週間から1か月の反復期間を設け、その反復ごとに機能の追加を継続する「反復増加型」の開発プロセスによって実現されます。


図 反復増加型開発

  • 計画
    反復期間内にどの機能を開発対象とするかを計画します。開発対象の機能ごとに、優先順位づけと規模見積りを実施します。
  • 開発
    機能ごとに設計、実装、テストを行います。
    開発者は、テスト専任、実装専任などの役割分担はなく、全ての役割を担当します。
  • リリース
    受入テストをパスした機能をリリースします。
  • 開発の終了
    さらなる機能エンハンスのために開発を継続するか、あるいは機能十分とみて開発を終了するかが、ソフトウェアを利用する顧客や製品責任者などビジネスサイドによって判断されます。

アジャイル開発の特長

アジャイル開発の特長、メリットをご紹介します。

  • より速いスピードでの提供 ~ 正味現在価値の視点
    短サイクルの反復増加型開発により要望の高い機能が反復ごとにリリースされます。要望から提供までのスピードが速いため、利用したい機能をタイムリーに利用できます。
  • 要求の変化に柔軟な対応が可能 ~ 変動対応性の視点
    反復ごとに開発対象の機能を決定します。確定していない要望や変更の可能性が高い機能は、次回以降の反復で開発するかどうかが決定されるため、要求の変化に柔軟に対応できます。また、不必要な機能をつくることもありません。
  • 品質と顧客満足度の向上 ~ リスク早期検知の視点
    機能を一つ一つ順に利用可能な状態まで完成させます。要望の誤解、技術的な実現可能性や品質の検証が早期に実施されるため、故障も少なく満足度の高いソフトウェアが提供されます。
  • 開発者やチームの成長を促進 ~ 学習の視点
    機能を一つ一つ開発することにより設計、実装、テストのサイクルを繰り返します。また実装専任やテスト専任などの役割分担がありません。多様な作業を何度も体験することができるため“多能工化”、“技術力向上”、“士気の向上”など「開発者の成長」を促すとともに、“プロセスの改善”、“マネジメント力の向上”など「チームの成長」を促します。

アジャイル開発がもたらすもの

アジャイル開発は、機敏に迅速にソフトウェアを提供できる反復増加型の開発です。

反復期間ごとに現実に動作し役に立つソフトウェアを提供することで、開発サイドとビジネスサイドが「現物のソフトウェア」を介してコミュニケーションすることが可能となります。

共に現物を触れることで、開発サイドは即座にフィードバックを受けることができます。ビジネスサイドは現物に(文字どおり)触発され、新たな要求やアイデアが湧き立ちます。

アジャイル開発は、要求の変化へ追従するだけではなく、新しい変化を自らもたらします。

ウォーターフォール開発とアジャイル開発

ここからは伝統的なウォーターフォール開発とアジャイル開発の特徴を比較します。


図 ウォーターフォール開発とアジャイル開発

ウォーターフォール開発 ~ 工程に分割した開発

ウォーターフォール開発は、企画/設計/実装/テストなどの工程に分割して開発を進めます。

  • 開発対象の機能を初期に確定させます。
  • 各工程は工程専任の技術者が担当します。
  • 前工程で作成されたドキュメントが、後工程への情報伝達の手段です。
  • 全工程の完了後にソフトウェアが利用可能になります。

工程を分割することによって、以下のメリットがあります。

  • 開発対象を初期に確定させるため、開発スケジュールの計画立案や見積りが容易になります。
  • 工程ごとの担当開発者は専任技術者であり多種多様な技術を必要としないため、教育や採用が容易です。
  • 工程ごとにエビデンスが残されることや工程完了確認がなされることで、作成請負契約による外部調達が容易です。

アジャイル開発 ~ 反復を繰り返す開発

アジャイル開発は、期間で区切られた反復を繰り返しながら開発を進めます。

  • 強く要求される機能から順番に開発します。
  • 開発対象の機能は反復ごとに決定します。
  • それぞれの開発者は設計、実装、テストなどすべての開発作業を担当します。
  • 実際に動作するソフトウェアを反復ごとに提供します。

反復を繰り返すことによって、以下のメリットがあります。

  • 反復ごとに開発/提供するため、より速いスピードでの提供が可能です。
  • 反復ごとに開発対象の機能を決定するため、要求の変化に柔軟に対応することが可能です。
  • 反復ごとに機能の出来栄えを確かめられるため、品質や顧客満足度が向上します。
  • すべての開発作業を何度も繰り返すため、開発者の成長やプロセスの改善およびチームの成長を促します。

特徴の比較

ウォーターフォール開発とアジャイル開発の特徴を各観点で比較します。

表 ウォーターフォール開発とアジャイル開発の特徴
比較の観点 ウォーターフォール開発 アジャイル開発
ビジネスサイド/顧客の関与 ・開発開始前に要求を決定
・開発終了後に受入の判定
・開発期間中に要求の変更や追加
・開発期間中に受入の判定
要求変更への対応 ・開発前の要求確定が原則 ・開発期間中の変更を受入れる
(反復ごとに開発対象を決定するため)
提供スピード ・全工程の完了後に提供 ・速い
(反復ごとに提供)
ドキュメント ・各工程の生産物として必須
・後工程への唯一の情報伝達手段
・工程完了のエビデンスとして必須
・適切な情報伝達手段であれば作成
(保守用途、リリースノートなど)
テスト ・テスト工程でのみ実施 ・実装やビルドごと頻繁にテスト
開発者 ・工程ごとの専任担当者 ・すべての開発作業を担当する多能工
開発者の教育/採用 ・専任技術者のため教育が容易
・同じく採用も容易
・反復開発で実践的に学習
・全開発作業担当のため多能工化が促進
プロセス改善 ・次プロジェクトに経験を活かす ・反復ごとにプロセス改善が可能

参考文献

  • Jim Highsmith. “アジャイルソフトウェア開発エコシステム”. 株式会社テクノロジックアート訳, 長瀬嘉秀監訳, 今野睦監訳, 株式会社ピアソン・エデュケーション, 2003, 404p, ISBN 978-4894717374.
  • Winston Walker Royce, "Managing the Development of Large Software Systems: Concepts and Techniques", Proc. of IEEE WESCON, p.1-9, 1970 (Proc. of 9th ICSE, p328-338, 1987, ISBN 978-0897912167 に再掲).
  • 小椋俊秀, "ウォーターフォールモデルの起源に関する考察 ウォーターフォールに関する誤解を解く", 商学討究. 2013, 第64巻, 1号, 小樽商科大学, p.105-135. ISSN 0474-8638.
  • 落水浩一郎, "WATERFALL Model 再考 ソフトウェア開発管理とソフトウェア開発方法論の融合について", SEAMAIL. 2006, Vol.14, No.9-10. 岸田孝一編. ソフトウェア技術者協会.
  • 佐藤善昭. "ケーススタディ 富士通ソフトウェアテクノロジーズ"アジャイルとトヨタ生産方式が融合した俊敏な開発プロセス"". PM magazine. 2005, vol.003, p.48-50, ISBN 978-4798107707.
  • 藤本聖, 平鍋健児. “ - XPは私達に何をもたらすのか”. オブラブ. 2002. http://objectclub.jp/community/XP-jp/xp_relate/xp_present#sec5, (参照 2018-8-24).
  • 古垣幸一他. "トヨタ生産方式の導入によるソフトウェア 開発プロセスの革新". 雑誌FUJITSU. 2005, Vol.56, No.6, p.605-613. ISSN 0016-2515.

ページの先頭へ

Agile+メインビジュアル