我常常觉得我们非常幸运,我们现在所处的时代是一个令人振奋的时代,我们进入了软件工业时代。在这个时代里,我们进行软件开发已经不再是一个一个的小作坊,我们在进行着集团化的大规模开发。我们开发的软件不再是为某个车间、某个工序设计的辅助工具,它从某个单位走向整个集团,走向整个行业,甚至整个社会,发挥着越来越重要的作为。一套软件所起到的作用与影响有多大,已经远远超越了所有人的想象,成为一个地区、一个社会,乃至整个国家不可或缺的组成部分。慢慢地,人们已经难以想象没有某某软件或系统的生活和工作会是怎样。这就是软件工业时代的重要时代特征。

然而,在这个令人振奋的软件工业时代,处于时代中心的各大软件企业却令人沮丧。软件规模越来越庞大,软件结构越来越复杂的同时,伴随的却是软件质量越来越低下,软件维护变得越来越困难,以至于每个小小的变更都变得需要伤筋动骨。研发人员为此举足无措,测试人员成为唯一的救星,每个小小的变更都需要付出巨大代价进行测试。软件企业在这样一种恶性循环中苦苦支撑。毫无疑问,这也成为这个令人振奋的时代的一景。

过去,一套软件的生命周期不过2~3年时间,随着软件需求的变化,我们总是选择将软件推倒了重新开发,但是现在这样的情况在发生着改变。随着软件规模的扩大,软件数据的积累,软件影响力的提升,我们,以及我们的客户,都真切感受到,要推倒一套软件重新开发,将变得越来越困难而不切实际。这样的结果就是,我们的软件将不停地修改、维护、再修改、再维护……直到永远。这是一件多么痛苦的事情啊!

一套软件,当它第一次被开发出来的时候,一切都十分清晰:清晰的业务需求、清晰的设计思路、清晰的程序代码,经历了几次需求变更与维护,一切就变得了不那么清晰。业务需求文档变得模糊不清,设计思路已经跟不上变更的脚步,程序代码则随着业务逻辑的复杂而臃肿不堪。程序员开始读不懂代码,软件开发工作变得不再是一种乐趣。

随着时间的推移,软件经过数年、数十次的变更与维护,情况变得越来越糟。最初的程序员已经不愿再看到自己的代码而选择离去。他的继任者变得更无所是从,由于看不懂程序,代码的每一次修改如同在走钢丝。测试人员变成了唯一的希望,开发人员的每一次修改都意味着测试人员需要把所有程序测试一遍。继任者们开始质问最初的设计者们的程序设计。如果此时恰巧又有什么新技术出现,就会更显得原有系统的破旧与不堪。

相信这就是软件工业时代的所有企业都不得不面对的尴尬境地。难倒真的是我们最初的设计错了吗?是的,我们都这样质问过我们自己,因此我们开始尝试在软件设计之初投入更多的精力。我们开始投入更多的时间作需求调研,考虑更多可能的需求变化,做更多的接口,实现更加灵活但复杂的设计。然后呢,我们解决了我们的问题了吗?显然是没有。需求并没有像我们想象的那样发生变更:我们之前认为可能发生的变更并没有发生,使我们为之做出的设计变成了摆设;我们之前没有考虑到的变更发生了,让我们猝不及防,软件质量开始下降,我们被打回了原形。难倒真的是无药可解了吗?在我看来,如果我们没有看明白软件开发的规律与特点,那么我们永远找不到那份向往已久的解药。现在是时候了,让我们真正静下心来分析分析软件开发的规律与特点吧。(续)

相关文章:

遗留系统:IT攻城狮永远的痛

需求变更是罪恶之源吗?

系统重构是个什么玩意儿

我们应当改变我们的设计习惯

小步快跑是这样玩的(上)

小步快跑是这样玩的(下)

代码复用应该这样做(1)

代码复用应该这样做(2)

代码复用应该这样做(3)

做好代码复用不简单

特别说明:希望网友们在转载本文时,应当注明作者或出处,以示对作者的尊重,谢谢!

