在从事固定价格的软件开发项目时,我经常发现自己不得不估计项目在价格确定之后但在工作开始之前(或在开发的早期阶段)将花费的总小时数。不幸的是,这些类型的项目最好使用迭代/敏捷方法开发,这意味着我们不(而且真的不能)进行完整的前期设计。
在一个典型的场景中,我们将有一个具有 X 功能和 Y 美元的合同。签订合同后,工程部门需要估算完成 X 功能所需的小时数。有几个可能的原因需要预先提供此信息,包括:
• Y 美元转换为可用的 Z 小时,因此我们必须确保 time(X)<=Z,或许可以通过缩小 X 的范围。
• 交货日期已确定,因此我们必须分配适当的资源以满足该日期。
Kelly Waters 在这里对敏捷的估计有一个有趣的看法:http ://www.agile-software-development.com/2009/04/agile-estimating.html不幸的是,这些是使用积分系统的难度估计,而不是翻译成小时。
在我看来,我们需要能够做以下两件事之一:
• 获得具有极大灵活性的合同,以适应敏捷开发过程。
• 弄清楚如何为尚未设计的功能提供合理准确的前期估计。
在大多数情况下,第一个选项当然不是一个选项。是否有人对如何在敏捷开发场景中生成预先估计有任何建议/指导?
或者,是否有人看到通过其他一些流程更改来解决我们的问题的另一种选择?