文章目录

  • 一、软件开发流程
    • 1.问题的定义及规划
    • 2.需求分析
    • 3.软件设计
    • 4.程序编码
    • 5.软件测试
  • 二、问题产生的原因
    • 1.主要原因
    • 2.次要原因
    • 3.其他原因
  • 总结

一、软件开发流程

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

软件开发的一般流程是:

1.问题的定义及规划


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

2.需求分析


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

3.软件设计


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

4.程序编码


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

5.软件测试


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

软件开发流程图如下:

二、问题产生的原因

1.主要原因


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

2.次要原因


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

3.其他原因


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

总结


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

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

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

    为什么软件开发周期是预估的2~3倍? 我认为计划永远赶不上变化,因为软件开发周期比较长,而开发之前所预估的周期并非如此,是基于现有的理论和数据进行需求分析进而得出,但实际情况下并非如此.如今IT行业发 ...

  2. Quora精选:为什么软件开发周期总是预估的2~3倍?

    Quora精选:为什么软件开发周期总是预估的2~3倍? 现实中很多人的计划都偏过于理想化,而忽略很多计划之外的事情.我们生活的这个世界千变万化,任何事物都在不停地变化着.所谓计划,就是要版达到某种目的 ...

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

    来,让我们从旧金山出发,沿着西海岸徒步旅行,到洛杉矶的纽波特沙滩面基吧!<( ̄︶ ̄)/ 看看地图,然后计划一下路线! 路线全图 嗯嗯,这趟红色之旅长约400英里(643.7公里):汉子们一天睡8 ...

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

    题目 1.Quora精选:为什么软件开发周期总是预估的2-3倍? Answer 首先软件开发周期预估就是根据软件的开发内容.开发工具.开发人员等因素对需求调研.程序设计.编码.测试等整个开发过程所花费 ...

  5. 为什么软件开发周期总是预估的2-3倍

    为什么软件开发周期总是预估的2-3倍 Quora上有人提问:为什么软件开发的周期总是预估的2~3倍? 补充:这是开发者的错?还是管理的问题?技术粗糙,或者其他原因?或者这只是程序猿世界的自然法则? 回 ...

  6. 以软件开发周期来说明不同的测试的使用情况

    1.需求阶段 需求测试--软件测试时由代码完成后开始的,事实上应从软件的需求定义开始. 需求测试贯穿整个软件开发周期,通过需求测试可指导软件测试的各个阶段,它可以帮助我们在设计整个测试的进行,测试计划 ...

  7. SQL 初始篇 软件开发周期 与数据库设计步骤

    经过几次面试 感觉 学习typescript 和python 的计划想给延后  因为想快速更换工作环境 首先 需要把CS方向做好 才能慢慢进入BS方向  学完nodejs 就算面试的时候你会 当时工作 ...

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

    Quora上有人提问:为什么软件开发的周期总是预估的2~3倍? 作者:Micheal Wolfe 来源:煎蛋网 原文:https://goo.gl/mfaU3l 译文:http://jandan.ne ...

  9. 使用 Dapr 缩短软件开发周期,提高生产效率

    Microsoft DevOps 文档里的文章(https://docs.microsoft.com/zh-cn/azure/devops/report/dashboards/cycle-time-a ...

最新文章

  1. vsftpd 的工作模式
  2. 2018总结及2019计划
  3. 45 jump game II(贪心)
  4. 嵌入式软件设计第09实验报告
  5. 2021数学建模C题思路数据挖掘
  6. Sharepoin学习笔记—架构系列—06 Sharepoint服务(Services)与服务应用程序框架(Service Application Framework) 1
  7. cookie 和 token 都存放在 header 中,为什么不会劫持 token?____token和cookie的区别
  8. TensorFlow工作笔记001---Centos7.3下安装TensorFlow最新版本,基于python2.7.5的,没有编译TensorFlow的源码
  9. java httpurlconnection 设置编码_java – 通过HttpURLConnection发送UTF-8字符失败
  10. 技术人员如何创业(4)---打造超强执行力团队
  11. android+表情符号乱码,Android Emoji表情截取不完整,乱码
  12. 如何执行冲刺sprint
  13. 【分析】云硬盘的Burst功能
  14. mongodb——mongo笔记*
  15. 请不要嘲笑有梦想的罗永浩
  16. 射影几何----极点极线割线共点四点调和定理
  17. C# 导出Excel解决Cannot get a text value from a numeric cell或者Cannot get a numeric value from a text cell
  18. 保持激昂斗志的18种有效方法
  19. Kubernetes系列教程(三)---纯三层网络方案
  20. 几种典型的立体匹配算法

热门文章

  1. 如何建立广泛、牢固的人脉?
  2. 《转》openstack中删除虚拟主机,状态一直deleting
  3. 理解Sortino索提诺比率及Python实现
  4. ZBrush自带笔刷的特性你都知道哪些?
  5. 51单片机(STC)串口无阻塞发送函数
  6. canvas绘制笑脸
  7. LinkList L与LinkList *L Lnode与*LinkList的区别
  8. Domain Adaption
  9. 如何设计游戏中的道具功能(三)
  10. larkplayer视频播放器: 同时支持PC、移动端 插件化的HTML5视频播放器。