软件生命周期由软件定义、软件开发和运行维三个时期组成,每个时期又进一步划分成若干个阶段。总体为问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试和软件维护,这八个阶段。在软件开发开始之前,需要对软件开发周期进行预估,这是一个综合分析的过程,其中的工作包括了很多细节问题需要处理,任何一个环节没有做到位,周期预估时间与实际时间就会产生较大差异。对于开发周期总是超出预估时间,我认为有以下原因:
1、开发人员的经验不足,经历过的软件开发项目次数少,对软件开发过程的各种细节,时间分配等认识不够。
2、开发人员的估算过于乐观,估算不全面,只考虑到编码的时间,忽略了每个程序员的编码效率,还有需求分析、开会讨论、验证、工作中的突发事件等等。在各个阶段,应该预留一些处理突发事件的机动时间,提高开发过程中的容错率。
3、没有弹性配置开发各个阶段的计划时间。如需求分析必须在两周内完成,时间不够加班完成,但时间充足还有剩余时间,应该提前进入下一阶段,而不是提前完成了任务就可以去干别的事情。应将多余的时间分配给后面的项目。
4、开发人员的数量没有规定好。开发人员并不是人多,开发效率就会高,恰恰相反,人数越多,效率越低;
5、没有灵活的调整开发周期。软件项目常常会出现各种各样的变更,最好的办法只能是面对变化,在每次变化后对项目进行重新估算并进行相应的工作调整