为什么软件开发周期总是预估的2~3倍?
一、软件开发周期包括哪些:
软件的生命周期,亦称软件的生存周期。它是按开发软件的规模和复杂程度,从时间上把软件开发的整个过程(从计划开发开始到软件报废为止的整个历史阶段)进行分解,形成相对独立的几个阶段,每个阶段又分解成几个具体的任务,然后按规定顺序依次完成各阶段的任务并规定一套标准的文档作为各个阶段的开发成果,最后生产出高质量的软件。
1、问题的定义及规划
此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
2、需求分析
在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。“唯一不变的是变化本身。”,同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。
3、软件设计
此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。
4、程序编码
此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
5、软件测试
在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
6、运行维护
软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。
二、延迟时间周长的主要几个原因:
1.计划目的性不够明确强烈,前期代码质量不强导致后期为了赶任务效率低下。
2.开发过程中难免会遇到各种各样的变数,有需求才有开发,而需求可能是一时想起的,临时要求添加,这也就难免不要重新整理代码块,完善其所需功能需求。
3.前期运行测试开发在没有使用者的情况下与有使用者使用前后的差别对比,暴露出来的问题是不一样的,有问题纪要改,就要加以完善,问题也许可能也不是人能预测范围内的,所以相当于又走回到了第二点。
4.架构技术上也要一定的关联,架构过于落后、过于复杂。
先进的技术架构、统一高效地开发标准,是系统建设的基石,会大大提高软件的生产力,让开发人员专注于实现业务、商业逻辑,做更有价值,更高产出的事情。
5.对于后期的测试以及运行维护,更是整个开发周期中耗时长、持续时间也长的的一项,后期根据在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。