软件成本估算


10

我在工作场所(一所大学)见过,大多数学生都使用COCOMO进行最终文凭工作的软件估算成本。我的猜测是,这种估算成本的方法有些陈旧(COCOMO于1981年成立),因此我的问题是:

How do you estimate costs in your software?

我看过类似的东西:

费用=(每小时工作量+估计的空闲时间)* HourlyRate

那不是我想要的,我正在寻找一个正确的(科学地)定义的成本模型

编辑我已经找到了一些相关的问题:


30
“您如何估算软件成本?” 差劲,就像其他所有人一样。
Rein Henrichs

1
这实际上是两个问题。我建议您将其重写为一个不依赖于深奥软件的主要问题。我怀疑如果需求是Cocomo的知识,您会得到很多答案
Eran Galperin

@Eran,我将听取您的建议,然后重写问题……
David Conde

4
Steve McConnell被很多IT人士视为这一领域的思想领袖。你应该看看他的书。stevemcconnell.com/est.htm
Jeff

5
我投票关闭此问题为离题,因为它与帮助中心所定义范围内的概念性编程问题无关。
durron597

Answers:


16

万一您陷入瀑布模式,我使用的唯一相当准确的方法是:

  1. 创建工作分解结构
  2. 确保它足够详细,以便您可以将每个任务的规模与您(或可以与之交谈的人)之前完成的事情联系起来。
  3. 对于每项任务,请根据经验得出最佳情况,可能情况和最坏情况的数字。最好的情况是,如果一切都进行得很好,最坏的情况是,如果您不得不重新做一次(也许两次),并且可能在某个地方。
  4. 使用一些加权公式,例如(1 *最佳+ 4 *概率+ 1 *最差)/ 6,为考虑到范围的每个任务得出一个估计值。
  5. 我还看到了可以在每个任务中添加“风险”组件的变体。风险的三个级别分别为0、1和2。风险0表示您之前已经做过(或非常接近),1表示您之前没有做过,但是在您的行业中定期进行,2意味着该行业可能从未做过。您将风险数字乘以估计值“标准偏差”的近似值。将其添加到您的加权估计中。因此,风险0不会使之移动,但是风险2会使它非常接近最坏情况的数字。
  6. 总计所有任务。
  7. 为“未知的未知数”添加意外事件(某些百分比)。

您将得到一个非常精确的数字。我并不是说这很准确,但是会很准确。

准确性完全取决于能否根据过去的经验为每个任务提出一个数字,或者找到以前做过的事情。您拥有的经验越多,您获得的估计就越好。

在执行项目时,针对每个任务跟踪时间,并写下您错过的任务,以便您进行比较。随着时间的推移,这会使您变得更好。


感谢@Scott,我将推荐类似您的想法。
David Conde

1
以这种方式进行估算,然后以第二种方式独立估算(和/或由第二个人进行估算)。比较结果。与“胆量感觉”相距甚远或有显着差异的任何事物都需要进行审查。我的经验(25年以上)是,“胆量感觉”通常比任何幻想的公式都更准确,请您自担风险。
mattnz 2011年

@mattnz-直觉有同样的警告:只有在您有很多经验的情况下,它才有效。每个客户都有一种“直觉”,认为这种方法的成本要比它低得多,因为他们不了解这种情况所涉及的工作量。
Scott Whitlock

3
另一个提示:“我不协商估计。<长时间停顿>”在与老板/客户开会时非常有用。毕竟,您的汽车修理工或外科医生会这样做吗?他可以协商价格,可以协商要完成的工作或如何完成工作,但是我从来没有见过任何领域的专业商人,除了软件可以协商工作需要多长时间。
mattnz 2011年

@mattnz-上周我与汽车修理工进行了协商,决定修理车门需要多长时间,具体取决于修理方法。
2015年

3

软件估算非常困难。我使用的一种方法是尽可能细化需求并分别估算每个需求。然后添加一个“忽悠系数”,它可以是一个乘数(乘以两倍)或一个固定的量(对于未预期的工作为x小时)。如果您没有很好的需求,那么出于实际目的进行估算是不可能的。


1
我见过的最成功的估算值(不包括那些使用复杂方法的估算值)约为原始估算值的两倍。
Bernard Dy

1
是的,加倍。我工作过的政治上最成功的经理之一对开发人员的估算进行了三倍的评估,然后与用户进行了协商,将其降低了一倍。协商的交货日期经常会受到打击。
DaveE 2011年

0

自81年以来的30年中,该行业学到了很多东西。像这样的估计是行不通的。随着敏捷热潮基本重写了景观,我们使用了代表一些朦胧的“比较难度”的“故事点”。然后,我们获得“速度”,从而使泥泞的泥泞的人可以使用一定数量的经验数据进行其$$估算。


0

我已经了解了一些“严格的”方法,例如功能点估计及其为现代应用程序设计的一些变体。我认为这些方法中有价值的部分是,它确实对已知要求进行了更详细的分析,然后我可能会给出其他要求。

即使您有一个好的模型,也很难获得一套好的数据来处理。衡量生产力很难。人们几乎可以使用任何指标。

我之所以停止使用它,是因为我的组织功能失调,无法从软件估算中受益,但是我确实对Cost Xpert组及其工具有所关注。但它非常昂贵,对于大多数组织而言,可能不值得付出成本和学习所需要的时间。


0

估算工作量和成本非常困难,但是如果您想要更精确的信息,则:

  • 将HoursOfWork分为3个部分:

    1. 最佳估计,
    2. 最有可能的估计,
    3. 更糟糕的估计。
  • 删除EstimatedIddle。

请注意,任何花费时间超过8小时的操作都会引入巨大的错误。


0

我们通常所做的是将整个工作范围划分为主要模块/元素,可以将其视为子项目。换句话说,它们是那些工作部分,客户将其视为项目的独立部分,并且客户希望分别进行估算。

完成后,我们将每个模块划分为任务,子任务,甚至更小的子子任务,以便可以很容易地估算每个模块,并且估算需要一到十个工时。这样,我们就可以详细了解该项目的工作范围。

最后一步是在里程碑之间分配任务。我们这样做是为了让每个里程碑客户都可以看到可见的结果。这有助于通过一个里程碑并转移到另一个里程碑。所以最后我们得到了类似的东西:

模块1

    <ol>
        <li>
            Primary task 1 - 5 hrs
            <ol>
                <li>Subtask 1.1 – 3 hrs</li>
                <li>Subtask 1.2 – 2 hrs</li>
            </ol>
        </li>
        <li>
            Primary task 2 - 9 hrs
            <ol>
                <li>Subtask 2.1 – 1 hrs</li>
                <li>Subtask 2.2 – 2 hrs</li>
                 <li>Subtask 2.2 – 5 hrs</li>
            </ol>

最初,我们只是使用Excel工作表来完成的。但是两年多以前,我们开始为此使用软件工具。www.evenflow.comwww.swproposal.com和其他一些产品很少能提供帮助。我不记得所有清单。我们很久以前就做过研究。希望对您有所帮助。

好的问题是如何精确估算。我们认为没有100%正确的估计。唯一的方法是将整个工作范围划分为尽可能小的任务。较小的任务将对您所做的项目进行更详细的审查和分析。因此无论如何都会提高准确性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.