软件工程 - 时间表,项目估算

时间:2012-03-05 09:56:14

标签: project-management software-design

我的问题是,某人如何真正估算项目的持续时间? 这是我在整个过程中遇到的整体问题 假设您需要一个简单的应用程序,其中包含客户/订单表格以及一些库存容量以及用户/角色权限。

  • 如果你选择Java / Spring等,你应该有X时间。
  • 如果你使用ASP.NET,你应该有Y时间。
  • 如果您使用PHP或其他东西,您将获得另一次
    吧?
    所有人都说以较小的部分打破项目。我同意。但那你怎么估计用户/角色花了这么多时间呢?
    当你实现让我们说'升级'的东西时,问题会变得很激动(例如,Spring 2.5 vs Spring 3.0有很多不同之处)。
    或许你遇到了一些你不可能知道的东西,因为它是新的,总是你会遇到新的东西!有时我发现奇怪的行为就像一些.net演示库给了我一些歌曲!对于某些XML文件中可能存在类型错误的内容,可能会花费我2个晚上的生命...
    基本上我认为是一个问题,那就是没有标准化的时间表吗?时间和费用预估评估?这是一项服务而非产品。因此它可以扩展到人的能力。

    但普通人的平均事物的平均时间是多少?

4 个答案:

答案 0 :(得分:3)

我们有很多很多成本估算模型可以给我们一个时间表估算,COCOMO 2就是一个很好的例子。虽然或多或少如你所说,类型错误可能会花费你2晚。所以解决方案是什么? 在我看来

  • 专家判断为业界提供最好的服务并将继续提供服务 因此,尽管有各种成本估算技术的出现 判断或多或少要记住你的开销 过去可能会面临这样的项目
  • 某些模型为您提供编程语言LOC之间的直接映射 每个功能点,但直到更高的水平,并没有说 如果引入一个新的框架(如你所提到的那样,转换 从春季2.5到3.0)
  • 正如你所说,总会有新的东西出现,所以我想是的 专家判断再次发挥作用。经验可以帮助你 确定你最终可以工作的时间。

所以,在我看来,它应该是估算技术与专家判断项目可能发生的间接费用的混合。或多或少,你最终得到的数字非常接近你的实际努力。

答案 1 :(得分:3)

我的经验法则是始终保持估计最初语言不可知。意思是,不要为不同的实现语言创建不同的估计。这没有意义,因为客户会在商业意义上向您表达要求。

这是"什么"。 "怎么"取决于你,给客户的估计不应该给他们选择。 "怎么"作为分析师,完全是您的域名。您必须通过分析业务需求,然后找到您在团队中的经验,您自己的时间限制,您的基础架构等等。然后在两个时间内提供估算,并假设您将使用的技术。

编程语言和算法只是实现业务需求的中介。因此,客户不应该决定这一点,因此,鉴于手头的问题和资源,您只需要给出一个估计值,作为分析师,您可以对使用的内容做出决定。

我通常遵循这三个域:

"什么" - 要求,它们应该是CLEAR范围的小单位,它们由客户提供

"如何" - 技术架构,实际使用的语言和技术,基础设施和团队组成。此外,系统应如何整合和组合(组件关系)的高级建模,由分析师在他所需的团队的帮助下提供

"当" - 这是你的实际时间组件。这告诉客户什么时候期待"什么"的每个部分。何时交付要求或特征x。这是由分析师,团队和客户一起根据"如何"和"什么"与客户的优先事项一起。通常我根据团队告诉我的内容(技术时间),我的想法(体验)以及客户想要的(优先级)得出总和。 "当"由所有利益相关者(分析师/ CM,团队和客户)拥有。

用于描述上述内容的表单可能有所不同,但我通常使用高级用例模型,通过技术细节提供积压工作。然后,我首先与团队进行时间估算,然后我与客户进行修改。

然后可以使用相同的积压来推动开发冲刺......

答案 2 :(得分:1)

规划/评估是软件工程中最困难的部分之一。

然后: - 将工件拆分成较小的部分 - 邀请一些团队成员(约5-8人), - 讨论每个项目的含义 - 让他们填写一个表格,每个项目是多少小时,不要讨论或让他们看别人 - 然后对于每个项目,检查平均值并讨论是否存在大量差异(风险?) - 删除每个项目的最低和最高值 - 取其余的平均值

这最适合基于经验的工作,对于有全新事物的新项目来说,计划总是比较困难。

希望这有帮助。

答案 3 :(得分:1)

您的问题没有简单的答案。我能做的最好的就是参考一篇论文,讨论用于成本分析的一些不同模型和技术。

Software Cost Estimation - F J Heemstra