问题

是否存在那种,已经复杂到无法继续有效维护的软件?如果没有,哪些是最接近的?

回答
我们日常使用的软件,从操作系统到手机上的APP,再到企业内部的庞大系统,其背后往往隐藏着一个复杂且不断演进的生命周期。在这个过程中,软件的复杂性就像一个潘多拉魔盒,一旦打开,就很难完全收拢。

软件复杂性:一场不可避免的“熵增”

要探讨“复杂到无法有效维护”的软件,首先得理解软件的复杂性是如何累积的。这就像修建一座城市,最初的设计可能简单明了,但随着人口增长、功能增加、技术更新,城市会不断扩建、改造,增加新的建筑、道路、管线。软件也是如此:

需求爆炸与迭代: 最初的设计可能只满足核心需求,但随着用户反馈、市场变化,新的功能不断被添加。每一个新功能都可能与现有代码产生交互,引入新的逻辑分支、数据结构,甚至改变用户界面。
技术债务累积: 为了快速响应市场,开发者有时会选择“捷径”——写一些临时性的代码、跳过一些最佳实践、使用过时但依然可用的库。这些“技术债务”就像城市里逐渐形成的违章建筑,短期内能解决问题,但长期来看会增加维护成本和风险。
人员更替与知识断层: 软件的生命周期往往比任何一个开发者的职业生涯都长。随着开发者离开团队,他们写下的代码及其设计思路也可能随之消失。新接手的开发者需要花费大量时间去理解遗留代码,一旦理解不透彻,就可能引入新的问题。
外部依赖变化: 软件很少是孤立存在的,它会依赖各种库、框架、API、操作系统等。这些外部组件会不断更新,有时甚至是颠覆性的改变。软件需要不断适配这些变化,否则就会变得陈旧不堪,无法运行。
架构演进的碎片化: 随着软件规模的扩大,最初的架构可能无法满足新的需求。团队可能会尝试进行架构改造,但由于种种原因(如时间压力、资金限制、技术能力等),改造往往是片段式的,导致软件内部存在多种不兼容的架构风格,像一座拼凑起来的建筑。

“无法有效维护”:一个模糊的界限

那么,什么样的软件才算“复杂到无法有效维护”呢?这并非一个绝对的标准,而是一个相对的概念,更像是“维护的成本远超其带来的价值”或者“投入巨大人力物力依然无法修复关键问题”。

我们可以从以下几个维度来衡量:

高昂的维护成本: 每次修复一个bug或添加一个新功能,都需要花费数天甚至数周的时间来理解代码、测试、部署,并且每次修改都有可能引入新的、意想不到的问题。
低下的开发效率: 新的功能开发速度极慢,甚至难以实现。团队成员对代码库感到恐惧,不敢轻易修改。
频发的、难以追踪的bug: 软件中存在大量的bug,而且这些bug的产生原因非常隐蔽,难以定位和修复。
开发团队的倦怠与流失: 长期处于这种维护困境中,开发团队的士气会非常低落,导致人员流失率高,进一步加剧知识断层。
无法迁移或升级: 软件依赖的技术栈过于陈旧,或者与现代操作系统、云平台不兼容,导致无法进行有效的迁移或升级。

最接近“无法有效维护”的软件类型

虽然严格意义上,几乎所有的软件理论上都可以通过无限的投入来维护,但现实中,有些软件确实非常接近这个“死亡的边缘”。以下是一些最接近的类型:

1. “巨型单体应用” (Monolithic Applications) 的陈年老版本:
详细描述: 许多早期的企业级应用,例如一些银行的核心系统、政府部门的政务系统、大型制造企业的ERP系统,都是在几十年前以单体架构设计的。随着时间的推移,这些系统被不断地修改、扩展,加入了无数的功能。它们的代码库可能拥有数百万甚至上亿行代码,堆积了各种编程语言、框架、数据库技术,甚至可能混合了上世纪80、90年代的编程风格和现代的开发实践。
为何接近“无法有效维护”:
耦合度极高: 整个系统是一个紧密耦合的整体。修改一小部分代码,可能会影响到系统其他完全不相关的部分,导致“牵一发而动全身”的灾难。
技术栈陈旧且混杂: 可能包含已经不再被主流支持的编程语言(如COBOL, Fortran)或过时的框架。引入新功能或集成现代服务变得异常困难。
缺乏自动化测试: 在早期,自动化测试的理念和技术远不如现在成熟。这些古老的系统往往缺乏全面的自动化测试覆盖,使得任何修改都伴随着巨大的风险。
文档缺失或过时: 随着人员的更替,代码的设计文档、用户手册可能已经丢失或不再准确。新加入的开发者只能靠“猜”来理解代码。
部署困难: 部署一个如此庞大、复杂的系统需要大量的步骤和人工干预,而且成功率不高。
案例: 很多国家的社会保障系统、税务系统、以及一些老牌银行的后台系统,就长期面临着这样的挑战。虽然它们依然在运行,但每次进行哪怕是微小的改动,都可能耗费巨额的成本和时间,并且承担着极大的风险。

