fc2ブログ

アジャイル開発は、本当に大規模システムの開発に向いていないか?

 「アジャイル開発は大規模システムの開発に向かない。大規模システム開発はウォーターフォール開発モデルの方が向いている」という言葉をよく聞きます。私も当初その意見に同意でした。しかしながら、最近はちょっと違うのではないかと考えました。
 違和感の元は理由です。大規模システムの開発に向かない理由として、計画と設計が不十分である事が挙げられています。これは十分に納得できる理由です。計画と設計が不十分ならば、プロジェクトが失敗するのは当然です。しかし、この問題をアジャイル特有の問題として正しいと仮定すると、アジャイル開発は計画と設計をおざなりにしている事になります。しかしながら、アジャイル開発はプロトタイプ開発モデルではありません。似ていますが、思想が根本的に異なります。計画と設計をおざなりにして、場当たり的に実装する開発モデルではありません。
 その事は、アジャイル・アライアンスの原則アジャイルソフトウェア開発宣言をよく読めば分かります。アジャイル開発の本質は、柔軟さと俊敏さであり、設計を軽視していません。計画を立てて計画を練る事もアジャイルの一部だと考えられます。それはこの文面を読めば分かります。

【アジャイル・アライアンスの原則】から引用
卓越した技術と優れた設計に対する
不断の注意こそが機敏さを高めます。

 それにもう一つ気になる事があります。それは、「ウォーターフォール開発モデルを採用すると、大規模システムの開発がうまくいく可能性が高いか否か」です。ウォーターフォール開発モデルを採用したプロジェクトに、何度も携わりましたが、この開発モデルだから上手くいくという論理的な答えがありません。大規模開発であっても、要求定義は変わります。お客様が初めから完璧な要求を言うなんてあり得ません。ですから、要求が変わらない合理的な理論が思いつきません。要求が変わった場合、その変化に対応しづらいのは、ウォーターフォール開発モデルの有名な弱点です。ならば、ウォーターフォール開発モデルが、大規模開発に向いていると言えません。しかし、大規模システムの開発でアジャイルが採用されないのは事実です。
 その理由として、考えつくのが大規模システムに関係する企業の規模です。巨大な企業が、俊敏かつ柔軟に仕事を出来るのでしょうか?私は出来ないと思います。特に日本の企業の場合、一つの物事の了承を得るのに、何個ものハンコと会議が必要となります。そんな状態で、アジャイル開発が出来る筈がありません。その事実から私は次の結論に達しました。
 アジャイル開発そのものが大規模システムの開発に向いていないのではなく、大規模開発に関係する企業が、柔軟さと俊敏さを備えていないのです。結論だけを言えば、大規模システムの開発でアジャイル開発を採用できない事になりますが、この違いは重要です。何故ならば、私の理論が正しければ、柔軟さと俊敏さを目標とした企業になれば、アジャイル開発を採用するべきだという事になるからです。
 我々に必要なのは、アジャイル開発モデルの最終地点ではなく、過程なのかもしれません。アジャイル開発の理想を語るのではなく、どうやったらアジャイルな企業になれるのかを考えるべきです。
スポンサーサイト



テーマ : ソフトウェア開発
ジャンル : コンピュータ

コメントの投稿

非公開コメント

To be agile

賛成です。

「柔軟さと俊敏さを備えていない」でまだ存在し続けられるのには、まだ理由があるのだと思います。もし本当に柔軟さと俊敏さが一義的に求められるのであれば、「柔軟さと俊敏さを備えていない」会社は世の中から退場を余儀なくされます。

尚、有名な話ですが、Amazon.comは、Bezosが音頭をとって大部分の開発組織を、10名程度の自律的なチームに分割しました。かなりAgileな開発をしている模様です。そうしなければ、今のAmazon.comはなかったのだと思います。また、37signalsの開発手法をBezos自身が研究したという話も聞きました(何年かのWeb2.0 conferenceでのインタビューで)。

