软件开发的成本估算是出了名的困难。对于软件开发项目来说,预算超支反而是常态,而不是例外。
在开始估算之前,请从业务角度了解项目的战略目标和你的目标。你可能计划尽可能赚取更多利润,探索新技术,或者在项目可能亏损的情况下获得一个好客户。因此,你可以在估算中设定较高的利润率,或者保持在盈利边缘,并接受一定的财务风险。无论如何,精确的估算是控制项目的必备条件。
在软件开发过程中,主要涉及项目人员的时间成本,而这一成本并不容易估算。尝试猜测一个大概的成本并不是最好的做法,因为这很难准确地描述所有方面。
自下而上的估算
估算一个团队完成一个大型项目需要多少时间一直是个挑战。与此同时,在大多数情况下,了解一项小型任务的范围并为其估算时间是可行的。因此,如果项目规模较大,应首先将其分解为较小的任务。
这种由小任务组成的计划被称为工作分解结构。后者不仅对时间和成本估算至关重要,而且对许多其他项目管理活动也很重要。将这样的子时间预测总结起来,就可以得出按小时计算的项目总成本。这是一种常用的自下而上的估算技术。
就单个任务而言,有以下几种估算方法:
类比估算
类比估算是根据以前完成项目中的类似任务来确定估算值。
参数估算
参数估算是使用一组参数或因素(例如项目规模、项目复杂程度、软件开发人员数量以及项目预计持续时间)来生成项目开发成本估算。例如,假设项目 A 的数据库模式开发耗时一周。如果你的新项目比它复杂两倍,你可以假设同样的任务需要两周时间。
三点估算法
这种方法包括乐观估算、悲观估算和最可能的估算。最终估算结果可以作为三角形分布:
E = (a + m + b) / 3
a = 最佳情况估计值
m = 最可能的估计值
b = 最坏情况估计值
值得一提的是,他们经常将这种方法与前面介绍的其他两种方法结合使用。
意外情况、风险和质量保证
一般来说,对单个任务进行估算然后求和的方法效果相当好。不过,在向客户发送报价之前,有几点需要考虑。
项目的整体复杂性会随着项目功能数量的增加而呈指数增长。在大型项目中,各个组件之间存在许多依赖关系和相互联系。它需要更多的工作,容易带来更多的意外情况,并且需要更广泛的质量保证流程。
每个项目都有风险,制定风险应对计划是有好处的。考虑一下如何降低风险以及可能要付出什么代价。
在规划项目时,你很可能会忘记考虑一些细节。因此,要对你能看到的范围持悲观态度,假设有些事情是你没注意到的。
计划大量时间用于质量保证和处理客户反馈,并将其纳入估算中。
自上而下的估算
自上而下估算法通常用于有固定预算的项目。高层管理人员可根据类似项目的历史信息或专家意见提供预算。在这种情况下,估算过程就是确定符合规定预算的项目范围。换句话说,它显示了你能用现有的资金做什么。
在这种情况下,准备工作分解结构并考虑上述自下而上估算技术的所有方面仍然非常重要。你需要制定一份包含要完成的任务清单的计划。
总结
无论采用自下而上还是自上而下的估算方法,首先都应为项目准备一个工作分解结构。然后,从最小的任务开始向上推,你就可以得到总的估算;或者相反,从已经确定的预算开始向下推,确定项目中能够包含哪些功能。
请记住,大多数人往往会低估任务的复杂性。因此,一定要谨慎、悲观,并分析之前完成项目的经验。你还可以借助类似8Manage PM这样的**项目管理软件**,从项目开始到完成始终自动跟踪预算,帮助你有效控制成本。
● 将成本与WBS的任务联系起来
● 创建成本基线以评估成本绩效
● 实时跟踪多层次的预算、收入和费用
● 自动预警逾期、超支、超负荷情况
● 及时清晰的可视化数据报表分析
8Manage PM不会将成本管理视为孤立的功能,而是将其作为项目和投资组合绩效的组成部分加以利用,并关联项目间数据。它允许你设定明确的期望、控制范围、跟踪进度并保持预期利润。