N2 ToolBox(跡地)

跡地です。引っ越しました。http://d.hatena.ne.jp/nosen

ASDの世界観

2004-07-14 01:38:22 | 開発手法/方法論
昨日の続きで、ASDの視点(=ジム・ハイスミスの視点)からみたソフトウェア開発の世界観について僕なりの解釈で紹介したいと思います。

かつて、ソフトウェア開発は極めて大規模かつ長期にわたっておこなわれていました。開発手法は今となっては伝統芸能の趣すらあるウォーターフォール型で、この官僚主義的なアプローチを記念事業的ソフトウェア開発と呼びます。

このやり方は当初それなりの効果をあげましたが、その時代は長く続きませんでした。強力なPC、C++やVisualBasicなどの新しい開発環境が登場し、コンピュータで出来ることの幅がひろがると、短期的なニーズに基づき、設計を重視せずいきなりコーディングを始める手法が広まっていきました。
これを場当たり的ソフトウェア開発と呼びます。重厚長大な記念事業的ソフトウェア開発ではツールの変化やビジネスの要求の変化に対応しきれなかったのです。
もちろん場当たり的なソフトウェア開発にも欠点はあって、保守性やコードの汎用性は犠牲にされていきました。
こうしてソフトウェアは官僚主義と場当たりの両極に分解していき、その状況は現在まで変わっていません。

ASDは両極のどちらでもなく、その中間の妥協案でもない第3の選択肢をとっています。それが複雑適応系理論に基づいた「創発的秩序」によるソフトウェア開発です。

現在の記念事業的的開発の創本山はSEIのCMMです。CMMにおいては反復可能、認識可能、測定可能なプロセスを最適化していくことがよしとされています。
これは製造業に例えると、ベルトコンベアで作業する作業員の歩数などをストップウォッチではかりながら効率をあげて行く作業などが想起されます。しかし、このやり方は、刻々とベルトコンベアのフローが変化して行くような状況では当然なりたちません。

ASDは現状のソフトウェア開発の多くがこのように変化の激しい複雑な環境におかれているということを前提にしています。
複雑な環境では、最適化という作戦はうまく働きません。

例えば将棋。

「将棋で勝つ手順」をCMM的最適化の手法で編み出すことは難しいでしょう。「初心者でも必ず勝てる将棋の手順」を定義するにはあまりにも考慮すべきパターンが多すぎるのです。ソフトウェア開発
が置かれている状況も同じくらい複雑だと思うのですが、「スキルのないエンジニアでも良いソフトウェアが創れる開発プロセス」を定義できると本当に信じている人が結構いるのは驚きです。

まぁ、本当にそんな開発プロセスがあるとしても適用分野はあらかじめ必要な技術もビジネスの要求もはっきり分かっていて要求の変化も少ないような案件にしか適用できない限定的なものとなるでしょう。銀の弾丸は存在しないのです。

では、そのような複雑さに人はどのように立ち向かっていったらいいのでしょう?

将棋は単純に手順化するには複雑すぎますが、そこには一定の秩序があります。一つ一つの駒の動ける範囲はきまっていますし、勝ちにつながる定石もあります。

ソフトウェア開発も同様に複雑なものではありますが、決してカオスではなく、将棋と同様そこには一定のパターンがあります。

ASDでは、このような複雑な状況のなかで、最適では無いけれどもベターな解を見付けようとします。この「ベターな解を見付ける」ということを「適応」と言っており、解を導くのにかかる時間の短さのために「最適」より「適応」の方が優れていると主張しています。

これはASDというよりすべてのアジャイル開発手法がベースにしている考え方のような気がします。

長くなってしまってので、続きはまた次回に回します。

最新の画像もっと見る