Re: To be agile

Koichiさん、こんちは。
そういえば、Linuxも大規模ですし、大規模=アジャイル駄目というわけでもなさそうですね。
プロフィール

インドリ

Author:インドリ
みなさん、はじめまして、
コンニチハ。

ボクは、無限の夢(infinity dream)を持つネタ好きな虹色の鳥インドリ(in dre)です。
色々な情報処理技術を啄ばむから楽しみにしてね。

http://twitter.com/indori
は別人による嫌がらせ行為です。
私とは関係ないので注意して下さい。
次はなりすましブログなどをするかもしれませんが、ここ以外でブログをするつもりがないので、ここ以外にインドリのブログがあったとしても無視してください。


何度言っても分からない人がいるので、ここにコメント欄へ書き込むときの注意事項を書きます。


一、社会人としてのマナーをわきまえましょう。
一、妄想に基づく書き込みを止めてください。
一、暴言の類は書かないで下さい。
一、某誹謗中傷サイトの書き込みは彼らの妄想に基づく書き込みですから無視して、ここへ書き込まないで下さい。
一、コメント書く前に他のコメントよく読んでから行って下さい。
一、言いがかかり等の行為を禁止します。
一、その他常識的に考えて迷惑なコメントはしないで下さい。


以上のルールを守れない人のコメントは削除します。



利用上の注意
ここに紹介してある文章およびプログラムコードは正確であるように心がけておりますが、内容を保証するものではありません。当サイトの内容によって生じた損害については、一切の責任を負いませんので御了承ください。


執筆したCodeZineの記事


【VB.NETで仮想CPUを作ろう】

  1. VB.NETで仮想CPUを作ろう
  2. レジスタの実装
  3. 仮想CPUのGUI化
  4. テストドライバの改良
  5. CPUの基礎動作の実装
  6. MOV命令の実装
  7. ADD命令実装
  8. SUB命令実装
  9. INC命令&DEC命令の実装と命令長
  10. MLU命令の実装とModR/Mについて
  11. DIV命令の実装とイベント設計について
  12. 機械語駆動式 関数電卓を作ろう!
  13. 機械語駆動式 関数電卓を作ろう! 解答編(前半)
  14. 機械語駆動式 関数電卓を作ろう! 解答編(後半)


【仮想ネットワーク実装でTCP/IPを学ぼう】
  1. TCP/IPの基礎と勘所
  2. ネットワークアクセス層の勘所
  3. インターネット層の勘所
  4. トランスポート層の勘所
  5. アプリケーション層の勘所
  6. セキュリティの基礎と仮想ネットワークの仕様
  7. GDI+と独自プロトコルの定義



【並列化】
インテル Parallel Studioを使って並列化プログラミングを試してみた
並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」


【TBBシリーズ】
  1. インテル スレッディング・ビルディング・ブロックの概要
  2. インテルTBBから学ぶループの並列化
  3. スレッドセーフとインテルTBBのコンテナ
  4. インテルTBBのスレッドクラス


【OpenMPシリーズ】
  1. OpenMPの基礎構文
  2. OpenMPの実行時ライブラリと並列ループ
  3. OpenMPのメモリモデルとfork- joinモデル

最近の記事
最近のコメント
月別アーカイブ
カテゴリ
Ada (9)
COBOL (5)
C (9)
C++ (11)
C# (370)
D (25)
Java (8)
Perl (1)
Ruby (14)
PHP (2)
Boo (2)
Cobra (2)
LISP (6)
F# (33)
HTML (0)
XHTML (0)
CSS (0)
XML (0)
XSLT (0)
Scala (4)
WPF (0)
WF (2)
WCF (0)
LINQ (4)
MONO (5)
Linux (0)
MySQL (0)
ブログ内検索
リンク
最近のトラックバック
RSSフィード
ブロとも申請フォーム

この人とブロともになる

QRコード
FC2カウンター