軟件腐敗
軟件腐敗(Software rot)也稱代碼腐敗、比特腐敗、軟件腐蝕、軟件衰變,或軟件熵,是指軟件性能隨着時間而逐漸惡化或反應性的遞減(diminishing responsiveness),導致軟件出錯、不穩定或被稱作遺留系統,需要升級。這並不是一個物理現象:軟件實際上並不會衰變,而是缺乏敏捷反應(responsive)、未能隨環境變化而修改。
原因
環境改變
如果程序環境的改變超出了編程者的預料。例如,早期計算機視頻遊戲是受系統定時器激發。當計算機時鐘頻率提高,則視頻遊戲收到影響。[2]
一次性能力
一次性能力(Onceability)[3]是指技術系統的質量水平:一旦失效,用戶難以恢復系統。如不同的上下文、不可利用的信息(如口令丟失、指令丟失、難以管理的用戶界面)等等。
未使用的代碼
幾乎不太使用的代碼可能包含了未被注意的錯誤。
幾乎不修改的代碼
正常的軟件維護也可能會有軟件腐敗。特別的當一個程序包括模塊間有遠隔作用,改變一個可能會影響到表面看起來不相關的另一個模塊。
分類
休眠軟件的腐敗
軟件當前沒有在使用。
活動軟件的腐敗
使用中的軟件不斷被修改以滿足新的需求、改正錯誤。但每次改變時採取重構方法並不實際。因此軟件會逐漸偏離最初的設計。例如,軟件文檔在上述過程中沒有得到更新,軟件文檔中包含的特定知識可能會失效。
例子
早期的自然語言理解程序SHRDLU是使用LISP與PLANNER開發的,當時LISP語言還處於發展時期,因此SHRDLU使用了很多非標準的巨集與軟件庫。這使得它在現代計算機環境上都不能運行。
重構
參見
參考文獻
- ^ Raymond, Eric. Bit rot. The Jargon File. [3 March 2013]. (原始內容存檔於2021-05-02).
- ^ Inc, Ziff Davis. PC Mag. Ziff Davis, Inc. 1992-01-28: 286 (英語).
- ^ Jonas Söderström. Onceability: The consequence of technology rot. [2019-03-01]. (原始內容存檔於2013-11-03).
- ^ Fowler, Martin. What Is Refactoring. October 11, 2007 [2007-11-22]. (原始內容存檔於2011-06-23).