如何为多个任务和未知开发人员执行基于证据的调度(EBS)?

时间:2013-03-07 14:14:52

标签: project-management estimation fogbugz

我试图了解FogBugz中使用的基于证据的调度(EBS)方法,并且我多次阅读Evidence Based Scheduling

我所理解的是一般的想法,为什么使用蒙特卡罗等等......

我还可以通过使用过去故事的因子来计算估计的外推。到目前为止,非常好。

问题1

我的问题是:如何计算多个故事的概率分布?即,我想知道五个故事何时完成。

我可以加上10%的值,20%的值,......,最后是100%的值吗?

举个例子:

  • 我知道故事1估计为4小时,其概率分布告诉我0%是3小时,25%是4小时,50%是4小时,75%是5小时,100%是9小时。
  • 我知道故事2估计为6小时,其概率分布告诉我0%是4小时,25%是6小时,50%是6小时,75%是7小时,100%是13小时。

如果我现在想知道故事1和2的概率分布,我可以添加它们,所以我得到:

  • 0%:7小时
  • 25%:10小时
  • 50%:10小时
  • 75%:12小时
  • 100%:22小时

这就是我需要做的吗?还是更复杂的东西?

问题2

我的另一个问题是,当涉及的用户多于时,如何计算多个任务的结束时间,但我事先并不知道哪个用户会处理什么故事。只要我知道该任务,就很容易:为每个用户计算故事总数,然后将最新的一个作为整体时间(如果一个人在3周后结束,另一个在5周后结束,整个项目将会需要5周时间。

但是,如果我事先不知道,并不是每个用户都能够处理每个故事呢?例如,我已将能力放在故事上,例如前端后端,......我已将能力分配给我用户,因此可能有开发人员用于前端,后端,......等等。

当然,可能存在需要多种能力的故事,而这些故事需要多个用户的工作。但他们将致力于不同的事情,并需要不同的时间来完成他们的任务。而这又取决于概率分布:如果一个人跑步,他可能会比他没有的更早完成。这可能会影响他下一步的工作,他可能会帮助谁,等等......

我知道如何计算这个吗?

2 个答案:

答案 0 :(得分:1)

1

您可能无法将概率分布中相应级别的值相加。这将毫无根据地假设任务完成时间之间的完美关联。这是你可以做的事情。

在最坏的情况下,完成两项任务的时间是完成每项任务的时间总和。到现在为止还挺好。软件开发中的最坏情况估计可能就好了。我不认为总计时间会导致问题。

现在我们需要考虑两个任务的时间是否由彼此独立的概率分布控制。也就是说,当我们知道任务完成的时间有多快时,它能告诉我们其他任务完成的时间吗?如果我们不知道,我们能否做出适当安全的假设?

当然,这取决于错误估计的成本,但可能足够安全地假设分布确实是独立的。这样,至少完成一个任务一般并没有给我们另一个错误的希望。所以答案是,如果一个任务被分析成M个结果,每个结果都有自己的概率,而另一个任务被分析成N个结果,每个结果都有自己的概率,我们可以形成M * N结果并分配给(i,j) )结果第一任务的第i个结果的概率(密度)乘以第二个任务的第j个结果的概率(密度)。

我要修改你的例子,因为抱歉,我不明白。让我们说第一个任务有这个分布,其中X是0%到100%之间的均匀分布的连续随机变量:

3 hours, if       X <= 20% (with probability density 20%);
4 hours, if 20% < X <= 60% (with probability density 40%);
5 hours, if 60% < X <= 80% (with probability density 20%);
9 hours, if 80% < X        (with probability density 20%).

第二个任务有这个分布,其中Y是0%到100%之间的均匀分布的连续随机变量,与X无关:

 4 hours, if       Y <= 20% (with probability density 20%);
 6 hours, if 20% < Y <= 60% (with probability density 40%);
 7 hours, if 60% < Y <= 80% (with probability density 20%);
13 hours, if 80% < Y        (with probability density 20%).

Now we calculate as follows:

               4@20%   6@ 40%   7@20%   13@20%
              ------ -------- ------- --------
     3@20% | 3+4@ 4% 3+6@  8% 3+7@ 4% 3+13@ 4%
     4@40% | 4+4@ 8% 4+6@ 16% 4+7@ 8% 4+13@ 8%
     5@20% | 5+4@ 4% 5+6@  8% 5+7@ 4% 5+13@ 4%
     9@20% | 9+4@ 4% 9+6@  8% 9+7@ 4% 9+13@ 4%

所以这里是两个任务时间之和的概率分布和密度,其中Z是从0%到100%的均匀分布的连续随机变量:

      7 hours, if       Z <=  4% (with probability density  4%);
      8 hours, if  4% < Z <= 12% (with probability density  8%);
      9 hours, if 12% < Z <= 24% (with probability density 12%);
     10 hours, if 24% < Z <= 44% (with probability density 20%);
     11 hours, if 44% < Z <= 60% (with probability density 16%);
     12 hours, if 60% < Z <= 64% (with probability density  4%);
     13 hours, if 64% < Z <= 68% (with probability density  4%);
     15 hours, if 68% < Z <= 76% (with probability density  8%);
     16 hours, if 76% < Z <= 84% (with probability density  8%);
     17 hours, if 84% < Z <= 92% (with probability density  8%);
     18 hours, if 92% < Z <= 96% (with probability density  4%);
     22 hours, if 96% < Z        (with probability density  4%).

所有这一切可能都很乏味,但这是合乎逻辑的,并不难实现自动化。

2

你是对的,有一个场景的扇动。粗略地说,它始于最初的确定性,即在世界存在之前,没有人做过任何事情!在那之后,在问题1的自动化之后,您可以在分析中采用各种策略。也许你的想象力和我的想象一样好。无论如何,这是我的建议。

您可以以交互方式探索假设情景。

您可以尝试计算并累计可能发生的所有事情。正如我们所看到的,这种分析对于小案例是可能的。我们可以想象,在大型情况下它会变得无法控制,例如建造飞行导航系统。

您可以分析最可能出现的情况,并可能围绕这种情况进行有限程度的变化。

很有可能,您将有兴趣控制风险。因此,您可以根据自己的需要和方便考虑分析以下一项或多项内容,所有这些都与其他内容略有不同:结果不可接受的可能性,或存在不可接受程度的不确定性的可能性,或估计存在多少不确定性,或预期结果的估计(即,如果一个人面对同样的情况无休止地重复,则平均结果)。

答案 1 :(得分:1)

如果没有谷歌搜索问题,我猜想“未知的开发人员能力”可能会将问题推入NP-hard优化问题bin。要看的几个算法是模拟退火和遗传算法(模拟退火用于Wintek的电子CAD自动放置程序(我在开发团队中))。