軟體腐敗(Software rot)也稱程式碼腐敗位元腐敗軟體腐蝕軟體衰變,或軟體熵,是指軟體效能隨著時間而逐漸惡化或反應性的遞減(diminishing responsiveness),導致軟體出錯、不穩定或被稱作遺留系統英語legacy software,需要升級。這並不是一個物理現象:軟體實際上並不會衰變,而是缺乏敏捷反應(responsive)、未能隨環境變化而修改。

新駭客詞典定義「位元腐敗」為軟體程式隨時間降級的幽默表示,即使什麼都未改變。這把組成軟體的位元類比為原子的衰變。[1]

原因

編輯

環境改變

編輯

如果程式環境的改變超出了程式設計師的預料。例如,早期電腦電動遊戲是受系統定時器激發。當電腦時脈頻率提高,則電動遊戲收到影響。[2]

一次效能力

編輯

一次效能力(Onceability)[3]是指技術系統的品質水準:一旦失效,使用者難以恢復系統。如不同的上下文、不可利用的資訊(如口令遺失、指令遺失、難以管理的使用者介面)等等。

未使用的程式碼

編輯

幾乎不太使用的程式碼可能包含了未被注意的錯誤。

幾乎不修改的程式碼

編輯

正常的軟體維護也可能會有軟體腐敗。特別的當一個程式包括模組間有遠隔作用,改變一個可能會影響到表面看起來不相關的另一個模組。

分類

編輯

休眠軟體的腐敗

編輯

軟體當前沒有在使用。

活動軟體的腐敗

編輯

使用中的軟體不斷被修改以滿足新的需求、改正錯誤。但每次改變時採取重構方法並不實際。因此軟體會逐漸偏離最初的設計。例如,軟體文件在上述過程中沒有得到更新,軟體文件中包含的特定知識可能會失效。

例子

編輯

早期的自然語言理解程式SHRDLU是使用LISP與PLANNER開發的,當時LISP語言還處於發展時期,因此SHRDLU使用了很多非標準的巨集與軟體庫。這使得它在現代電腦環境上都不能執行。

重構

編輯

程式碼重構是一種解決軟體腐敗的方法。[4]

參見

編輯

參考文獻

編輯
  1. ^ Raymond, Eric. Bit rot. The Jargon File. [3 March 2013]. (原始內容存檔於2021-05-02). 
  2. ^ Inc, Ziff Davis. PC Mag. Ziff Davis, Inc. 1992-01-28: 286 (英語). 
  3. ^ Jonas Söderström. Onceability: The consequence of technology rot. [2019-03-01]. (原始內容存檔於2013-11-03). 
  4. ^ Fowler, Martin. What Is Refactoring. October 11, 2007 [2007-11-22]. (原始內容存檔於2011-06-23).