就像岩石和山脉会受到自然侵蚀,今天的全球软件也在遭受侵蚀。每天,开发者们都发现自己软件的混乱程度越来越高,而这些软件的架构却鲜少有人清楚理解。随着AI产业发展驶入“快车道”,我们几乎没有时间去理清这些混乱。
近几年,软件频繁出现问题。仅2023年,国内网购、网约车、社交应用等平台或应用多次发生崩溃,引发媒体报道,甚至登上不同平台的热搜榜。在全球范围,Crowdstrike软件更新导致的"微软蓝屏"事件可能是今年最引人注目的一个。
然而,开发者们却在维持这个摇摇欲坠的纸牌屋上投入了大量时间。基于2,000多位美国、英国、法国、德国和新加坡开发者和行政高管的调研报告《开发者系数(The Developer Coefficient)》指出,开发者每周平均工作41.1小时,其中三分之一的时间用于解决技术债务;超过40%的时间用于维护。
这实际上反映出大量时间被用于非创新性工作。Qt Group的QA业务总监Juan Rodriguez对此深感担忧:"我们目睹着软件架构的逐渐衰败,因为科技行业要求开发者不断向前推进,譬如铺设新的铁轨,然而他们身后的铁轨却在逐渐崩溃。"
什么是软件侵蚀
我们大多数人并没有注意到软件侵蚀。这是软件内部结构的一种无形降级。它使得软件的可读性、可维护性、可扩展性和可复用性变得困难,甚至可能威胁到系统的功能安全。
软件开发是一个不断累积的过程。新的依赖关系总是被引入到软件的各个部分中。但有时候,新的代码并非必要,反而使得代码库越来越臃肿,越来越难以理解、修改和维护。我们之所以称之为Dependency Hell(地狱依赖)并非没有原因。在实施功能或修复错误时,弄清楚哪些更改是必要的需要极大耐心和技巧。
软件侵蚀的雪球效应
添加功能和快捷方式会逐步增加软件复杂性,每次迭代都在无形中侵蚀着软件架构的完整性。
开发者在工作流中添加了快捷方式,导致代码库日益臃肿。想要一个新的功能?有可能会因此破坏一些东西。如果重新设计产品的某个方面,可能会引发一系列破坏性反应,影响到其他原本相互独立的团队。每次改动都可能带来意想不到的连锁反应。
开发者可能会因为额外的维护工作而感到沮丧,进而再次添加一个快捷方式。如此反复,直到代码库变得像极其不稳定的真人版叠叠乐游戏。每个人都害怕成为那个让整个结构崩塌的人。这就是开发者在面对日益复杂的代码库时所面临的挑战。
关注软件侵蚀是为了长期保障您的软件投资
"这就是软件侵蚀的本质,"Qt Group的Juan Rodriguez总结道,"无处不在的复杂性使得即使是发布最简单的新功能也变得痛苦无比。从长期来看,这种情况会对效率和可扩展性造成严重损害。"
我们是否忘了测试左移?
许多公司取了一种令人失望的"补救"措施。他们增加修复错误的时间,或者雇佣更多的QA工程师来减轻开发者负担。然而,这些都只是在玩"打地鼠"游戏,新错误在被修复前并不存在,就像是用昂贵的创可贴来处理严重的伤口。
更明智的做法应该是重新架构代码库。对于只有两年代码历史的公司来说,这可能相对容易,但对于那些拥有二十年遗留代码的公司呢?即便他们完成了这项艰巨的任务,如果第一次没有真正吸取教训,软件侵蚀的循环就会再次开始。
从开发者在维护上投入的时间来看,这些教训似乎还没有被充分吸取。软件侵蚀的问题依然存在,我们甚至可以预见,AI代码助手也面临同样的问题。除非每个行业都能自觉地从一开始就将QA紧密地融入到开发过程中。
Juan Rodriguez建议:"从设计阶段就开始考虑这些问题,而不是等到所有的代码都写完之后再开始。"在编写新代码的时候,就要运行静态代码分析和功能测试。即便已经做了所有这些事情,但效果并不理想。如果是这样的话,那就回到起点,从宏观层面去审视软件架构,而不是只关注细节层次。架构是否达到预期?在产品中定义的第一个组件是什么?组件之间如何通信?
当您运行静态代码分析并理解在哪里复制了代码;当您运行架构并理解依赖关系在哪里;当您运行功能测试并获得结果,您就开始理解了问题的所在。这并不是选择其中一个或另一个的问题。所有的软件产品最终都应该能够从多种来源获取洞察。只有这样,才能回到起点,重新架构,以避免重蹈覆辙。
"遗憾的是,似乎很少有人真正知道自己实施的架构是什么样," Juan Rodriguez认为,"如果我们理解自己的软件架构,那么新增任何功能,都可以根据自己对架构的理解来构建软件。那时,就不再需要走捷径了。"
Axivion Suite:解决软件侵蚀的利器
Axivion Suite 是Qt Group专为解决软件侵蚀问题而设计的工具,通过静态代码分析、架构验证和依赖关系管理,有效应对软件架构侵蚀。它能自动检测代码中的潜在问题,确保代码符合预期设计,避免架构偏离。通过对软件架构的全面分析,Axivion Suite帮助开发者理解和修复架构中的违规行为,防止复杂性和依赖关系的增加。此外,Axivion Suite还提供实时反馈,帮助开发者在早期阶段发现并修复错误,从而提高软件的可维护性和可靠性,特别适用于医疗和汽车等对软件质量要求高的行业。
Axivion Suite阻止软件侵蚀
理解并解决软件侵蚀问题,是每一个重视软件质量的企业都应该关注的课题。Axivion Suite提供了强大工具,帮助企业从根本上解决这一问题。让我们一起,构建更加稳定和高效的软件系统。