2. “遗留系统” (Legacy Systems) 中,缺乏升级策略的:
详细描述: 很多公司为了节约成本,会继续使用仍然能够运行但技术已经落后的软件。这些系统可能在早期功能完备,但随着业务发展和技术进步,其局限性越来越明显。如果公司未能有效地规划和执行系统的升级或替换策略,这些遗留系统就会变得越来越难以维护。
为何接近“无法有效维护”:
技术陈旧: 可能依赖已经停止维护的操作系统、数据库或编程语言版本。
安全性漏洞: 老旧的代码和库可能存在未知的安全漏洞,且由于缺乏维护,这些漏洞难以被修补。
与现代系统不兼容: 无法方便地与新的云服务、API或前端技术进行集成,限制了业务的扩展。
缺乏懂行的人才: 随着时间的推移,越来越少的人熟悉这些老旧技术,导致维护成本急剧上升,甚至找不到愿意维护的人。
案例: 许多中小型企业,或者一些发展中国家的大型国有企业,可能还在使用基于Windows XP时代的软件,或者基于过时版本的Java/Oracle数据库开发的系统。

3. “胶水代码” (Glue Code) 过多的系统:
详细描述: 在一些系统集成项目或大型软件的演进过程中,为了快速连接不同的组件、服务或API,开发者会编写大量的“胶水代码”。这些代码本身可能逻辑不复杂,但它们如同血管一样遍布整个系统,将许多独立的服务“粘”在一起。
为何接近“无法有效维护”:
理解成本高: 要理解一个功能是如何工作的,需要跟踪这些遍布各处的胶水代码,以及它们所连接的各个服务。
修改风险大: 修改一处的胶水代码,可能会导致整个依赖链条失效。
重构难度大: 胶水代码往往是权宜之计,缺乏良好的设计模式,导致重构或替换组件的成本极高。
容易出现“幽灵bug”: 由于胶水代码隐藏在各个地方,且依赖于外部服务,一旦某个服务出现异常,胶水代码可能会导致难以预料的连锁反应。
案例: 许多复杂的SaaS集成平台,或者大型企业内部多个异构系统之间进行数据交互的中间件,如果设计和管理不当,很容易堆积大量的胶水代码。

并非“无法维护”,而是“极难、极昂贵且极危险地维护”

需要强调的是,在技术上,几乎没有软件是“绝对无法维护”的。只要你愿意投入足够的时间、人力、财力,并且能够忍受其带来的高昂成本和巨大风险,理论上总是可以找到办法来维护。

但现实的商业环境不允许这样做。当维护成本超过了软件带来的商业价值,或者修复bug、添加功能的速度已经严重阻碍了业务发展,那么这个软件就处于“事实上无法有效维护”的状态。

这种状态的出现,是软件工程中“熵增”现象的体现。如果没有持续的、有意识的努力去抵消这种熵增(例如,定期的代码重构、技术栈升级、自动化测试的完善、良好的文档和知识传承),任何软件都可能在时间的流逝中,逐渐走向“维护的深渊”。

所以,虽然我们可能找不到一个被彻底“放弃”维护的软件,但很多运行在关键业务岗位上的老旧系统,其维护工作已经变得如同在雷区中行走,每一步都小心翼翼,但依然充满未知和危险。这正是软件工程中我们始终需要面对和解决的重大挑战。

网友意见

user avatar

