「図解即戦力 アジャイル開発の基礎」の第7章の正規分布の補足

  • 正規分布でボックス・ミュラー法を使う
  • Excel でタスクを予測する練習問題

書籍のほうではかなり端折ってしまいましたが、要するにプロジェクト内の複数のタスクはとある確率(ここでは正規分布)で分布するので、それらをかき集めると概ねプロジェクトの遅延具合が予測できる、ということです。

この理論自体はゴールド・ラット氏の「制約理論」を利用したCCPMのプロジェクトバッファで話されているところで、予測値として、遅延具合を1.5程度にするのが数学的に計算できる、というのが根拠となっています。書籍のほうでは、1.2から1.5程度と言う形で「プロジェクトバッファ」の幅をとっていますが、いわゆる保険となる期間はプロジェクトエンドの受容性に関わってくるものです。この確率の幅は、プロジェクトでの制作物が「人」によりものであり、「人」が恣意的に遅れを嗅ぎ取って開発スピードを上げたり、あるいは平常に戻したりということを行うので、実は「確率」に従わないという事情がはいっています。

なので、おおざっぱに、「プロジェクトは必ず遅れがでる」ことを前提として(タスクを早めることはしないので)、あとはどの程度のプロジェクトバッファ≒保険をとればよいのかという議論にしぼっています。

数学的な分布の根拠

数学的な厳密さを求めることはできませんが(さらにプロジェクトは一回性なので、再確認をすることもできません)、ある程度の予測を立てることは必要です。PMBOKでの予測、というよりも、CMMIに則った予測可能なプロジェクト運営という点では、単純なチケット駆動による後からのフォローでは順調なプロジェクトというものは無理という現実があります。つまり、チケットが発生した後で、規模見積りあるいは期間見積をするために常に後手に回ってしまうということです。

つまりは、作業用のチケットが発生する前にチケットの作業時間を予測しなければいけません。でなければ、プロジェクトの完了日は常に予測不可能となってしまいます。チケット駆動などのアジャイル開発を忌諱し、安易にウォーターフォール開発に回帰しようとするのはこのせいでもあるでしょう。もちろん、きちんとした「計画駆動」をとる場合は、ウォーターフォール的な開発手法もよいのですが。

もう少し詳しい解説を追加しようと思ったのですが、もう少し時間がかかりそうなので、数学的根拠を箇条書きで加えておきましょう。

  • チケットやタスクの粒をある程度揃えれば、それぞれの作業は繰り返し作業と同等と考えられる
  • 実験計画法と同じように、タスクの実績時間には分布があり、測定誤差とみなせる。
  • タスクが30チケット以上あれば、それは正規分布に従う
  • プロジェクトの遅延が正規分布に従うので、80%の確率でプロジェクトが成功する、期限日を事前に求めればよい

この正規分布するプロジェクト遅延で80%確率の地点が、1.5倍ということになり、これが数学的な根拠です。実は、遅延の分布をいろいろと変えることも可能ですが(かつて、アジャイル開発プロジェクトの遅延などを測定する製品があったのですが、現在はなくなっています。なぜなれば、そこまで正確に測定をしても意味がないのです。「人」が遅延を感じとってしまい、遅れを解消しようと「努力」してしまうためです)。

プロジェクトの持つチケットの数(WBSの数でも構いません)が30以上あればよいので、例えば、半年間(20×6 = 120日)のプロジェクトであれば、4日/チケット前後に粒を揃えればよいという計算になります。ただし、チケット駆動の場合は、未完了/完了を明確にしておきたいのと(チケットの内の進捗度というものも意味がありません)、人の生活習慣である1日や週単位にしておきたいので、1日程度というのが妥当なところでしょう。

また、計画駆動的に解決するのであれば、各工程(設計工程、実装工程など)の中で、30程度の作業(PERT図)を作っておくとよいでしょう。

実験計画法とEVM

その昔、品質工学で使われる直交表の意味がわからなかったのですが、Excelで実験計画法を行う書籍を手にいててやっと納得がいきました。

  • 実験自体は、物理的な制約から数回しか行えない。
  • 数回の実験結果から評価誤差と測定誤差を含めて、正規分布で評価をする

工業的な製品(熱の加え方や材料の混ぜ方など)の評価試験を行うときに、実験というものは数回しか行えません。場合によっては、それぞれの材料を組み合わせて1回位しか行えないものです。その中で、物理的な誤差や測定誤差を含めて、実際の効果(多要素分析でもあります)を検証しないといけないのです。つまりは有意性検定をする必要があるのです。

薬剤やワクチンの効果も同じです。

さて、この有意性検定が必要なのは実は実験数(計測対象の数)が30以下の少ないときに限られます。というか、30以上の大量にある場合は、分布が正規分布に近づくので誤差の扱いを「正規分布に沿う」という形でも十分だから、という意味も含まれます。

ここで物理現象を扱う場合には30という数は結構多いのですが(同じ実験を30回も繰り返すのは大変ですよね)、ソフトウェアの場合は自動テストなどを繰り返せば、数万回繰り返すことも可能です。ここに大きな認識の違いがあります。つまり、ソフトウェアでいうところのシミュレーションを繰り返すことによって、測定誤差が正規分布に近づくということです。ここは MCMC 法と言う形で、いくつかの物理実験でも示されているところです。

MCMC法、つまりランダム値を使って数百回とシミュレーションを繰り返すことによって、複雑と思われるような物理現象(これは開発プロジェクトのタスク消化も含めることができるでしょう)をとある分布つまり正規分布に収束させることが可能です。

果たして、プロジェクトの完了日をぴったりと予測するのは難しいのですが、とある幅をもって「このくらいには80%でプロジェクトは完了するであろう日」というのは比較的容易に計算ができます。さきに書いた通り、プロジェクトのタスク消費も物理現象に従うので、実験計画法などと同じように、標準偏差(σ)を使って求めることができるということです。これは、EVMの解説にでてくるところです。

というわけで、あれこれと数式をならべてもよいのですが、ある程度のチケット数を持つプロジェクトを100回ほど繰り返すと遅延確率が実地で計算できます。現実問題として同じプロジェクトを100回繰り返すことはできませんが、100回シミュレーションすることは可能です。

このあたりの話は、Excelを使った実験を後でアップする予定です。適当なプロジェクトを作り、チケットの予定と実績をとある分布に従ってシミュレートするものです。

カテゴリー: 開発 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*