我常常觉得我们非常幸运,我们现在所处的时代是一个令人振奋的时代,我们进入了软件工业时代。在这个时代里,我们进行软件开发已经不再是一个一个的小作坊,我们在进行着集团化的大规模开发。我们开发的软件不再是为某个车间、某个工序设计的辅助工具,它从某个单位走向整个集团,走向整个行业,甚至整个社会,发挥着越来越重要的作为。一套软件所起到的作用与影响有多大,已经远远超越了所有人的想象,成为一个地区、一个社会,乃至整个国家不可或缺的组成部分。慢慢地,人们已经难以想象没有某某软件或系统的生活和工作会是怎样。这就是软件工业时代的重要时代特征。
然而,在这个令人振奋的软件工业时代,处于时代中心的各大软件企业却令人沮丧。软件规模越来越庞大,软件结构越来越复杂的同时,伴随的却是软件质量越来越低下,软件维护变得越来越困难,以至于每个小小的变更都变得需要伤筋动骨。研发人员为此举足无措,测试人员成为唯一的救星,每个小小的变更都需要付出巨大代价进行测试。软件企业在这样一种恶性循环中苦苦支撑。毫无疑问,这也成为这个令人振奋的时代的一景。
过去,一套软件的生命周期不过2~3年时间,随着软件需求的变化,我们总是选择将软件推倒了重新开发,但是现在这样的情况在发生着改变。随着软件规模的扩大,软件数据的积累,软件影响力的提升,我们,以及我们的客户,都真切感受到,要推倒一套软件重新开发,将变得越来越困难而不切实际。这样的结果就是,我们的软件将不停地修改、维护、再修改、再维护……直到永远。这是一件多么痛苦的事情啊!
一套软件,当它第一次被开发出来的时候,一切都十分清晰:清晰的业务需求、清晰的设计思路、清晰的程序代码,经历了几次需求变更与维护,一切就变得了不那么清晰。业务需求文档变得模糊不清,设计思路已经跟不上变更的脚步,程序代码则随着业务逻辑的复杂而臃肿不堪。程序员开始读不懂代码,软件开发工作变得不再是一种乐趣。
随着时间的推移,软件经过数年、数十次的变更与维护,情况变得越来越糟。最初的程序员已经不愿再看到自己的代码而选择离去。他的继任者变得更无所是从,由于看不懂程序,代码的每一次修改如同在走钢丝。测试人员变成了唯一的希望,开发人员的每一次修改都意味着测试人员需要把所有程序测试一遍。继任者们开始质问最初的设计者们的程序设计。如果此时恰巧又有什么新技术出现,就会更显得原有系统的破旧与不堪。
相信这就是软件工业时代的所有企业都不得不面对的尴尬境地。难倒真的是我们最初的设计错了吗?是的,我们都这样质问过我们自己,因此我们开始尝试在软件设计之初投入更多的精力。我们开始投入更多的时间作需求调研,考虑更多可能的需求变化,做更多的接口,实现更加灵活但复杂的设计。然后呢,我们解决了我们的问题了吗?显然是没有。需求并没有像我们想象的那样发生变更:我们之前认为可能发生的变更并没有发生,使我们为之做出的设计变成了摆设;我们之前没有考虑到的变更发生了,让我们猝不及防,软件质量开始下降,我们被打回了原形。难倒真的是无药可解了吗?在我看来,如果我们没有看明白软件开发的规律与特点,那么我们永远找不到那份向往已久的解药。现在是时候了,让我们真正静下心来分析分析软件开发的规律与特点吧。(续)
相关文档
遗留系统:IT攻城狮永远的痛
需求变更是罪恶之源吗?
系统重构是个什么玩意儿
我们应当改变我们的设计习惯
小步快跑是这样玩的(上)
小步快跑是这样玩的(下)
代码复用应该这样做(1)
代码复用应该这样做(2)
代码复用应该这样做(3)
做好代码复用不简单(1)
特别说明:希望网友们在转载本文时,应当注明作者或出处,以示对作者的尊重,谢谢!
分享到:
相关推荐
处理遗留系统
遗留系统SOA迁移解决方案,经受过实战检验的好方案
遗留系统重构与维护,火龙果软件课程讲义,着重介绍软件维护思想
一种Java遗留系统服务化切分和封装方法
技巧1:使用分析器 分析器提供了任何其他工具无法提供的功能,从而能够深入检查你的应用。如果你的应用已经有一年多时间没有被分析过了,那么它肯定会有大块大块的低效代码,潜伏在某个黑暗的角落。...
可视化的遗留系统微服务改造(54页).pdf
GMTC全球移动技术大会ppt 作者:@凉粉小刀 主题: iOS遗留系统上的架构重构
本文来自于servicecomb,本章探讨使用微服务改造遗留系统实践中的一些问题,希望对您能有所帮助。随着RESTful、云计算、DevOps...一直以来,系统架构设计是IT领域经久不衰的话题之一,是每个系统构建过程中极其关键的一
描述了如何用重构的方法对大型遗留系统进行修补 对维护大型系统是一个新的思路
面对遗留系统,选择合适的测试策略,能让自动化测试的投入在一定时期内看到效果,并且建立可持续进行的机制。同为自动化测试,每种测试在面对遗留系统时遇到的挑战是不同的,起到的效果也不尽相同。 背景我目前所...
基于SOA架构的企业遗留系统复用研究
提出了利用中间件技术对历史遗留测试系统进行分布式开发的策略:对计算机配置高的历史遗留测试系统,结合其特点探索出了一种高效率、高性能的基于CORBADCOM的分布式开发方案;针对数控测试系统,则巧妙利用数据库...
本文来自于技术琐话,本章介绍了遗留系统的特点、改造策略和场景,并结合一个实战案例进行了讲解,希望对您的学习有所帮助。在传统企业甚至互联网企业中往往存在大量的遗留系统,这些遗留系统大多都能够正常工作,有...
大型遗留系统架构改造案例分享.pdf
Tuts+的翻译 这个存储库用作临时翻译文件的版本控制,并列出我在那里翻译的所有帖子。 这是我与一起保存的一种翻译作品集,也是我自己的。 代码 ...SOLID 原则第 3 部分 - Liskov 替换...重构遗留代码:第 9 部分 - 分析
这样在保留并继续运行遗留系统的同时,也能满足新兴数字化业务对IT能力的需求,新旧系统各取所长、各司其职。 根据埃森哲的定义,多速IT集合了不同的IT交付方式,既包括快速的数字化应用,也包括传统的遗留系统,...
iOS遗留系统上的架构重构 李剑.pdf
利用SOA集成连锁遗留系统及其案例研究 信息壁垒、典型案例分析、SOA的架构、模型、涉及具体技术
基于SOA架构的企业遗留系统复用研究.pdf
基于Matlab的遗留系统并行化重构方法.pdf