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

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

然而,在这个令人振奋的软件工业时代,处于时代中心的各大软件企业却令人沮丧。软件规模越来越庞大,软件结构越来越复杂的同时,伴随的却是软件质量越来越低下,软件维护变得越来越困难,以至于每个小小的变更都变得需要伤筋动骨。研发人员为此举足无措,测试人员成为唯一的救星,每个小小的变更都需要付出巨大代价进行测试。软件企业在这样一种恶性循环中苦苦支撑。毫无疑问,这也成为这个令人振奋的时代的一景。
过去,一套软件的生命周期不过2~3年时间,随着软件需求的变化,我们总是选择将软件推倒了重新开发,但是现在这样的情况在发生着改变。随着软件规模的扩大,软件数据的积累,软件影响力的提升,我们,以及我们的客户,都真切感受到,要推倒一套软件重新开发,将变得越来越困难而不切实际。这样的结果就是,我们的软件将不停地修改、维护、再修改、再维护……直到永远。这是一件多么痛苦的事情啊!

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

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

相信这就是软件工业时代的所有企业都不得不面对的尴尬境地。难倒真的是我们最初的设计错了吗?是的,我们都这样质问过我们自己,因此我们开始尝试在软件设计之初投入更多的精力。我们开始投入更多的时间作需求调研,考虑更多可能的需求变化,做更多的接口,实现更加灵活但复杂的设计。然后呢,我们解决了我们的问题了吗?显然是没有。需求并没有像我们想象的那样发生变更:我们之前认为可能发生的变更并没有发生,使我们为之做出的设计变成了摆设;我们之前没有考虑到的变更发生了,让我们猝不及防,软件质量开始下降,我们被打回了原形。难倒真的是无药可解了吗?在我看来,如果我们没有看明白软件开发的规律与特点,那么我们永远找不到那份向往已久的解药。现在是时候了,让我们真正静下心来分析分析软件开发的规律与特点吧。(续)
...全文
3700 53 打赏 收藏 转发到动态 举报
写回复
用AI写文章
53 条回复
切换为时间正序
请发表友善的回复…
发表回复
我喜欢吃包子 2014-03-05
  • 打赏
  • 举报
回复
顶楼主,深有同感啊!
华尔街漫步 2013-12-17
  • 打赏
  • 举报
回复
期待后文,意犹未尽
网络科技 2013-12-17
  • 打赏
  • 举报
回复
这个应该是无解吧,开发人员变动、客户需求变动,甚至开发工具、API的升级,都会造成软件改来改去的,除非你做出一套非常完美,通用性也非常完美的系统出来,提前预计到了用户的各种需求,然后只要通过图形化界面,修改相应的配置,就适合客户的需求。(但这可想这知,这样的完美系统是不存在的,也不允许了,因为,除了开发时间有限,另外就是程序员的水平有限吧)
Alberl Lee 2013-12-17
  • 打赏
  • 举报
回复
同感,努力coding~
KING1111111111 2013-12-16
  • 打赏
  • 举报
回复
这个问题太大,很难解决。周围的环境在变,所以需求肯定在变。所以这个问题不能避免,只能适应。
管理员 2013-12-16
  • 打赏
  • 举报
回复
能转载不??注明出处
正义飞 2013-12-15
  • 打赏
  • 举报
回复
期待后续精彩分析
clear_zero 2013-12-15
  • 打赏
  • 举报
回复
这东西不可解,就好像生活充满了无奈和遗憾一样 只能在职的时候尽量把文档做全,尽量放远目光,尽量和相关人士多多沟通;其他就留给时间吧。虽然每次都痛苦得要死,但是每次改进都是进步。 调整心态,接受现实,慢慢改进就好了
hu123i456 2013-12-15
  • 打赏
  • 举报
回复
这说的太好了
薛123 2013-12-14
  • 打赏
  • 举报
回复
zhangfk 2013-12-14
  • 打赏
  • 举报
回复
xusir98 2013-12-13
  • 打赏
  • 举报
回复
岑迅 2013-12-13
  • 打赏
  • 举报
回复
变形金刚都变不成他们要的东西
蛇图腾 2013-12-13
  • 打赏
  • 举报
回复
随着时间的推移,软件经过数年、数十次的变更与维护,情况变得越来越糟。最初的程序员已经不愿再看到自己的代码而选择离去。他的继任者变得更无所是从,由于看不懂程序,代码的每一次修改如同在走钢丝。测试人员变成了唯一的希望,开发人员的每一次修改都意味着测试人员需要把所有程序测试一遍。继任者们开始质问最初的设计者们的程序设计。如果此时恰巧又有什么新技术出现,就会更显得原有系统的破旧与不堪。 ----- 是的,前两年我做代码维护及二次开发,看最初的代码,痛苦死了哦。
guguda2008 2013-12-12
  • 打赏
  • 举报
回复
个人认为主要是因为有几个方面的原因: 企业需求:最开始做软件时是一套需求,用一段时间又是一套需求,看起来差不多,其实很多地方已经是南辕北辙。自己还以为就是小改动,分分秒就做出来了,又对系统没影响。 需求调研:客户说啥就写啥,写的还只有八成像,干完这票就走,后面改的时候和客户对接的人完全搞不懂当时做的这个功能是为了什么。 架构设计:个人看法,中国90%的软件根本没有架构可言,不过就是个架子。不是说做架构的人水平不够,实在是需求做的太水了,什么样的架构都满足不了需求的变更。变形金刚都变不成他们要的东西。 程序开发:程序员换的太水,水平不一,第一版写的时候可能还好,后面换个人一改,注释懒得加,分类懒得做,反正功能改好了嘛~~第三个人过来一看,得了我给你重新写吧。有看程序的功夫新的都写出来了。 系统测试:说实话,多好的测试人员也经不住前面那群人瞎折腾,何况测试人员中新手和混日子的是绝对主力构成。。。。
树影重重 2013-12-12
  • 打赏
  • 举报
回复
HanYiFeng1 2013-12-12
  • 打赏
  • 举报
回复
期待后期分享
边走边瞧 2013-12-11
  • 打赏
  • 举报
回复
引用 34 楼 mooodo 的回复:
你可以看看,我取的昵称都叫“充满诗意的联盟”,就是为了避免产生误会。 刚来CSDN十来天,所以等级比较低,但我随后会发表很多文章的,
呵呵,抱歉了,以为是从ITeye抄过来的。建议下次写的时候,标题写上“原创”,另外给出发表在其他地方的链接。
  • 打赏
  • 举报
回复
你可以看看,我取的昵称都叫“充满诗意的联盟”,就是为了避免产生误会。 刚来CSDN十来天,所以等级比较低,但我随后会发表很多文章的,
边走边瞧 2013-12-11
  • 打赏
  • 举报
回复
引用 29 楼 mooodo 的回复:
我最近好郁闷,我的其他文章在网上到处被人侵权,已经让我郁闷不已,今天居然有人说我自己侵我自己的权,这世道。。。。。
ITeye这篇文章是12月5号发布,和你博客是同一天,但看不出来几点发的。ITeye发帖者和你CSDN的ID是同一人吗?
加载更多回复(33)

23,405

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