サプライチェーンから考えるプロジェクトの工期

制約の理論(TOC)の考えを元に、ソフトウェアのプロジェクトの計画を見直します。
基本的なところはゴールドラット氏の理論と一緒で、ソフトウェア特有の「事情」も組み入れます。

と言いますか、この手の確率の計算をシミュレーション(モンテカルロ法)することも多いのですが、条件を簡単にしてモデル化してやれば、計算が可能です。まぁ、モデルの結果を現実にあわせてパラメータを調節する、というやり方なんですけどね。

■二項分布を使って解く

二項分布、正規分布を使って読み解きます。本当は、正規分布の分散を使ったほうが正確に表せるのですが、そもそもが工場の生産現場と違って、ソフトウェアは人が作るところが多いので、物理現象としての正規分布に則らないことが多いのです(学生症候群とか)。なので、あまり正確にやっても意味がないので、現象だけを使うために、単純な二項分布を使います。

■最初の問題

さて、最初の問題は、
 「1日か2日で終わるタスクが10個あるとき、確率50%で終わる日数は、いつだろうか?」
です。
タスクは、1日で終わる確率が50%、2日間掛かってしまう確率が50%としましょう。

さて、この10個のタスクが全て終わった後、50%の確率で終わる日数はいくつでしょうか?

問題の考え方を示すと、

・1つのタスクの最短が1日なので、最短が10日間
・1つのタスクの最長が2日なので、最長が20日間

というわけで、10日から20日の間であることは簡単に分かります。
この間になるわけですが、一体、どの位でしょうか?

Excel で計算したのが次の図です。

▼二項分布で計算

50%ラインが15日間、80%ラインが16日間です。

# 実は、もっと直感的に計算ができて、10~20日の間ということが分かったので、1日と2日の割合が50%ずつだから、15日かなぁ、という概算でもokです。

■次の問題

今度は、もう少し現実にあわせていきましょう。
ひとつのタスクが終了する確率を3つに分けます。

・1日で終わる確率が25%
・2日で終わる確率が50%
・3日で終わる確率が25%

こんな風に、タスクが早く終わるかもしれないし、遅くなるかもしれないし。まぁ、予想通りの場合もあるし、という3パターンの計算です。

このときに、先の問題と同様に50%で終了する期日を求めてみます。

▼三項の確率で計算

Excel を使って計算すると、50%確率の場合は20日間です。
これはすぐに予想が付きますね。タスクが早くなったり遅くなったりするので、前後するとすれば、中央の値が全体の期間に反映されるはずです。なので、ほとんどのタスクが2日間で終わります。
これから概算すると、同じ条件で半分のプロジェクトは、2日間×10タスク=20日間で終わります。

さて、80% の合格ラインを考えると、この図では 22 日間になります。

なので、プロジェクトマネージャは、10% のリスクを上乗せすれば(期間に関しては)80% 安全、と言えます…が、本当でしょうか?

そうなんです、残念ながら、こんな風に10%のリスクでは到底無理、ということを体感的に知っています。
これが、どうしてなのか?を理論/確率を使って説明します。

■学生症候群

先のモデルでは、タスクが早く終わったら次のタスクにすぐに着手する、というルールになっていますが、現実ではそんなことにはなりません。

・次のタスクが始まるまで、暇な時間ができる。
・終わっているタスクを、期日まで延ばそうとする。
・終わっているタスクを、丁寧に仕上げようとする。

ことによって、1日で終わったタスクであっても、結果的に2日間になることがほとんどです。
これを「学生症候群」と言ったりするのですが、製造業の生産の現場では、仕掛品と生産能力の関係であったり、サプライチェーンの考え方であったりします。このあたりは、後日。

なのでモデルを現実にあわせて、1日で終わっても2日間に伸ばしてしまう確率に変えます。

・2日で終わる確率が75%
・3日で終わる確率が25%

のように、1日で終わる確率と2日で終わる確率加えて75%で計算しなおします。

▼学生症候群を含める

こうすると、目標値である20日間の確率がぐっと減り、5%になります。ええ、ほとんど期日通りに終わらせるのは不可能ですね。50% のラインを見ていくと、22 日間、80% のラインを見ていくと、24日間になります。

つまりは、50% のラインでも 10% のリスクを見なければならず、成功させようと思えば、20% の期間の上乗せが必要になってきます。

■学生症候群の確率を変える

先の例では、2日間で終わる確率が75%もありましたが、これを変更します。

・2日で終わる確率が50%
・3日で終わる確率が50%

というモデルを作ります。

▼学生症候群の確率を変える

これを計算すると、50% のラインが 23日間、80% のラインが 23日間になります。
80% のラインが同じように見えますが、92% から 86% にやや下がっています。

この3つの結果を累積のグラフにしたのが下の図です。

▼累積グラフ

80% のラインが大きく右にずれている(期日が延びている)ことが分かりますね。

こんな感じにして、タスクの消化速度と確率を計算していくと、感覚的にどのくらいプロジェクトが伸びそうかが分かってきます。また、確率として計算すると、細かい進捗管理(特に実績の抽出)をしなくても、プロジェクトが期日に終わりそうかどうかが分かります。

勿論、別途リスク管理(プロジェクトを止めてしまうストッパーなので)は必要ですが。
ちょっと、理論のほうは後日アップするとして、ひとまず、確率を使ったプロジェクトの期間見積などを。

カテゴリー: 開発, プロジェクト管理 パーマリンク

サプライチェーンから考えるプロジェクトの工期 への2件のフィードバック

  1. k1496 のコメント:

    ずっと気になっててようやく自分で計算し始めました。。

    プロジェクトを管理するには!?確率的に収束のラインを知るには!?ということが
    できている人は少ない、というかほぼ周囲にいないので。。

    社内SEなので政治的なことにも振り回されてますが、、
    裏で自分の武器を揃えていこうかなと思ってます。

    ここら辺のエントリー楽しみにしてます。

  2. masuda のコメント:

    プロジェクトの終了時期は「確率」であって、何処に終着「させる」かは人の意思である、というのが理解できない方が多い…のが原因ですね。
    具体的に言えば、「リリース日は、○月○日だから、必ずそのときにリリースさせろッ!!!」という納期至上主義なんですが、実は納期を守るためのコストと納期遅延の損失を比べていなかったり、という具合が多いのです。このあたり、スケジュールの組み替えコストが掛かるので、単純な機会損失ではないけれど、、、ってなあたりが絡んでいて、結局、納期至上主義になったり。
    そういう意味でも、納期に対する当確ラインをあらためて見定めておくのは必要ですよね。最初にリスクを見込んでおくけど(リスク対応の金銭は積まない)、当確が確定したらリスクそのものが消えるので、納期に間に合う確率が高くなり、プロジェクトの金額が安くなるという具合かと。

コメントは停止中です。