首先软件开发是一项非常复杂的工程,不仅包含需求分析、设计、编码、测试、实施、维护等不同的过程,还涉及到开发工具、开发人员、项目管理、风险等众多因素,不同因素会对周期预估产生不同的影响。
而在软件开发实施之前采取的软件开发周期预估(根据软件的开发内容、开发工具、开发人员等因素对需求调研、程序设计、编码、测试等整个开发过程所花费的时间做的预测)是在很多方面较为理想的条件下的预估,但是软件开发的过程总会发生各种意想不到的情况发生。从而不会达到预估时间。
原因:
1.构造软件框架时做的东西没有也无法全量覆盖业务需求、技术难点等,导致与实际落地产品差距甚大。
2.需求理解有差异,用户表达的是这样的,而程序员的理解是这样的,且客户需求不定,增加需求,组织协调不畅。
3.项目经理没有处理好任务的时间分配。有的任务分配时间过长,浪费了时间,有的任务分配时间过短,没时间去完成。
4. 某些独立的任务一致性要求高,无法增添人员并行加速,因为有些任务对于思考的连贯性很强,如果强行加派人手,只会 频繁中断。
5. 开发人员对实现目标的可能出现的问题,估计不足,往往会低估问题的复杂程度。风险意识不足,没有意识到风险或者意识到风险响应错误不及时。
6. 项目技术难度很大,花费的时间超过原先的估计。
7.团队人员的工作效率不高或当团队内部人员之间出现分歧,也极有可能导致工期的延长。