热门问题
时间线
聊天
视角
软件腐败
来自维基百科,自由的百科全书
Remove ads
软件腐败(Software rot)也称代码腐败、比特腐败、软件腐蚀、软件衰变,或软件熵,是指软件性能随着时间而逐渐恶化或反应性的递减(diminishing responsiveness),导致软件出错、不稳定,需要升级。这并不是一个物理现象:软件实际上并不会衰变,而是缺乏敏捷反应(responsive)、未能随环境变化而修改。
原因
如果程序环境的改变超出了编程者的预料。例如,早期计算机视频游戏是受系统定时器激发。当计算机时钟频率提高,则视频游戏收到影响。[2]
一次性能力(Onceability)[3]是指技术系统的质量水平:一旦失效,用户难以恢复系统。如不同的上下文、不可利用的信息(如口令丢失、指令丢失、难以管理的用户界面)等等。
几乎不太使用的代码可能包含了未被注意的错误。
正常的软件维护也可能会有软件腐败。特别的当一个程序包括模块间有远隔作用,改变一个可能会影响到表面看起来不相关的另一个模块。
分类
软件当前没有在使用。
使用中的软件不断被修改以满足新的需求、改正错误。但每次改变时采取重构方法并不实际。因此软件会逐渐偏离最初的设计。例如,软件文档在上述过程中没有得到更新,软件文档中包含的特定知识可能会失效。
软体熵
软体熵是描述对软体系统的维护修改,使其渐渐结构不清,复杂度增加的倾向[4]Manny Lehman在1974年用了“熵”这个词来描述软体系统的复杂性,也得到了类似热力学第二定律的结果。雷曼软体进化定律中提到:复杂的软体系统需要持续的修改以维持和其周围环境的关联,而一般来说,修改会增加系统的熵,除非刻意的去减少系统的熵,才可能减少[5]。
伊瓦尔·雅各布森等人在1992年以类似的方式说明软体熵,提到当系统修改时,无序程度的增加,最终都会让软体系统维护起来过于困难,而其初始设计会大幅影响软体系统可维护的时间,而代码重构可以延长其可维护的期间[6]。
例子
早期的自然语言理解程序SHRDLU是使用LISP与PLANNER开发的,当时LISP语言还处于发展时期,因此SHRDLU使用了很多非标准的宏与软件库。这使得它在现代计算机环境上都不能运行。
重构
参见
参考文献
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads