システムの納期とは確率分布だ
昨日はIBMのラショナルソフトウェアカンファレンスに参加しました。1日中、ソフトウェア開発方法論に関するセッションを聞いていたのですが(最後のセッションは、自分が司会のパネルディスカッションでもありましたが)、その中で最も印象的だったウォーカー・ロイス氏のプレゼンテーションを紹介したいと思います。
ウォーカー・ロイス氏はIBMラショナルソフトウェア部門のバイスプレジデントで、アジャイル開発手法としてよく知られるRUP(Rational Unified Process)の創始者でもあります。彼の講演は、この日の基調講演の1つでした。
あるビジネスで、いまから12カ月後には必要となるシステムがあり、開発部門に開発を依頼しました。ビジネスの担当者が「で、納期は間に合うのかい?」と聞くと、見積もり担当者より「11月カ月で完了する予定」との返答。
このとき、ビジネス担当者には次のような図が浮かぶことでしょう。ロイス氏のプレゼンテーションから引用します。
ところが、現実にはシステム開発にリスクはつきものです。11カ月で完了するという見積もりは、正しくは「11カ月で完了する可能性がピークにある確率分布である」と理解すべきなのです。そしてその確率分布は左右対称ではなく、後ろに向かってなだらかに伸びています。
僕はこの図を見て膝を打ちました。いままでシステムの納期をこのような確率分布のグラフとして考えたことは一度もありませんでした。たしかに現実の納期には変動がありえますから、ある日付をピークとした確率分布で表す方が現実に即しています。
そして、確率分布によって示されるということは確率も計算できるということです。ロイス氏は、11カ月をピークとした確率分布では12カ月以内に完成する確率が実は48%しかない、ということを、次の図でさらりと説明しています。説明にはありませんが、11カ月で完了する可能性は30%程度しかないかもしれません。
2度目の驚きはここです。発注者は「11カ月で完成するのなら余裕のあるプロジェクトだろう」と安心しているはずです。ところが実は12カ月というデッドラインに間に合う可能性すら50%以下だというのです。
見積もり担当者の「11カ月で完了します」という言葉と、そこから導き出される「デッドラインにさえ間に合わない可能性が高い」という予想。このあまりに異なる結果をなんとかしないかぎり、ITがもっとビジネスに貢献したり、開発からデスマーチをなくしたり、ということは難しいのでしょう。
実はロイス氏のプレゼンテーションはここからが本番で、つまり「だからソフトウェアの開発では、さまざまな不確実性を上手に管理しなければならないのだ」として、その管理の方法やツールが紹介されていきます。
そのポイントは、次のプレゼンテーションで語られている2つのポイント「スコープは要求文書ではなく、交渉の連続です」と「計画は規定ではなく、進化し、変化する目標です」に集約されるように思います。
不確実性を管理するには、アジャイル開発手法と全体のフレームワーク、それを支援する組織、ツールなどが重要だ、というのがロイス氏のメッセージでした。
この日、基調講演のあとの午後のトラックでは、岐阜県にあるチームがアジャイルを採用して成功した事例、マイクロソフトとIBMが社内の大規模開発でアジャイルを利用している事例、そして三菱東京UFJでのオフショアを巻き込んだ事例などを見てきました。アジャイル開発手法というのは今後のソフトウェア開発において1つのカギになると思っています。Publickeyでは今後もその動向を追っていくつもりです。
さて。ここからは余談ですが、ロイス氏から納期の確率分布がどのような形をしているのかの説明はありませんでした。グラフの形などから推測するに、恐らく対数正規分布ではないかと僕は想像しています(自然界の現象の多くが対数正規分布していることはよく知られています。例えば人間の身長もおおむね対数正規分布です)。対数正規分布であれば e正規分布(平均,リスク)の式で表現できますので、どの時点の確率も計算可能です。ただし平均=チームの能力、リスク=プロジェクトの不確実性を数値化するのは非常に難しいため、実際に計算することは困難でしょう。ロイス氏が前述の48%という数字をどのような平均とリスクを基に導き出したのか、知りたいところです。
追記:ウォーカー・ロイス氏のプレゼンテーションは「IBM RSC2009 資料ダウンロード - Japan」からダウンロード可能です。
あわせて読みたい
国内ベンダのクラウド展開が集中、Kindleが国内発売、100ギガイーサがついに登場ほか。ITNewsWeekend 10月10日号
≪前の記事
マイクロソフトがSQL Server用PHPドライバをアップデート、Windows上でオープンソースは活発化するか?