为什么软件开发周期总是预估的2~3倍?
软件开发工期的预估工作包括了很多细节问题需要处理,比如:预估的准确性标准是什么、选择什么样的预估方法和工具、预估应遵守的原则和态度、预估人员的选择等。其中任何一个环节没有做到位,工期预估时间与实际时间就会产生较大差异。
软件开发周期预估:
软件开发周期预估就是根据软件的开发内容、开发工具、开发人员等因素对需求调研、程序设计、编码、测试等整个开发过程所花费的时间做的预测。
软件开发周期预估在软件开发中也是较为困难的工序之一,因为软件开发所涉及的因素不仅多而且异常复杂。软件开发是一项非常复杂的工程,不仅包含需求分析、设计、编码、测试、实施、维护等不同的过程,还涉及到开发工具、开发人员、项目管理、风险等众多因素,不同因素会对周期预估产生不同的影响。
当低估项目周期时,会造成人力低估、成本预算低估、日程过短,最终人力资源耗尽,成本超出预算,为完成项目不得不赶工,影响项目质量。而项目周期估计过长,也会带来成本估计过高,人力资源利用不充分效率低下的后果。所以,过长过短的预估周期都是不好的,周期预估就是后续开发工作的基础,它完成质量的好坏所带来的影响会贯穿整个项目,由此可见开发周期正确估算的重要性。
周期延迟的因素
1.构造软件框架时做的东西没有也无法全量覆盖 业务需求、技术难点 等,导致与实际落地产品 差距甚大。
2.需求理解有差异,用户表达的是这样的,而程序员的理解是这样的,且客户需求不定,增加需求,组织协调不畅。
3.项目经理没有处理好任务的时间分配。有的任务分配时间过长,浪费了时间,有的任务分配时间过短,没时间去完成。
4. 某些独立的任务一致性要求高,无法增添人员并行加速,因为有些任务对于思考的连贯性很强,如果强行加派人手,只会 频繁中断。
5. 开发人员对实现目标的可能出现的问题,估计不足,往往会低估问题的复杂程度。风险意识不足,没有意识到风险或者意识到风险响应错误不及时
6. 项目技术难度很大,花费的时间超过原先的估计。
7. 程序员大多是乐观的,乐观表现于假定一切运作是良好的,而事实经常相反。
8. 人力资源也会对估算影响,表现在技术水平、理解能力、沟通能力等几个方面,编程水平的高低、速度的快慢、能否适应团队、能否与各成员保持良好的沟通都会对开发进度产生影响, 软件开发周期估算前,应对开发人员的技术水平进行定级,然后依据项目组实际人员的水平做修正,这样可以减少对后期开发预估的误差。评价程序员的技术水平可以从编程熟练程度、编程速度、解决技术问题的能力几个因素考虑。
②软件工程中分而治之就是指工作分解结构(WBS)。
在搭建一个较大项目的时,我们不可能一蹴而就。当直接面对一个庞大的目标时,我们很可能会迷茫,不知道从何开始。而wbs(任务分解)是一个很好的思维方式。将一个庞大的项目逐层分解成很多个小项目,直到最后变成一个个结构简单,目的明确的任务时。我们的编程思路就会很清晰明了。更容易完成项目。
工作分解结构(简称WBS)跟因数分解是一个原理,就是把一个项目,按一定的原则分解,项目分解成任务,任务再分解成一项项工作,再把一项项工作分配到每个人的日常活动中,直到分解不下去为止。即:项目→任务→工作→日常活动。工作分解结构以可交付成果为导向,对项目要素进行的分组,它归纳和定义了项目的整个工作范围,每下降一层代表对项目工作的更详细定义。WBS总是处于计划过程的中心,也是制定进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基础。