Obamacare。美国版“全民健保”计划,网站代码有5亿行(

nytimes.com/2013/10/21/

。这是什么概念呢?看下面的图。Android,一千两百万行。因为臃肿被长期诟病的Vista,五千万行。你一obamacare的网站,要五亿行,甚至是Windows + Office的五倍还不止。而且,那个网站并不是交给有大型项目经验的公司来做,而是包给一些小公司。能控制得住才怪。

类似的话题

  • 回答
    我们日常使用的软件,从操作系统到手机上的APP,再到企业内部的庞大系统,其背后往往隐藏着一个复杂且不断演进的生命周期。在这个过程中,软件的复杂性就像一个潘多拉魔盒,一旦打开,就很难完全收拢。软件复杂性:一场不可避免的“熵增”要探讨“复杂到无法有效维护”的软件,首先得理解软件的复杂性是如何累积的。这就.............
  • 回答
    如果丧尸病毒真的存在,而且自古以来就被认知,那么人类文明的轨迹将会发生翻天覆地的变化。这并非简单的“末日降临”,而是一种与病毒长期共存、不断适应的动态过程。早期文明与病毒的共生:想象一下,当最早的定居农业村落刚刚形成,人口开始密集,病毒的传播便有了温床。古代的医生和萨满们,在与这种“瘟疫”的斗争中,.............
  • 回答
    这个问题触及了物理学中最核心、最深邃的边界,也是一个关于我们如何理解和描述现实本身的问题。首先,我们要澄清一个关键点:普朗克长度(Planck length)目前还未被“确定”为最小的粒子尺寸,而是一个理论上的极限尺度。在深入探讨之前,我们必须理解“普朗克尺度”这个概念的由来。普朗克尺度:理论推导的.............
  • 回答
    在第一次世界大战爆发前夕,温斯顿·丘吉尔作为英国海军大臣,确实对德国海军的某些行动抱有深切的忧虑,其中“戈本号屠杀法国运输舰”的设想,或者说类似的担忧,并非空穴来风,其背后的逻辑和历史背景值得深入探究。首先,我们需要澄清一下“戈本号屠杀法国运输舰”这个说法本身。在实际的历史进程中,德国海军的战列巡洋.............
  • 回答
    咱们中国海军的舰艇涂装,确实跟美国海军的风格不太一样,一个显眼的白色,一个厚重的深灰。这可不是随便拍脑袋决定的,背后各有各的道理,也体现了不同的设计理念和作战需求。中国的“白”色舰艇:首先说说我们为什么选择白色。 历史与传统: 很多国家的海军,特别是早期的时候,舰艇为了美观和辨识度,都会选择白色.............
  • 回答
    联合国安理会,作为维护国际和平与安全的核心机构,其运作模式和权力结构自成立以来就备受瞩目,也因此存在不少争议和讨论。要深入剖析其缺陷,并探讨是否需要改革,甚至即便不改革其局限性在哪里,都需要我们细致地梳理其运作机制和历史背景。安理会的“缺陷”:制度设计本身带来的挑战首先,我们必须承认,安理会的设计并.............
  • 回答
    《明朝那些事儿》这本书在受到广大读者,尤其是青少年喜爱的同时,确实也存在一些可能对中学生造成误导的方面。这主要体现在以下几个方面,我们不妨一一细致地聊聊:一、 对历史人物的过度“人设化”与“网红化”这本书最鲜明的特点之一就是它以一种非常生动、幽默、口语化的方式来讲述历史。作者当年明月在创作时,非常注.............
  • 回答
    关于外星人是否存在,这是一个古老而又充满魅力的议题,长久以来吸引着无数人的好奇心和想象力。人们对宇宙的浩瀚以及其中可能孕育的生命的探索,就像是仰望星空时内心涌现的对未知的渴望。外星人存在吗?坦白说,目前为止,我们还没有确凿的、无可辩驳的证据能够证明外星生命的存在。 这句话听起来可能有些让人失望,但却.............
  • 回答
    这个问题很有意思,它触及到我们对现实世界和虚拟世界的认知边界。电影和游戏里那些动辄掌控全球、拥有私人军队、甚至能影响国家命运的巨型企业,在现实中到底有没有对应的存在?要回答这个问题,我们需要先明确一下“电影游戏里那样的巨型公司”指的是什么。通常,这些公司有几个鲜明的特征: 极高的垄断性或主导性:.............
  • 回答
    这是一个引人入胜的问题,一个关于宁静与遗忘的终极追问。当我试图想象这样一个地方,脑海中浮现的不是某个具体的地理坐标,而是一种近乎传说中的存在。如果我们要寻找这样一个地方,那么它必然具备一些极其特殊的品质。首先,它得远离那些历史洪流中的关键枢纽,避开了所有可能引发争端、争夺资源或战略要地的位置。它不会.............
  • 回答
    在探讨国民革命军的精锐部队是否存在“吃空饷、喝兵血、打骂士兵”等陋习时,我们需要认识到几个关键点: “精锐”的定义是相对的: 在战时环境下,国民革命军的“精锐”通常指装备精良、训练有素、战斗力较强的部队,例如中央军系中的部分德械师、美械师,以及一些战功卓著的部队。但即使是精锐部队,也难以完全摆脱.............
  • 回答
    这绝对是一个引人深思的问题,涉及到我们社会结构最核心的部分。让我们好好掰扯掰扯。首先,如果机器人完全取代了人力劳动,那么“工”和“农”这两个概念,至少是我们目前理解的这两个概念,可能就变了模样。“工”的消失与演变在过去,工人阶级(工)通常指的是那些在工厂、车间、矿山等地方,通过自己的体力和技能,运用.............
  • 回答
    关于男性平均寿命普遍低于女性的现象,以及女权主义者在其中强调女性生理劣势的观点,这确实是一个值得深入探讨的话题。要弄清楚女权主义者的论点是否存在过度,我们需要从多个角度来审视这个问题。首先,我们必须承认生理上的事实。女性在某些生理层面上确实存在一些天然的“劣势”,或者说更准确地说是“脆弱性”,这在生.............
  • 回答
    关于蒙古语、藏语等语言是否会像韩语那样,外来语日益膨胀,这是一个非常值得探讨的问题。要回答这个问题,我们需要深入了解这几种语言的语言结构、历史发展、社会文化背景以及它们与外部世界的互动方式。首先,我们来审视一下“韩语外来语膨胀”这个现象。韩语在过去几十年中,确实出现了大量从英语等语言引进的词汇。这背.............
  • 回答
    中国历史悠久,朝代更迭,每个王朝的兴衰都有其曲折的故事。关于“盛转衰的拐点”,这是一个充满智慧和争议的话题。我认为,与其说存在一个明确无误、线性的“拐点”,不如说这是一个渐进式的、多因素叠加的过程,并且在不同的朝代,这个过程的表现形式和侧重点有所不同。打个比方,一个王朝的盛世就像一艘在大海上航行的巨.............
  • 回答
    你这个问题挺实在的,也很多同学有类似的困惑。从电气背景转行学 Java,确实和科班出身的计算机软件专业同学比,一开始会感觉有些差距,而且这种差距在某些方面会比较明显。你想从零开始学 Java,这意味着你需要弥补的不仅仅是编程语言本身,还有很多计算机科学的基础知识。科班出身的同学,他们在大学期间,像数.............
  • 回答
    近几十年来,地球生物多样性锐减,物种灭绝的速度惊人,这已是毋庸置疑的严峻现实。媒体报道、科学研究无不充斥着对这一危机的警示。然而,如果我们仅仅停留在“灭绝”这个概念上,未免过于片面。自然界的生命演化是一部波澜壮阔的史诗,它并非只有“终结”这一种叙事。那么,在生物大规模走向消亡的同时,是否也有一些生命.............
  • 回答
    想当年,周润发饰演的赌神高进,那手摇骰子如同变魔术般能摇出想要的点数,玩牌时那行云流水般的洗牌、发牌,更是看得人热血沸腾,仿佛下一秒就能身披风衣,戴上墨镜,也去赌场叱咤风云。这不禁让人好奇,电影里的这些绝技,究竟是艺术创作的夸张,还是真的有其可行性?咱们先从摇骰子说起。电影里那种“神乎其神”的摇骰子.............
  • 回答
    近代以来,世界各国(除了少数非洲和中东国家外)的政权确实呈现出前所未有的稳定性,这使得许多人开始质疑古代王朝周期性更替的理论是否还适用于当今世界。要回答这个问题,我们需要深入探讨古代王朝周期性更替的根源、近代国家崛起的特征以及两者之间的联系与区别。 古代王朝周期性更替的根源古代王朝的周期性更替,又被.............
  • 回答
    这个问题很有意思,它触及了文化发展、技术演进和人类需求之间微妙的互动关系。如果古代拥有了类似现代可乐的饮料,酒文化真的会像我们设想的那样消失吗?我认为,答案并非绝对的“是”或“否”,而是会发生一系列复杂而有趣的变化,甚至可能出现酒文化与“可乐文化”并存,相互影响的局面。首先,我们要明确“可乐”在古代.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有