项目开发是一项非常复杂的工程,不仅包含需求分析、设计、编码、测试、实施、维护等完整的过程,还涉及到开发工具、开发人员、项目管理、风险等众多因素,不同因素对时间估算产生的影响不尽相同,在进行时间估算时必须考虑到这些方面,否则最终结果就会和实际结果有很大的偏差,影响项目控制。
对项目开发进行WBS分解,对每个任务单独评估时间,通过关键路径法计算项目时间。这是很标准的做法,但对于分解WBS是最困难的环节。项目本身是渐进明细的,要很准确很具体估计项目开发时间是很困难的,项目初期的计划时间会有50%到100%的误差也是可以接收的,随着项目的进展确定每一个里程碑都需要对项目计划做相应细化项目开发时间也在做相应的调整。当然,在具体资源落实之前,WBS也是不准确的, WBS的意义是能够保证所有的工作任务都在计划和可控范围之内。
为了准确估算项目开发时间,细分任务的量度指标很重要.如果你的量太大,你将忽略很多细节。如果你的量太小,你将被细枝末节埋没,你估算的耗时将比你完成任务的所需时间还要多,这太过头了。
在对项目开发的时间估算时,通常用的方法有:类比估算,利用历史数据估算,专家判断估算。类比估算是指根据以前类似工作的实际持续时间为基本依据,估算现计划工作的所用的持续时间。利用历史数据包括的历史资料有定额数据,项目档案,时间估算数据库和项目团队成员的知识。专家判断估算常常采用三时估算法。三时估算法就是首先估算出三个时间值,即最乐观时间a、最可能时间m和最保守时间b。
在制定项目时间表的时候,需要估算第个任务所需要的时间,其中开发任务中模块的分配和时间估算是其中最主要的部分。
在分配模块和估算开发时间时,需要把握的原则和目标有:
l 保证项目整体的进度
l 有助于确保开发编码的质量
l 有助于提高开发编码的速度
每个公司都拥有自己的技术框架,开发人员主要的工作通常投入在具体的业务逻辑上。通常每个模块所需的开发时间取决于以下三个因素:
l 该模块的业务逻辑的复杂程度
l 开发人员的技术水平和对项目所在应用的熟悉程度
l 该模块技术实现上是否有技术难点
模块分配和开发时间估算的步骤:
l 在划分好模块后,自己先估算一下每个模块大概需要的开发时间
l 召集所有开发人员,讨论模块分配和开发时间估算
l 模块分配完后,开发人员评价自己负责开发的模块所需要的时间,在此过程中会比较详细的讨论每个模块的技术实现,以便使时间的估算更加准确
l 然后对开发人员估算的时间进行确认
在这几个步骤期间,为了确保开发的速度和质量,要注意几点:
l 将划分好的模块,让开发人员从中挑选他们感兴趣的模块。这样作可以提高开发人员的主动性和参与性
l 相同类似的模块由同一人负责开发,这样做会使开发者对相关逻辑会更加熟悉,同时接口的定义也会比较明确,沟通的成本比较低
l 技术难度比较大的模块由技术水平比较高的人负责
l 业务逻辑比较复杂的模块由对这块逻辑比较了解的人负责
l 将自己估算的时间和开发人员估算的时间进行比较,这其中的差异当然会存在的,但对于那些差异比较大的,要和技术人员探讨其中的缘由
l 对于时间周期比较长的任务,通常要再细分一下,争取每个任务的最长时间不超过三天,时间周期越长的任务,不确定性越高,风险也就越大,越有可能成为项目开发中的瓶颈
l 对于技术难点,在项目开始前做好技术准备,提前安排人员研究。这样会节省以后项目开发时间,降低技术风险
项目总结的时候,对项目中的一些数据做好统计比如某个模块所花的开发时间、测试时间等,这些数据统计可以作为以后开发的参考。