软件腐烂

编辑
本词条由“匿名用户” 建档。
软件腐烂,是软件质量随时间缓慢恶化或响应能力下降,最终导致软件出现故障、无法使用或需要更新。升级。这不是物理现象:软件实际上并没有衰减,而是由于其所处环境的变化而缺乏响应和更新。 TheJargonFile是黑客知识的纲要,将“bitrot”定义为对软件程序随时间退化的诙谐解释,即使“什么都没有改变”;这背后的想法几乎就像构成该程序的部分受到放射性衰变的影响。 导致软件腐烂的因素有...

什么是软件腐烂

编辑

软件腐烂,是软件质量随时间缓慢恶化或响应能力下降,最终导致软件出现故障、无法使用或需要更新。升级。这不是物理现象:软件实际上并没有衰减,而是由于其所处环境的变化而缺乏响应和更新。

TheJargonFile是黑客知识的纲要,将“bitrot”定义为对软件程序随时间退化的诙谐解释,即使“什么都没有改变”;这背后的想法几乎就像构成该程序的部分受到放射性衰变的影响。

软件腐烂的原因

编辑

导致软件腐烂的因素有很多,包括软件运行环境的变化、软件本身各部分之间的兼容性下降,以及未使用或很少使用的代码中出现错误

环境变化

当程序环境发生变化时,特别是程序设计者没有预料到的变化,软件可能不再按最初预期运行。例如,许多早期的电脑游戏设计师在他们的游戏中使用CPU时钟速度作为计时器。但是,较新的CPU时钟速度更快,因此游戏速度相应提高,随着时间的推移,游戏的可用性会降低。

一次性

环境的变化与程序的设计者无关,而与它的用户有关。最初,用户可以使系统进入正常工作状态,并让它在一定时间内完美运行。但是,当系统停止正常工作,或者用户想要访问配置控件时,由于上下文不同和信息不可用(密码丢失、缺少说明或只是难以管理的用户),他们无法重复该初始步骤最初通过反复试验配置的接口)。信息架构师JonasSöderström将这个概念命名为Onceability,并将其定义为“技术系统中的质量,一旦系统发生故障,它会阻止用户恢复系统”。

未使用的代码

不经常使用的代码部分,例如文档过滤器或设计供其他程序使用的接口,可能包含未被注意到的错误。随着用户需求和其他外部因素的变化,此代码可能会在以后执行,从而暴露错误并使软件看起来功能较少。

很少更新的代码

软件和系统的正常维护也可能导致软件腐烂。特别是,当一个程序包含多个功能相距一定距离的部分时,如果不考虑对一个部分的更改如何影响其他部分,则可能会引入错误。

在某些情况下,这可能采取软件使用的库的形式以对软件产生不利影响的方式进行更改。如果以前使用该软件的旧版本库由于与其他软件冲突或在旧版本中发现的安全漏洞而无法再使用,则可能不再有该程序所需库的可行版本使用。

在线连接

现代商业软件通常连接到在线服务器以进行许可证验证和访问信息。如果为软件提供动力的在线服务被关闭,它可能会停止工作。

软件腐烂的分类

编辑

软件腐烂通常分为休眠腐烂或活动腐烂。

休眠腐烂

随着应用程序的其余部分发生变化,当前未使用的软件逐渐变得无法使用。用户需求和软件环境的变化也导致恶化。

活性腐烂

如果没有始终如一地应用适当的缓解过程,持续修改的软件可能会随着时间的推移失去其完整性。然而,许多软件需要不断地更改以满足新的要求和纠正错误,并且每次进行更改时重新设计软件几乎是不切实际的。这为程序创造了本质上是一个进化过程,导致它偏离了最初的工程设计。由于这种情况和不断变化的环境,原始设计人员所做的假设可能会失效,从而引入错误。

在实践中,添加新功能可能优先于更新文档;但是,如果没有文档,与程序部分有关的特定知识可能会丢失。在某种程度上,这可以通过遵循编码约定的最佳当前实践来缓解。

一旦应用程序接近其商业生命的终点并且进一步的开发停止,活动软件的腐烂速度就会减慢。用户经常学会解决任何剩余的软件错误,并且软件的行为变得一致,因为没有任何变化。

例子

编辑

AI程序示例

人工智能研究早期的许多开创性程序都遭受了无法弥补的软件腐烂。例如,最初的SHRDLU程序(早期的自然语言理解程序)无法在任何现代计算机计算机模拟器上运行,因为它是在LISP和PLANNER仍处于开发阶段的时期开发的,因此使用非标准不再存在的宏和软件库。

Software_rot

在线论坛示例

假设管理员使用开源论坛软件创建了一个论坛,然后通过添加新功能和选项对其进行了大量修改。此过程需要对现有代码进行大量修改,并偏离该软件的原始功能。

从这里开始,软件腐烂可以通过多种方式影响系统:

  • 管理员可能会不小心做出与彼此或原始软件冲突的更改,从而导致论坛出现意外行为或完全崩溃。这使他们处于一个非常糟糕的境地:由于他们与原始代码的偏差如此之大,因此很难获得恢复论坛的技术支持和帮助。
  • 可能会在原始论坛源代码中发现安全漏洞,需要安全补丁。但是,由于管理员对代码进行了如此广泛的修改,补丁可能无法直接适用于他们的代码,需要管理员有效地重写更新。
  • 进行修改的管理员可能会腾出他们的职位,给新管理员留下一个错综复杂且经过大量修改且缺乏完整文档的论坛。如果不完全了解修改,新管理员很难在不引入冲突和错误的情况下进行更改。此外,原始系统的文档可能不再可用,或者更糟糕的是,由于功能需求的细微差异而产生误导。

重构

编辑

重构是解决软件腐烂问题的一种手段。它被描述为重写现有代码以改进其结构而不影响其外部行为的过程。这包括删除死代码和重写已被广泛修改且不再有效工作的部分。必须注意不要改变软件的外部行为,因为这可能会引入不兼容性,从而导致软件腐烂。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/131807/

(2)
词条目录
  1. 什么是软件腐烂
  2. 软件腐烂的原因
  3. 环境变化
  4. 一次性
  5. 未使用的代码
  6. 很少更新的代码
  7. 在线连接
  8. 软件腐烂的分类
  9. 休眠腐烂
  10. 活性腐烂
  11. 例子
  12. AI程序示例
  13. 在线论坛示例
  14. 重构

轻触这里

关闭目录

目录