随着互联网的发展,软件的角色变得越来越重要,以至于我们的世界现在严重依赖于它。软件在各种操作中起着关键作用,从将卫星送入轨道到管理庞大的供应链网络。无论是在驾驶汽车、乘坐飞机还是购买杂货时,我们都会依赖它。
然而,尽管出现了专门的角色,如用户体验专家和质量保证工程师,以尽量减少软件中的错误数量,但随着软件解决方案的数量持续增长,人们仍然会遇到性能和可用性问题。本文旨在探讨这种持续的质量危机背后的原因,并揭示为何尽管取得了进步,但软件质量仍然是一个关键问题。
我如何定义质量?对于软件来说,质量有很多定义。我个人认为,质量包括功能性、可靠性、可用性和安全性。在功能方面,软件是否提供了用户实现目标所需的所有必要特性?是否还需要依赖其他软件?Facebook是一个很好的例子,它需要两个应用程序来使用平台(新闻提要)和聊天功能,即使Web应用程序在同一URL上提供这两个功能。另一个例子是游戏行业。在我大学时期,我从未听说一款游戏需要20个补丁才能玩。现在,游戏公司发布他们的产品,但它仍然像beta版本一样。他们通常会在发布后的前两天发布两个补丁,使其可玩。该行业的表现不佳,价格也在上涨。
最后,最重要的方面之一是安全性。如今的软件有许多依赖项,而我们都清楚管理这些依赖项并保持其更新有多困难。即使是自动工具,如Renovate或Dependabot也无法确保新主要版本的向后兼容性。这使开发人员的工作变得更加困难,他们经常被迫手动处理这些依赖项升级。但是,在他们完成之前,攻击者可能会利用旧依赖项的漏洞窃取用户数据。这些违规行为不仅是公司面临法律行动的不便,也是对最终用户的威胁。每天都有数千GB的用户数据,如电子邮件