`
fangang
  • 浏览: 881828 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
311c4c32-b171-3767-b974-d26acf661fb2
谈谈用例模型的那些事儿
浏览量:38960
767c50c5-189c-3525-a93f-5884d146ee78
一次迭代式开发的研究
浏览量:68954
03a3e133-6080-3bc8-a960-9d915ed9eabc
我们应当怎样做需求分析
浏览量:410915
753f3c56-c831-3add-ba41-b3b70d6d913f
重构,是这样干的
浏览量:93691
社区版块
存档分类
最新评论

中国软件业真的到了该反思的时候了

阅读更多
中国五千年文化造就了我们诸多的性格,其中之一就是好大喜功,这尤其反映在中国的软件产业。不错,我们确实拥有数量巨大的网民,拥有无与伦比的庞大市场与用户需求,但这并不足以让我们的步入世界领先行列。在巨大的市场优势面前常常让我们有些迷离,有些飘飘然,有些盲目地民族自豪感,喊出诸如“赶英超美”的口号。然而,客观地讲,我们现在却是差距巨大。

也许你觉得我这话有些崇洋媚外,但静下心来仔细分析我们自己设计的软件,我们注重了软件质量了吗?我们在如履薄冰地进行每一次设计了吗?我们的每一个系统都在编写高质量的代码了吗?也许每个项目的第一个版本我们做到了,但随着软件生命周期的延续,与软件需求的不断变更,我们真的越来越难以拍着胸口说,我做到了!这就是当今中国软件之殇:没有高质量的软件设计,哪来高质量的软件系统?

所以,作为中国软件业中的一员,你应该仔细反思了。下面这篇文章,一个真实的故事,也许可以给你许多的感悟:

2012年,我接到一个任务,对公司一个运行了十年之久的软件系统开展课题研究,使其能够由现有的省集中的运营模式,改为全国集中的运营模式。将原有的,每个省一台服务器的运营模式,改为将所有业务都集中于一台服务器进行运营,毫无疑问,这是一个性能问题,通过加入缓存、分布式处理、数据库分区、读写分离等技术,从而解决大并发访问与大数据量处理,问题就解决了。起初,我也是这样认为的,但我真正深入到这个软件系统的程序代码中时却发现,问题不是想象中那么简单。

虽然之前也有所耳闻,但我真正深入到代码中时,还是感到十分的震惊。整个项目中,一个类数百个方法,一个方法数千行代码的地方,比比皆是。当你游走于数百个方法,或者数千行代码中时,即使像我这样工作了十多年的老手,要读懂也是相当困难,更别说那些刚毕业的新同学。此时,我意识到,如果不改变现有的代码结构,这个系统真的无法承载任何的技术改造。

我造访了参与这个系统多年的老员工,那些“元老”们。他们告诉我,这个系统其实在最开初设计上还是很不错的。然而,经历是十年的维护,各种功能需求,加加减减,不断更新,版本升级上百次,问题就变得越来越大。随着人员的流动,一些代码变成了盲区,谁都不明白它的意思,同时谁都不敢去对它有任何修改,除非迫不得已。每个新员工加入,都不敢轻易修改原有任何代码,而是在原有代码的基础上不断添加代码。这样,随着功能的不断变更,新添的代码就想肿瘤一样不断膨胀,最后由数百行代码扩展成数千行代码,由数十个方法扩展成数百个方法,代码质量不断降低。

慢慢地,程序员越来越看不懂代码了,但他们又要完成自己手头的工作,因此开发工作变成了一种冒险。那么公司怎么能保证每次上线的新程序是正确的呢?那就是测试,投入巨大人力与时间的测试。由于程序越来越复杂,每次修改的测试成本都变得巨大。而这时,由于开发人员觉得,测试人员总数能测出问题来,所以自己只负责开发就可以了,所有的验证工作统统交给测试人员。毫无疑问,这个项目已经陷入了一阵难于自拔的恶性循环之中。维持现状已然疲于奔命,何谈任何技术改造?

然而,我认为这不是一个个案,而是一种普遍现象。大家想想,哪个软件公司没有运营数年的遗留系统?哪个系统不是遭遇频繁变更?在这些系统经历了数十次变更以后,谁还敢拍着胸脯说,我们的设计依然很清晰,我们的代码依然很优质,恐怕不能。

“就这样吧,好死不如赖活着!”也许大多数人都会这样想,然而却不包括我。我从业数十年就一直是一个救火队员,去拯救那些无法再运行下去的软件系统。我很少开发新的系统,总是在半途去接手一个老系统。这些系统起初代码都十分凌乱,维护十分困难。但是在我接手之日起,事情开始变得好转。我总是在不断改造它们,优化它们的代码,使它们慢慢变得易于阅读、容易维护、容易变更。慢慢地,我们的维护工作变得越来越轻松,我们开始喝着咖啡,听着音乐,享受编程生活。我采用的方法就叫“重构”。

重构不是高端大气上档次的华丽名词,也不是病入膏肓才拿出来唬人的终极杀招。它不是将原有系统改得面目全非,更不是拿着代码一阵瞎改的鲁莽之举。而是一种科学而稳健的持续改善。经过多年的工作实践,我深深的感到,这种方法是解决中国软件之殇的最有效方法,因为:

1.假如你在维护遗留系统,这个遗留系统本身的设计并不好,代码质量存在问题,那么你可以采用这种方法,持续而稳健地改造,最后将软件的维护纳入到一个良性的循环中来;

2.假如你是一个设计者,你在设计一个新系统,但你的设计能力不足够优秀,不知道怎样适应今后的变更,那么没有关系,思考今天的设计。因为有了重构,我们不用担心日后的变更。这样每个人都可以编写出高质量的程序代码;

3.假如你是一个遗留系统的维护者,你发现原有的程序不能适应新的需求,那么没有关系,通过重构先改造原有系统,以适应新的需求,再添加新的需求。这样做,你会发现你很容易设计出高质量的代码,使得新功能的加入不会降低原系统的质量。

当所有软件企业都做到了这些,那么中国软件的质量就开始提高,中国软件业才真正能够腾飞。为此,我将我多年的经验汇聚到《大话重构》这本书中,期望给大家更多的启迪!大家可以在当当、亚马逊、京东、china-pub等网上书店搜索,也可以在豆瓣、51CTO、IT168文库等网上试读。详见:http://product.dangdang.com/23449367.html

相关文档
遗留系统:IT攻城狮永远的痛
需求变更是罪恶之源吗?
系统重构是个什么玩意儿
我们应当改变我们的设计习惯
小步快跑是这样玩的(上)
小步快跑是这样玩的(下)
代码复用应该这样做(1)
代码复用应该这样做(2)
代码复用应该这样做(3)
做好代码复用不简单
软件可以这样功能扩展
过程扩展与放置钩子

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

相关推荐

    中国软件产业高级管理人员培训班.pptx

    为了满足这一需求,【中国软件产业高级管理人员培训班】应运而生,该项目由纽约州立大学莱文国际关系与商务研究生院主办,致力于为中国软件产业培养未来的领导者。 该项目的举办地点选择在曼哈顿,这里不仅是世界...

    一位中国软件工程师的感言

    4. **对中国软件产业的反思**: - 自卑感源于中国软件工程水平与国际标准的差距,这可能是由于缺乏系统化和标准化的教育、管理和开发实践。 - 民族劣根性的问题被提及,指出了中国工程师的个体主义倾向和频繁的...

    工业软件发展过程中的几点反思.docx

    在中国工业软件的发展历程中,面临着一系列的挑战和反思。工业软件是支撑制造业信息化、智能化转型的关键,但目前我国在此领域的基础薄弱,与国际先进水平的差距显著。 首先,国内工业软件缺乏深厚的技术积累和专业...

    大三工业软件:过去、现状与使命.pdf

    总结来说,工业软件是推动现代工业革命的关键力量,它的发展历程、技术挑战以及在不同应用场景的成功案例,共同构成了一个丰富的知识体系,对于理解和促进我国工业软件产业的进步至关重要。随着技术的不断迭代,我们...

    人件中文版

    这部分内容还涉及了策划人对于中国软件产业发展的反思和展望,他指出了中国软件产业尽管有着雄厚的人才基础和足够的发展机遇,但与印度等国家相比,依然存在较大的差距。策划人提出要深刻反思中国软件产业落后的原因...

    走出软件作坊--走出软件作坊

    总的来说,《走出软件作坊》的主题是对中国软件行业现状的深刻反思,倡导的是从个体英雄主义向团队协作、从无序混乱向有序规范的转变,旨在推动中国软件产业的升级和进步。通过不断学习和实践,我们可以逐步摆脱作坊...

    2019年软件工程师年终总结范文.doc

    7. 中国软件业现状的反思:对中国软件业缺乏核心技术的现状提出关注,呼吁更多人关注并发展核心技术,而不是仅仅停留在口号和概念层面。 8. ISO9000与项目实践:提及ISO9000等标准在具体项目中的应用问题,反映出...

    对Linux的几点反思.pdf

    《对Linux的几点反思》这篇文献主要探讨了Linux操作系统在发展和应用中的若干关键问题,以及如何正确理解和对待这一开源软件。以下是对其中主要观点的详细解析: 首先,作者强调了使用具有自主知识产权的软件的重要...

    2021中国低代码零代码全景产业研究报告.pdf

    2021年中国低代码/零代码(LCDP/NCDP)产业研究报告揭示了这一领域的显著增长。低代码/零代码平台的初衷是为了提升IT生产效率,但随着时间的推移,它们已经开始改变IT的生产关系。自上世纪80年代起,从可视化的程序...

    2021中国低代码 零代码全景产业研究报告.pdf

    2021年中国低代码/零代码开发平台(LCDP/NCDP)产业迎来了快速发展,市场规模超出预期。随着数字化转型的步伐加速,企业和组织对快速构建和部署应用程序的需求日益增强。低代码/零代码平台通过提供图形化界面和拖放...

    2012年齐鲁软件大赛赛题公布.rar

    2012年齐鲁软件大赛是一项旨在推动中国软件产业发展,激励技术创新,培养优秀软件人才的年度竞赛活动。这个赛事在山东省济南市举办,以其广泛的影响力和专业性,吸引了众多高校学生、科研机构以及软件企业的积极参与...

    2022中国“智能制造”领域十大趋势.docx

    疫情促使企业反思和加强产业链建设,通过数字化技术升级产业链上下游交互模式,强化产业链的弹性、协同性和抗风险能力。 第五,云边协同架构崭露头角。面对物联网数据增长,边缘计算开始与云计算结合,提供更快的...

    中国PC市场渠道发展状况分析.doc

    在当今中国经济快速发展、科技进步日新月异的大环境下,个人电脑(PC)市场作为信息产业的重要组成部分,其发展状况备受关注。特别是在渠道方面的竞争与优化,已经成为企业能否在激烈市场竞争中占据一席之地的关键。...

    中国工业软件失落的30年.docx

    然而,随着改革开放的深入,市场化进程对工业软件产业带来了巨大冲击。90年代,虽然国产工业软件企业如雨后春笋般涌现,市场占有率一度达到25%,甚至在某些专项领域高达45%,但它们面临着“叫好不叫座”的尴尬局面。...

    甲子光年:2023中国智能矿山行业研究报告.pdf

    《2023年中国智能矿山行业研究报告》由甲子光年智库研究团队发布,深入探讨了智能矿山领域的关键议题,旨在推动中国采矿业的科技化转型。报告分为四个部分,分别关注行业升级需求、智能矿山建设进程、智能矿山的破局...

    【老会计经验】购买软件可凭增值税专用发票抵扣进项税.doc

    这一规定突显了国家对软件产业发展的鼓励态度,通过税收优惠减轻企业负担,促进软件产业的健康发展。 对于软件产品的税务处理,增值税暂行条例实施细则中并未将无形资产排除在货物范畴之外。软件产品作为无形资产,...

    软件工程实习报告.doc

    金企通公司是一家专注于物流和航运管理软件的高新技术企业,自1997年成立以来,一直致力于推动中国物流业的信息化进程。该公司拥有丰富的行业软件开发经验,并以创新的产品引领市场,其产品已经达到国际先进水平。...

    国泰农机产业园项目推广提案最新版武汉.pptx

    除了硬件设施,国泰农机产业园还注重软件服务的完善,提供包括物业管理、商贸交流、物流流通、信息网络、人力资本和行政代办在内的全方位服务。其目标是打造一个七星级的园区服务体系,以吸引国内外知名品牌入驻,...

Global site tag (gtag.js) - Google Analytics