什么是軟件腐爛
編輯軟件腐爛,是軟件質量隨時間緩慢惡化或響應能力下降,最終導致軟件出現故障、無法使用或需要更新。升級。這不是物理現象:軟件實際上并沒有衰減,而是由于其所處環境的變化而缺乏響應和更新。
TheJargonFile是黑客知識的綱要,將“bitrot”定義為對軟件程序隨時間退化的詼諧解釋,即使“什么都沒有改變”;這背后的想法幾乎就像構成該程序的部分受到放射性衰變的影響。
軟件腐爛的原因
編輯導致軟件腐爛的因素有很多,包括軟件運行環境的變化、軟件本身各部分之間的兼容性下降,以及未使用或很少使用的代碼中出現錯誤。
環境變化
當程序環境發生變化時,特別是程序設計者沒有預料到的變化,軟件可能不再按最初預期運行。例如,許多早期的電腦游戲設計師在他們的游戲中使用CPU時鐘速度作為計時器。但是,較新的CPU時鐘速度更快,因此游戲速度相應提高,隨著時間的推移,游戲的可用性會降低。
一次性
環境的變化與程序的設計者無關,而與它的用戶有關。最初,用戶可以使系統進入正常工作狀態,并讓它在一定時間內完美運行。但是,當系統停止正常工作,或者用戶想要訪問配置控件時,由于上下文不同和信息不可用(密碼丟失、缺少說明或只是難以管理的用戶),他們無法重復該初始步驟最初通過反復試驗配置的接口)。信息架構師JonasS?derstr?m將這個概念命名為Onceability,并將其定義為“技術系統中的質量,一旦系統發生故障,它會阻止用戶恢復系統”。
未使用的代碼
不經常使用的代碼部分,例如文檔過濾器或設計供其他程序使用的接口,可能包含未被注意到的錯誤。隨著用戶需求和其他外部因素的變化,此代碼可能會在以后執行,從而暴露錯誤并使軟件看起來功能較少。
很少更新的代碼
軟件和系統的正常維護也可能導致軟件腐爛。特別是,當一個程序包含多個功能相距一定距離的部分時,如果不考慮對一個部分的更改如何影響其他部分,則可能會引入錯誤。
在某些情況下,這可能采取軟件使用的庫的形式以對軟件產生不利影響的方式進行更改。如果以前使用該軟件的舊版本庫由于與其他軟件沖突或在舊版本中發現的安全漏洞而無法再使用,則可能不再有該程序所需庫的可行版本使用。
在線連接
現代商業軟件通常連接到在線服務器以進行許可證驗證和訪問信息。如果為軟件提供動力的在線服務被關閉,它可能會停止工作。
軟件腐爛的分類
編輯軟件腐爛通常分為休眠腐爛或活動腐爛。
休眠腐爛
隨著應用程序的其余部分發生變化,當前未使用的軟件逐漸變得無法使用。用戶需求和軟件環境的變化也導致惡化。
活性腐爛
如果沒有始終如一地應用適當的緩解過程,持續修改的軟件可能會隨著時間的推移失去其完整性。然而,許多軟件需要不斷地更改以滿足新的要求和糾正錯誤,并且每次進行更改時重新設計軟件幾乎是不切實際的。這為程序創造了本質上是一個進化過程,導致它偏離了最初的工程設計。由于這種情況和不斷變化的環境,原始設計人員所做的假設可能會失效,從而引入錯誤。
在實踐中,添加新功能可能優先于更新文檔;但是,如果沒有文檔,與程序部分有關的特定知識可能會丟失。在某種程度上,這可以通過遵循編碼約定的最佳當前實踐來緩解。
一旦應用程序接近其商業生命的終點并且進一步的開發停止,活動軟件的腐爛速度就會減慢。用戶經常學會解決任何剩余的軟件錯誤,并且軟件的行為變得一致,因為沒有任何變化。
例子
編輯AI程序示例
人工智能研究早期的許多開創性程序都遭受了無法彌補的軟件腐爛。例如,最初的SHRDLU程序(早期的自然語言理解程序)無法在任何現代計算機或計算機模擬器上運行,因為它是在LISP和PLANNER仍處于開發階段的時期開發的,因此使用非標準不再存在的宏和軟件庫。
在線論壇示例
假設管理員使用開源論壇軟件創建了一個論壇,然后通過添加新功能和選項對其進行了大量修改。此過程需要對現有代碼進行大量修改,并偏離該軟件的原始功能。
從這里開始,軟件腐爛可以通過多種方式影響系統:
- 管理員可能會不小心做出與彼此或原始軟件沖突的更改,從而導致論壇出現意外行為或完全崩潰。這使他們處于一個非常糟糕的境地:由于他們與原始代碼的偏差如此之大,因此很難獲得恢復論壇的技術支持和幫助。
- 可能會在原始論壇源代碼中發現安全漏洞,需要安全補丁。但是,由于管理員對代碼進行了如此廣泛的修改,補丁可能無法直接適用于他們的代碼,需要管理員有效地重寫更新。
- 進行修改的管理員可能會騰出他們的職位,給新管理員留下一個錯綜復雜且經過大量修改且缺乏完整文檔的論壇。如果不完全了解修改,新管理員很難在不引入沖突和錯誤的情況下進行更改。此外,原始系統的文檔可能不再可用,或者更糟糕的是,由于功能需求的細微差異而產生誤導。
重構
編輯重構是解決軟件腐爛問題的一種手段。它被描述為重寫現有代碼以改進其結構而不影響其外部行為的過程。這包括刪除死代碼和重寫已被廣泛修改且不再有效工作的部分。必須注意不要改變軟件的外部行為,因為這可能會引入不兼容性,從而導致軟件腐爛。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/131807/