热门问题
时间线
聊天
视角
軟體腐敗
来自维基百科,自由的百科全书
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