美文网首页摄影读书手绘
维护遗留软件使你意识到代码是多么脆弱

维护遗留软件使你意识到代码是多么脆弱

作者: 技术的游戏 | 来源:发表于2023-08-10 23:52 被阅读0次

令人惊奇的是,软件每天都能正常工作。

我们发明了一些复杂的系统来支撑我们的应用程序,通过层层的抽象来保持它们的运行。

但当你真正停下来思考时,你刚刚构建的应用实际上依赖于某个开源框架。而这个框架依赖于很多其他的开源项目,每一个都有其自己的依赖项。

在几天内,这条依赖链就会过时。底层的包都有了新版本。

几个月内,你需要进行一些依赖更新,因为底层包中存在一些安全或许可证的漏洞。

对于遗留软件来说,升级通常可能会落后好几年。而使应用程序达到最新状态所需的工作是巨大的。

近期的困境

在过去的一周工作中,我开始了一个项目,目标是用现代的依赖关系来更新一个遗留应用程序。

令人惊讶的是,很多事情都可能出错:

  • 我从GitHub拉取了源代码,立即遇到了很多错误,只是为了在本地构建应用。
  • 更新一个包可能会导致它与另一个包的当前版本不兼容。级联更新意味着找到一个新的稳定构建可能会是个挑战。
  • 往往要求会直接冲突。这周我有一个时候,一个包需要 click<8,而另一个包需要 click>8。我要么需要降级一个依赖,要么需要对另一个带有破坏性更改的依赖进行主要版本升级。
  • 当依赖项之间不能很好地相互协作时,可能会出现奇怪的错误。用不匹配的依赖项运行应用可能会导致你之前从未见过的异常,这些异常深藏在包的内部。需要大量的猜测和检查来确保所有人都能和谐地工作。

依赖地狱

我不认识一个软件工程师,没有一个经历过这种挣扎的版本。依赖管理确实很难。

升级、导航破坏性更改、以及在Stack Overflow上花费大量时间来诊断为什么我会得到某些错误。

这使得很多时候,软件能够按照我们的预期工作,这一点更加令人惊讶。再考虑一下,你会意识到为了让你的应用运行,数十个不同的、独立的软件包之间的每一件事都必须恰到好处。

这真是太疯狂了!但这是现代软件的真相。

每周清单

请记住,始终保持学习的态度,并享受编码的乐趣!祝您编码愉快!

如果你喜欢我的文章,点赞,关注,转发!

相关文章

  • 0.duilib学习总结

    平时工作中难免需要对遗留代码进行维护、增量开发。这次需要修改一个客户端软件。 该客户端软件使用的ui库是duili...

  • 遗留系统改造-开篇

    遗留代码 从何而来 软件是如何演变成遗留代码? 初期,架构清晰,代码精炼,指点江山 中期,新功能简单在原有代码加上...

  • 致想给遗留系统写自动化单元测试的开发团队——事件风暴之父的工作坊

    一家大型企业的关键业务代码已经年久失修成为了难以维护的遗留代码,有着硅谷高科技企业软件开发管理经验的高管决定在企业...

  • 瀑布模型

    需求分析 软件设计 编写代码 软件测试 运行维护

  • 《重构-改善既有代码的设计》

    工作多年,经历过一些大型互联网项目,常常面对是很多遗留系统,添加一些新功能,寻找bug,维护遗留代码。 随着不同产...

  • App组件化

    优点 业务分层、解耦,使代码变得可维护;有效的拆分、组织日益庞大的工程代码,使工程目录变得可维护;便于各业务功能拆...

  • 39.面对遗留系统,你应该怎样做

    定义什么是遗留系统? 不经过充分测试的代码或者系统,称为遗留系统。 background: 在《你的代码是怎么变混...

  • 编码规范 | Java函数优雅之道

    导读 随着软件项目代码的日积月累,系统维护成本变得越来越高,是所有软件团队面临的共同问题。持续地优化代码,提高代码...

  • Java 函数优雅之道

    导读 随着软件项目代码的日积月累,系统维护成本变得越来越高,是所有软件团队面临的共同问题。持续地优化代码,提高代码...

  • 编码规范 | Java函数优雅之道(上)

    导读 随着软件项目代码的日积月累,系统维护成本变得越来越高,是所有软件团队面临的共同问题。持续地优化代码,提高代码...

网友评论

    本文标题:维护遗留软件使你意识到代码是多么脆弱

    本文链接:https://www.haomeiwen.com/subject/uanzpdtx.html