软件腐烂主要是指性能还是凌乱的代码?


22

维基百科软件腐烂的定义集中在软件的性能上。这与我习惯的用法不同。在代码的整洁和设计方面,我想的更多,在代码具有所有标准质量特征(可读性,可维护性等)方面。现在,当代码变得不可读时,性能可能会下降,因为没人知道发生了什么。但是术语“软件腐烂”是否对性能有特别的提及?还是我认为它是指代码的整洁性对吗?或者这可能是该术语在多种意义上被普遍使用的情况-从用户的角度来看,这与性能有关;但是对于软件工匠而言,它必须更专门地处理代码的读取方式?


1
维基百科列出了3个原因,其中2个与性能,未使用的代码很少更新的代码
无关

2
“随着时间的流逝,软件的“性能”可能会下降,并在运行和累积错误时变成通常所说的“旧版”;虽然可能会产生一些相同的后果,但这通常不被认为是软件腐烂。” 我认为很明显,软件腐烂与性能无关。
zzzzBov 2012年

1
整个Wikipidia页面中唯一的重做功能是标记警告,该引用没有引用relibale源。
mattnz

Answers:


39

该术语与性能无关,至少在我所见过的任何地方都没有。

特别是关于不能很好维护并变得...脏...烂的代码。它涉及的代码其设计未随更改而更新,并且难以阅读和理解。


1
我听说过它曾经用来指代性能:例如“ Windows rot”,这种感觉需要您重新格式化并重新安装Windows,因为它会随着时间的推移变慢。
Carson63000

3
是的,但是“软件腐烂”和“ Windows腐烂”是不同的术语。
斯蒂芬·C

4
@Oded-这个比喻不是肮脏的。正是这种腐烂发生在老建筑中,使它们在结构上不健全。
斯蒂芬·C

18

面对现实吧。“软件腐烂”不是一个明确定义的技术概念。它只是对软件维护不良时会发生什么的贬义描述。

Wikipedia页面代表一种视图,但显然还有其他视图。您可以说不同的观点反映了持有观点的人的不同优先事项和关注点:

  • 专注于快速开发软件的人将更倾向于寻找性能“软件腐烂”的证据。

  • 专注于设计/体系结构的人(例如,因为他们需要添加新功能或修复功能错误),将从该角度看“软件腐烂”。

而且,说出谁的观点更正确并没有什么用。(这有点像在争论绿松石是绿色还是蓝色。)


1
由于OP的帖子是关于Wikipedia的,所以我提出:绿松石(彩色) -它是“绿色”的,但是是“蓝色”的。所以我认为您的论点是正确的:)。
李·李

6

我要说的是,“软件腐烂”一词通常指的是对当前任务的适用性。由于错误修复,新功能和细微调整的分层,软件可能不太适合其预期任务。两者合计可能对可维护性和性能产生不利影响。而且,组织的需求可能会随着时间而改变,并且该软件可能被迫扮演从未真正为之设计的角色。所有这些因素导致软件变得不太适合组织的需求,即使协同努力维护软件,也可能发生这种情况。


6

维基百科说软件腐烂和代码腐烂是相同的。我不同意。

代码腐烂是随着对代码进行越来越多的更改而逐渐失去可读性和可维护性。

随着软件从一种环境仿真器迁移到另一种环境仿真器,软件性能下降是性能的逐渐下降。一个示例是在模拟器上运行的所有Data General PDP软件。实际上,腐烂的是环境,而不是软件。


+1。维基百科将软件腐烂与代码腐烂等同起来。我们应该编辑它。还有更多的软件腐烂。一个示例是无法使用/难以使用GUI。过时的/错误的文档也做出了贡献。
Jayan 2012年

3

传统意义上的软件实际上不会变坏,变旧,磨损或“腐烂”。

如果软件运行的环境没有改变,则软件将永远永久存在。这就是为什么当有人问某个库是否“已死”时,我如此烦恼的原因,因为作者在最近5分钟内没有对其进行任何更新(仅略微夸大了效果)。

但是环境通常发生变化。修补并更新了操作系统,用功能更强大的计算机代替了计算机,并安装了软件可能依赖的新程序(例如最新版本的客户端,例如Internet Explorer,设备驱动程序或其他库)。因此,必须更新软件以考虑这些更改。

有些软件系统实际上已经连续数十年可靠地运行,而没有对其进行重大更新或维护。人们想到了在大型机上运行的处理银行交易的COBOL软件(尽管它们都必须在1999年进行修改以处理Y2K)。

维基百科对性能的强调似乎没有抓住重点。当许多软件应用程序安装在较新的环境中时,实际上可以提高性能。维基百科的文章实际上似乎更多地与软件膨胀有关。


软件膨胀-是的,很好。就我在问问题时对术语的理解而言,软件腐烂与以下事实有关:它继续由一群开发人员修改,这些开发人员的代码清理和设计标准低于标准。
卡扎尔克2012年

3

“软件腐烂”是一个非常模糊的术语,对任何人都可能意味着各种各样的事情,这取决于您对概念的看法以及您的视角是什么。

Wikipedia在Software rot上的定义未设置标准,因为它也是由某些人编写的。我认为该术语具有多种含义,需要细分为所引用的特定领域。

  • 程序员可能会将其理解为一个无法维护的代码库,其中充满了反模式,在命名和编码风格上没有一致性。
  • 系统管理员可能将其理解为性能不好,内存泄漏和地狱。保养。
  • 最终用户可能将其理解为非常复杂,非直观,难以工作的软件。

2

我一直认为软件腐烂是当您一段时间不使用软件时发生的情况。某种程度上,该软件会变成无法构建的状态。然后,当您到达可以构建它的地步时,它就无法像以前那样与输入和输出一起使用。即使以数字形式存储代码,几乎就像代码实际上已降级一样。


1
因为环境(编译器,库或其他)发生了变化?维基百科对此进行了讨论。
卡扎尔克2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.