维基百科对软件腐烂的定义集中在软件的性能上。这与我习惯的用法不同。在代码的整洁和设计方面,我想的更多,在代码具有所有标准质量特征(可读性,可维护性等)方面。现在,当代码变得不可读时,性能可能会下降,因为没人知道发生了什么。但是术语“软件腐烂”是否对性能有特别的提及?还是我认为它是指代码的整洁性对吗?或者这可能是该术语在多种意义上被普遍使用的情况-从用户的角度来看,这与性能有关;但是对于软件工匠而言,它必须更专门地处理代码的读取方式?
维基百科对软件腐烂的定义集中在软件的性能上。这与我习惯的用法不同。在代码的整洁和设计方面,我想的更多,在代码具有所有标准质量特征(可读性,可维护性等)方面。现在,当代码变得不可读时,性能可能会下降,因为没人知道发生了什么。但是术语“软件腐烂”是否对性能有特别的提及?还是我认为它是指代码的整洁性对吗?或者这可能是该术语在多种意义上被普遍使用的情况-从用户的角度来看,这与性能有关;但是对于软件工匠而言,它必须更专门地处理代码的读取方式?
Answers:
该术语与性能无关,至少在我所见过的任何地方都没有。
特别是关于不能很好维护并变得...脏...烂的代码。它涉及的代码其设计未随更改而更新,并且难以阅读和理解。
面对现实吧。“软件腐烂”不是一个明确定义的技术概念。它只是对软件维护不良时会发生什么的贬义描述。
Wikipedia页面代表一种视图,但显然还有其他视图。您可以说不同的观点反映了持有观点的人的不同优先事项和关注点:
专注于快速开发软件的人将更倾向于寻找性能“软件腐烂”的证据。
专注于设计/体系结构的人(例如,因为他们需要添加新功能或修复功能错误),将从该角度看“软件腐烂”。
而且,说出谁的观点更正确并没有什么用。(这有点像在争论绿松石是绿色还是蓝色。)
维基百科说软件腐烂和代码腐烂是相同的。我不同意。
代码腐烂是随着对代码进行越来越多的更改而逐渐失去可读性和可维护性。
随着软件从一种环境仿真器迁移到另一种环境仿真器,软件性能下降是性能的逐渐下降。一个示例是在模拟器上运行的所有Data General PDP软件。实际上,腐烂的是环境,而不是软件。
传统意义上的软件实际上不会变坏,变旧,磨损或“腐烂”。
如果软件运行的环境没有改变,则软件将永远永久存在。这就是为什么当有人问某个库是否“已死”时,我如此烦恼的原因,因为作者在最近5分钟内没有对其进行任何更新(仅略微夸大了效果)。
但是环境通常会发生变化。修补并更新了操作系统,用功能更强大的计算机代替了计算机,并安装了软件可能依赖的新程序(例如最新版本的客户端,例如Internet Explorer,设备驱动程序或其他库)。因此,必须更新软件以考虑这些更改。
有些软件系统实际上已经连续数十年可靠地运行,而没有对其进行重大更新或维护。人们想到了在大型机上运行的处理银行交易的COBOL软件(尽管它们都必须在1999年进行修改以处理Y2K)。
维基百科对性能的强调似乎没有抓住重点。当许多软件应用程序安装在较新的环境中时,实际上可以提高性能。维基百科的文章实际上似乎更多地与软件膨胀有关。
“软件腐烂”是一个非常模糊的术语,对任何人都可能意味着各种各样的事情,这取决于您对概念的看法以及您的视角是什么。
Wikipedia在Software rot上的定义未设置标准,因为它也是由某些人编写的。我认为该术语具有多种含义,需要细分为所引用的特定领域。