なぜアジャイルなのですか?改めて考察するウォーターフォールとの違いに参加してきました。
ウォーターフォールはよくディスらr・・・アジャイル開発と比較されることが多いです。私もアジャイル開発を経験する前にも何度か開発プロジェクトを経験しました。しかし、それらはウォーターフォールをしていたわけではなく、「ウォーターフォールのようななにか」に過ぎなかったように今では思います。
だから、ウォーターフォールについても勉強したいと考えていたのでとてもよい機会になりました。
株式会社ジャムズを経営されている玉牧 陽一さんのご講演のポイントをまとめます。 詳細については下記リンクをぜひご覧ください。
ウォーターフォールの原点に関わる流れ
- 1970年 Managing the Development of Software Systems via Winston Royce
- ウォーターフォールの本質が書かれている論文
- 1985年 米国防総省の規格書「DOD-STD-2167」★
- Royceの論文を参考に米国防総省がPRJの進め方をまとめた規格書
- これがウォーターフォールの原点と言われている
- この中では手戻りは絶対だめ!!と述べている ⇒追記:手戻りがだめと明記されたのは1988年発表の2167A版(原田さんありがとうございます)
- 1995年のレポートで、「この方法によるPRJの約75%が失敗もしくはうまく適用できずに終わっている」と報告されている(※参照)
- 1994年 上記の改訂版「MIL-STG-498」
- 繰り返し型開発
- 2010年 CMU/SEI「Considerations for Using Agile in DoD Acquisition」
- アジャイルを用いた調達やこれからの導入を促す趣旨のレポート
ウォーターフォールの本質となった論文の概論
- 1970年 Managing the Development of Software Systems via Winston Royce
- 一番シンプルな開発モデル
- 小規模で自らが利用するソフトウェア開発には十分かつ合理的
- しかし大規模なシステム開発ではうまくいかない
- 実際のPRJでは追加工程が要求される(管理コストによるオーバーヘッドなど)
- 一方通行でうまくいくわけがない
- 手戻りは存在するがあくまで想定内(1つ手前の工程まで)におさめる
- 顧客を巻き込むことの大切さ
- ソフトウェア開発はシンプルなモデルのような簡単なものではない
ウォーターフォールとアジャイル
- 問題解決 = 要求、アウトプット
- 問題解決における前提的 = PRJの外で決めるものでPRJの中ではStatic
- 問題解決における前提的 = PRJの外で決めるものでPRJの中ではStatic
- 解決手段 = 要求を満たすための方法
- 解決手段における前提的 = 良い方法は既存でそこに近づける
- 解決手段における前提的 = PRJの中で決めて行く
- 初期の要求がなかなか確定しない場合
- 後の工程になって要求が変更になる場合
- 事前に予見しきれない技術的課題
- リスク管理とその運用の難しさ
- コミュニケーションの質の悪化
- 官僚的な追加作業
スパイラルとアジャイルの違い
- スパイラルとは小さなウォーターフォールの連続
- スパイラル→渦を描きながら最終的には真ん中に収束して行くイメージ
- アジャイル→ぐるぐるまわりながら中心ですら適切な場所に移動していくイメージ
- 収束を前提とするかしないかの違い
まとめ
"WF(ウォーターフォール)とAgile"とか"WFとWFでないもの"っていうよりも、なんでもないもの大半で一部のWFとAgileって感じのイメージ。 — takao.oyobeさん (@TAKAKING22) 9月 25, 2012
やっぱり神懸かり的なウォーターフォールによる成功体験は、プロジェクトマネジメント視点ではしてやったりな気がするなー — takao.oyobeさん (@TAKAKING22) 9月 25, 2012
です。 少しこのあたりの話になると盲信的に、 「アジャイル最高!」 「ウォーターフォールはだめだ!」 「ウォーターフォールでないとだめだ!」 となってしまっているケースをよく見ます。 しかし、アジャイルもウォーターフォールもあくまで目的を達成するための選択肢に過ぎず、どちらがいい/悪いという議論は無意味な気がしています。 それよりも、- 自分たち(プロジェクト、チーム、環境、状況)を理解して今何が必要なのかを見極められるようになること
- それによって結果を出すこと
- ゴールが明確であること
- 状況/環境がコントラブルであること
- プロダクトがコントラブルであること
- 要求の出し手/プロダクトの作り手が機能できること
- 関係者のコミュニケーションが良好であること
- 上記全てがPRJの終了まで継続すること