原文链接
软件开发的周期在最初的进度安排时,总以最优情况安排进度,并没有考虑到开发过程中会出现的各种负面的情况,例如节假日放假,开发过程中遇到技术上的难题,某个成员生病等等,每一种都会拖时间。
周期延迟的因素:
-
构造软件框架时做的东西没有也无法全量覆盖 业务需求、技术难点 等,导致与实际落地产品 差距甚大。
-
需求理解有差异,用户表达的是这样的,而程序员的理解是这样的,且客户需求不定,增加需求,组织协调不畅。
-
项目经理没有处理好任务的时间分配。有的任务分配时间过长,浪费了时间,有的任务分配时间过短,没时间去完成。
-
某些独立的任务一致性要求高,无法增添人员并行加速,因为有些任务对于思考的连贯性很强,如果强行加派人手,只会 频繁中断。
-
开发人员对实现目标的可能出现的问题,估计不足,往往会低估问题的复杂程度。风险意识不足,没有意识到风险或者意识到风险响应错误不及时
-
项目技术难度很大,花费的时间超过原先的估计。
-
程序员大多是乐观的,乐观表现于假定一切运作是良好的,而事实经常相反。
-
人力资源也会对估算影响,表现在技术水平、理解能力、沟通能力等几个方面,编程水平的高低、速度的快慢、能否适应团队、能否与各成员保持良好的沟通都会对开发进度产生影响,
-
软件开发周期估算前,应对开发人员的技术水平进行定级,然后依据项目组实际人员的水平做修正,这样可以减少对后期开发预估的误差。评价程序员的技术水平可以从编程熟练程度、编程速度、解决技术问题的能力几个因素考虑。
计划赶不上变化,所以应该考虑到大部分能影响到软件开发的事,适当延长周期才能在规定范围内完成项目。