为什么软件开发周期总是预估的2~3倍?


一、软件开发流程

苦恼的是,为什么这次的软件开发周期又没有准时完成!要想知道为什么我们预先设定软件开发日期没有完成该有的目标,甚至开发时间是理想时间的两到三倍,就要先了解一下软件开发的一般流程是怎么样的。

软件开发的一般流程是:

1.问题的定义及规划


此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。

2.需求分析


在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。

3.软件设计


此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。

4.程序编码


程序编码就是要将软件的设计结果转化为计算机可运行的程序。程序编码要注重编码规范,保证程序可读、易维护。并且注重提高程序的运行效率。

5.软件测试


软件编写完成后要经过严密的测试,软件测试就是要找出程序中还没有被发现的问题,寻找bug,及时纠正。测试可分为单元测试、组装测试、系统测试三个阶段进行,有白盒测试和黑盒测试两种测试方法。

软件开发流程图如下:
请添加图片描述

二、问题产生的原因

1.主要原因


事实上,不可能每个过程如我们预想的一样顺利,进行软件开发的时候会发现出现了方方面面的问题。在我们自主开发的前提下,公司在前期对软件的定位、结构、功能、都比较明确的情况下,一般都会比较顺利的完成软件的开发。事实上,对用户要求没有完整准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因之一。只有用户才真正了解他们自己的需要,但是许多用户在开始时并不能准确具体地叙述他们的需要,软件开发人员需要做大量深入细致的调查研究工作,反复多次地和用户交流信息,才能真正全面、准确、具体地了解用户的要求。对问题和目标的正确认识是解决任何问题的前提和出发点,软件开发同样也不例外。急于求成,仓促上阵,对用户要求没有正确认识就匆忙着手编写程序,这就如同不打好地基就盖高楼一样,最终必然垮台。这样一来,不仅软件开发周期没有缩短,反而软件开发的周期大大拉长,适得其反。事实上,越早开始写程序,完成它所需要用的时间往往越长。

2.次要原因


其次,在软件开发进行时,总会有预期之外的不可控因素出现。人为的失误,软件的反复修改与测试,需求的变更等等因素都会影响项目的进程。
严重的问题是,在软件开发的不同阶段进行修改需要付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;而在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时再引入变动,当然需要付出更高的代价。根据美国一些软件公司的统计资料,在后期引入一个变动比在早期引入相同变动所需付出的代价高2~3个数量级。如果程序编码没有严格按照软件设计需求来,后期要改动的话,软件开发周期也会增加。
下图定性地描绘了在不同时期引入一个变动需要付出的代价的变化趋势:
请添加图片描述

3.其他原因


事实上,能增加软件开发周期的因素不仅仅这些,原因还有很多:
首先就是开发者对软件开发成本和开发进度的估计不准确,实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年的现象并不罕见。其次软件在开发过程中缺乏必要的文资料或者文档资料不合格,导致软件开发人员在软件开发过程中不能得到准确的交流信息。最后,软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。软件产品“供不应求”的现象使人类不能充分利用现代计算机硬件提供的巨大潜力。
如果你还不是很清楚原因,推荐你去看看比较经典的面基路线图(路线图)。该路线能够比较幽默地说明软件开发过程中问题的出现。

总结


以上列举的仅仅是软件开发的一些明显的问题原因,与软件开发和维护有关的问题远远不止这些。
诚然,我们每个人都知道做事情要一切从实际出发,一步一个脚印。然而我们在软件设计时不可能做到全方面考虑,肯定会有部分影响因素有所疏漏,因而得到的无非比预估的多2 ~ 3倍的周期开发软件,这也就是我们软件开发的进度为什么总达不到我们的预期进度的原因!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南风如意

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值