【问题标题】:I am having trouble determining a proper way to divide resources evenly in a excel-like table [closed]我无法确定在类似 excel 的表格中均匀分配资源的正确方法[关闭]
【发布时间】:2012-01-23 07:38:34
【问题描述】:

我会尽力解释这一点,但请随时要求澄清。

首先,我将尝试解释问题。

我需要计算任何给定迭代的资源成本(点数)。话虽如此,请想象一个 excel 文档。最左边的列有一个版本列表,或者需要完成的项目。在第一行,列标题是迭代。

我有以下信息。我有每个单独版本所需的资源数量。但是,由于一个版本可以跨越多个迭代,我需要一种方法来公平地分配每次迭代所需的资源。

例如发布可能在下一次迭代前一天开始,所以我必须只为该发布/迭代组合分配一小部分资源。

我已经在一张图片中包含了我目前拥有的东西。出于某种原因,我无法正确计算出正确的数量,这很可能是由于我的数学能力差。我希望这对你们中的一个人来说是微不足道的,并感谢任何尝试。

这是我对 javascript 的第一次尝试,所以请随时提出任何建议。

我现在的大概是这样的。

for (var i = 0; i < results.Iterations.length; i++) {
var iteration = results.Iterations[i];
for (var z = 0; z < results.Releases.length; z++) {
    var release = results.Releases[z];
    release[iteration.Name] = release[iteration.Name] || 0;

    if (dates.inRange(iteration.StartDate, release.ReleaseStartDate, release.ReleaseDate) 
    || dates.inRange(iteration.EndDate, release.ReleaseStartDate, release.ReleaseDate))
    {
       var availableReleaseDays = dates.workingDaysBetweenDates(release.ReleaseStartDate, release.ReleaseDate);
       var availableIterationDays = dates.workingDaysBetweenDates(iteration.StartDate, iteration.EndDate);
       var iterations = calculateIterations(release, results.Iterations, dates);
       var resources = Math.round(release.Resources/iterations );

       release[iteration.Name] += resources;
    }

}

【问题讨论】:

  • calculateIterations 函数有什么作用?
  • 您的图片很难阅读。即使我放大它,我也无法分辨数据的含义。
  • @StephenOstermiller,抱歉,这是我 5 年前工作的一家公司。我不再在那里工作。

标签: javascript math logic scrum rally


【解决方案1】:

我已经编写了可以满足您要求的代码。就在这个gist

基本思想是,对于每个版本,我将其所有资源分配给它开始和结束之间的所有工作日。然后我遍历每一天,如果那一天在迭代中,我将这些资源添加到该迭代中。那是你想要做的吗?

我以前的敏捷教练想质疑这种方法。感觉有点太长的计划了,计算的精度超过了资源估计的精度……但我已经忍住了这些直觉,足以给你可用的代码。

对于这种情况,这可能有点矫枉过正,但该解决方案使用了我正在开发的名为 ChartTime 的库。 ChartTime 允许您进行日期和时间框操作和计算。它具有淘汰假期和周末的能力,我在我的示例解决方案中使用了它来解决您的问题,即使不需要这种精度。它还具有我没有使用的时区精度。

ChartTime 是用 CoffeeScript 编写的,我对您的问题的解决方案也是用 CoffeeScript 编写的。 CoffeeScript 只是一种更简洁的 JavaScript 语法,它可以编译为 JavaScript,因此您可以直接从 JavaScript 使用 ChartTime 库。我每个周末/晚上都在做这个,效果很好。文档很好,但还不完整。

【讨论】:

  • 我在此解决方案中提出的一个我质疑的假设是,用于发布的资源将分布在整个发布中,而不是一次性使用。你不会在开始另一件事之前尝试完成一件事吗?资源会转移。此外,更敏捷/Scrum 更倾向于假设您每次迭代都拥有相同的资源,并让您尝试构建的时间和范围有所不同。
  • 谢谢拉里。我的任务是创建这个,但原因是经理可以看到他在哪里有过度或计划不足的项目或员工,并尝试根据这些数据做出判断。
  • 如果您在运行我提供的代码时需要任何帮助,请告诉我。
  • 您答案中的ChartTime 链接已失效。
  • ChartTime 更名为 Lumenize
猜你喜欢
  • 2013-04-30
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多