软件开发系列(1)—为什么要推到重来
来源:互联网 发布:sql面试 编辑:程序博客网 时间:2024/06/05 06:40
推到重来的重要原因
软件公司开发软件产品的时候,经常出现一种情况:软件被推倒重来。
新开发的一款软件,刚刚被开发完成,就被宣布死亡,然后重新开发了一款类似的软件。或者现有的一款软件,已经有非常丰富的功能,被广泛使用。但是在做新的一个版本的时候,还是被推倒重来。
推倒重来这是软件开发过程中,一再出现一种现象,在我们提出具体方案之前,应该全面分析一下产生这种行为的原因。下面是我分析的四大原因:
- 没有什么原因,只为工作。
- 现有技术落后,需要升级换代。
- 问题量级或者方向发生改变,原有设计不能支撑。
- 现有软件太庞大,不能继续升级。
没有什么原因,只为工作
第一种原因:没有什么原因,就是闲着没事找活做。这种原因看起来很可笑,但是却是一部分不了解其他原因的人给出的唯一理由。当然不能排除上面情况,但是软件开发中,据我所知还是比较少的。
举一个例子说明一下:
我身边发生真实情况:北京的XX最近在大规模的修路,将刚刚修改的路刨掉,然后铺设水泥管子,掩埋高压电线。重新规划过街的地下通道。
这种情况下,就有一种舆论,XX政府没事找事,为了政绩从而在拆路和修路。
实际情况是,原来公路建设是没有规划的,没有为后期升级做准备。在北京遭受大雨之后,全北京重新做了规划,因此才发生这种拆路和修路的行为。
现有技术落后,需要升级换代
第二种原因:迫于市场其他竞争对手的产品,现有的产品技术已经老旧,必须立即升级。
随着计算机技术的不断进步,CPU,内存,硬盘等硬件跟随者摩尔定律,18个月性能就提升一倍。相应的软件技术也在不断的进步。最开始,使用汇编语言编写程序以追求性能,到现在使用面向对象语言(例如Java,C#),追求更好开发效率和可扩展性。从原来的的C/S结构程序升级到了现在B/S结构,在到未来的Mobile/S结构和云计算等结构。
技术落后,就要挨打。激烈的市场竞争,会让软件厂商,不断提高自己人员能力,技术储备。不断增强自己产品技术水平,将具有强竞争力的产品推向市场。
第二种原因:迫于市场其他竞争对手的产品,现有的产品技术已经老旧,必须立即升级。
随着计算机技术的不断进步,CPU,内存,硬盘等硬件跟随者摩尔定律,18个月性能就提升一倍。相应的软件技术也在不断的进步。最开始,使用汇编语言编写程序以追求性能,到现在使用面向对象语言(例如Java,C#),追求更好开发效率和可扩展性。从原来的的C/S结构程序升级到了现在B/S结构,在到未来的Mobile/S结构和云计算等结构。
技术落后,就要挨打。激烈的市场竞争,会让软件厂商,不断提高自己人员能力,技术储备。不断增强自己产品技术水平,将具有强竞争力的产品推向市场。
问题量级或者方向发生改变,原有设计不能支撑
第三种原因:用户的数量发生质变,原有的开发设计满足不了这么大用户量,必须重新设计。软件的定位发生改变了,原来面向专业用户的产品,推广到面向一般用户,软件也需要相应的需要进行调整和重新设计。一个软件原型,在升级为产品的过程中,也需要重新设计和实现等。
第三种原因是软件开发推倒重来最主要原因,接下来具体解释一下原因。
- 软件产品开发是有阶段性的,不同阶段软件来满足部分用户需求,从而降低软件开发成本与风险。例如,10W级别用户软件架构和1000W级别用户软件架构是完全不同的。
- 软件的定位发生了改变,原来DOS环境下的文本办公软件,定位于专业文职人员。操作使用都需要培训。现阶段,微软的Office软件面向是大众消费者,易用性不断得到提升。
- 软件开发用于验证用户需求的原型,都不能直接作为软件产品的基础,在其上面进行开发。因为它仅仅是验证方向性的产物,不具备可扩展性和可维护性。
举例说明:
美国著名的校园网站LiveJournal,经历过如下的快速增长:
- 2004年4月份:280万注册用户。
- 2005年4月份:680万注册用户。
- 2005年8月份:790万注册用户。
- 达到了每秒钟上千次的页面请求及处理。
- 使用了大量MySQL服务器。
- 使用了大量通用组件。
网站整体架构也在发生变化。
从一台计算机,到2台计算机,到4台计算机,到更多的服务器。相应为应付大量请求,网站的代码也被大量重写。
现有软件太庞大,不能继续升级
第四种原因:拥有强大功能的软件产品,不能再现有基础上继续升级了。
导致第四种原因出现的因素是多方面的,主要有四种因素:功能太多、代码混乱、设计文档缺失、关键人员流动。
- 功能太多:软件功能越多,越不好维护。对软件可进行升级的余地越小。
- 代码混乱:软件产品开发过程,是阶段性过程。通常是有多个团队,在不同时间段完成的。如果维护的团队,没有按照统一的方式实现编写代码,将会造成灾难性的的后果。其他人无法读懂这些代码,从而无法维护,导致不能进行升级。
- 设计文档的缺失:当软件庞大到了一定程度,功能复杂,代码行数超过了100W行之后。没有清晰的设计文档,软件代码将很难被读懂,也不知道为什么这样设计和修改。
- 关键人员流动:软件开发是连续的。关键人员流失会让没有很好管理软件项目进入死亡陷阱。人员流动也会降低软件代码的质量,从而降低了升级可能性。
第四种原因主要是因为软件开发过程没有按照规范流程操作,从而导致了必须推倒重来的后果。
- 软件开发系列(1)—为什么要推到重来
- 软件开发为什么失败?
- 现象系列(四)——软件开发
- Java系列软件开发之我见(1未完待续)
- 软件开发过程大观——软件开发过程改进为什么能帮助软件质量提升?
- 为什么需要软件开发报告
- 为什么需要软件开发文档
- 软件开发为什么很难
- 软件开发为什么很难
- 软件开发为什么很难
- 软件开发为什么很难
- 软件是什么?为什么学习软件开发?
- 管理类软件开发为什么不给程序员开高薪?为什么?为什么?为什么?为什么?为什么?
- 管理类软件开发为什么不给程序员开高薪?为什么?为什么?为什么?为什么?为什么?
- 敏捷软件开发系列--开篇
- 软件开发模型系列:概述
- 软件工程系列- 软件开发模型
- 层?为什么软件开发要分层
- 工作中常用到的JS表单验证代码(包括例子)
- 实时传输协议介绍:RTP协议介绍、RTCP协议介绍、RTSP协议介绍(zz)
- 电子商务的理想设计模式-CMP
- 量子计算机材料收集
- delete顺序
- 软件开发系列(1)—为什么要推到重来
- ruby的单例方法
- c++数据类型
- VMware vSphere服务器虚拟化实验七 创建和管理虚拟机
- ruby中的访问权限
- 问:怎么回收drop掉一个表的空间
- 12-动画光标(鼠标样式)
- 建立4C标准的电子商务网站
- Linux系统的shell是什么