遗留系统:IT攻城狮永远的痛相关推荐

  1. 欢迎关注公众号:Android系统攻城狮 原创持续更新中!!!

    公众号:Android系统攻城狮 简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案.音视频.编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列[原创干 ...

  2. JAVA 攻城狮 第三十三天

    今天是第三十三天 学了差不多有一个月的JAVA了 其实在大一上学期的时候多多少少就开始学java了 只是没有现在这样系统的学 然后我觉得JAVA学习我会暂时的放一放 我觉得学过的知识要利用起来会用才是 ...

  3. 微信小游戏的前端攻城狮玩法

    转自自己在开源中国上的博客:https://my.oschina.net/u/7247... 前言 公司群里经常有人会发一些微信小游戏,每次下面都会跟好多晒分截图.比如这个<看你有多色>的 ...

  4. 挨踢部落故事汇(6):女攻城狮职位晋升记

    热爱生活,更热爱代码.每天都是一个新的开始!相信自己肯定行. 难以想象一个跳入IT坑已经十余年的女攻城狮是如何潜心修炼的,然而文英就是一个活生生的例子,江湖人生代码神手的她,在工作上任劳任怨,不求回报 ...

  5. 【挨踢人物传】tao61:做一个许三多式的IT攻城狮(第2期)

          告诉你一个群体,一个在光怪陆离的IT圈混迹的群体.他们自称程序猿(媛).攻城狮.挨踢民工,一面乐观的自嘲,一面努力的工作.提起他们,你也许想到了张江男,想到了眼镜.T恤.牛仔裤.运动鞋.双 ...

  6. 活动报名 | 前端攻城狮该怎样跳脱“围城”的焦虑

    活动报名 | 前端攻城狮该怎样跳脱"围城"的焦虑 原创: 京小云 京东云开发者社区  4天前 作为WEB2.0的产物,前端工程师这一相对较新的职业俨然变成了一颗?一样的存在--丰富 ...

  7. 女儿提前晒 iPhone X,攻城狮老爸被苹果解雇;Linux Kernel 4.14-rc7 发布

    (点击上方蓝字,快速关注我们) 参考:开源中国.solidot.cnBeta.腾讯科技等 0.女儿提前晒 iPhone X,攻城狮老爸被苹果解雇 防火防盗防女儿,美国女孩 Brooke Amelia ...

  8. 攻城狮的苦逼选车经历

    2019独角兽企业重金招聘Python工程师标准>>> 攻城狮的苦逼选车经历 转载请注明出处:http://netkiller.github.io/ 我因为玩摄影的关系接触到气车,之 ...

  9. 15个前端攻城狮必备的学习网站 | 你知道几个?(附视频介绍)

    前端开发所需掌握知识点概要 HTML&CSS: 对Web标准的理解(结构.表现.行为).浏览器内核.渲染原理.依赖管理.兼容性.CSS语法.层次关系,常用属性.布局.选择器.权重.盒模型.Ha ...

最新文章

  1. [20160513]Restrict Session与静态监听.txt
  2. editplus 批量删除 重复行
  3. 如何根据sessionID获取session解决方案
  4. linux上安装samba
  5. pycharm 常用设置
  6. 4 拼接_3个孩子,64㎡小户型内“镶嵌”4室一厅,餐桌还能随意拼接
  7. 显示器提示超频的解决办法
  8. [学习报告]《LeetCode零基础指南》第三讲循环-gyro
  9. 考研政治---马克思主义基本原理概论---认识论
  10. Java 快速排序,递归排序算法
  11. 绿城离职员工万言书全文,不看你后悔!当今很少有此类文言文!
  12. 影像组学工作站 | 医学影像组学高分SCI教你躺平,零基础,零代码完整复现!
  13. 洛谷入门篇的相关题解
  14. matlab 数理统计,概率论和数理统计(matlab应用)1
  15. 带搜索框的百度地图html
  16. python地铁查询系统_基于Python的苏州实时公交/地铁接口调用代码实例
  17. 计算二叉树的深度和叶子结点数(递归算法实现)
  18. 大咖面对面 | 喵奏@国家建筑师:用方块构成元宇宙共识
  19. 关于程序化交易系统的详细定义
  20. 基于微信在线教育视频学习小程序毕业设计毕设作品(6)开题答辩PPT

热门文章

  1. 【成电860考研】经验贴汇总(公共课+专业课+复试)-扒遍所有网站:信软群、王道、知乎、csdn等,截止21年7月整理出的所有帖子-共15篇
  2. 一起挑战pythontip的题目(13)
  3. java 163 授权码_JavaMail使用163,sina邮箱,发送失败
  4. LoadRunner 自动登录163邮箱
  5. 在centos7中使用telnet
  6. 基于BP神经网络算法的实现静态图片和视频人脸识别、性别识别
  7. 解决idea上传文件到svn频繁报错 “Error:Node remians in conflict”、“remains in conflict”
  8. zookeeper原理:分布式协同技术
  9. JavaScript百炼成仙 1.20 函数七重关之二 (作用域)
  10. 支付宝客户端架构解析:iOS 容器化框架初探