當前位置:
首頁 > 知識 > 軟體為什麼會淪為遺留系統?

軟體為什麼會淪為遺留系統?

軟體為什麼會淪為遺留系統?

軟體變成遺留系統是一個常見的問題,本文就來看看遺留系統形成的十大原因。

軟體為什麼會淪為遺留系統?

作者 | Martin F. Johansen

譯者 | 彎月,責編 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下為譯文:

通常,開發人員不希望在遺留系統上工作,因為這些系統都很複雜,使用落伍的技術,而且還有很多維護任務。遺留系統還會阻礙公司的發展,因為在引入客戶和市場所需的新功能時,遺留系統勢必會拖後腿。

遺留系統在剛出現時當然並不是遺留下來的。最初可能也是採用最新最先進的技術構建的,開發人員熱切而又快速地開發了這個系統。然而,時至今日這個系統就變成了沒有希望、過時、晦澀難懂和無法維護的系統。

那麼這中間究竟發生了什麼?在本文中,讓我們來看看軟體成為遺留系統的十大原因。

軟體為什麼會淪為遺留系統?

開發人員的工作目的是為了積累經驗而非構建軟體

IT行業的發展十分迅速,各個公司都要求開發人員擁有最新技術的經驗。許多開發人員都明白這一點,所以他們希望積累新技術的經驗,為自己的簡歷加分,為下一份工作鋪路。

通常,項目負責人都意識不到這一點,開發人員三言兩語說這很有必要,項目負責人就接受了,甚至還會推波助瀾,即便這種技術有點繞遠,會延誤項目,甚至降低質量。如果他們知道後果,那麼斷然不會接受。

許多開發人員都認為他們在當前公司或項目中的工作只是暫時的。因此,他們在選擇技術時關心的並不是長期的後果,而是自己下一步的職業生涯。

為了抵制這種影響,首先需要承認這種現象確實存在,其次領導者必須明確關注公司的長期目標。領導者必須謹慎地做出技術選擇並堅持下去。同時在改變技術選擇時,必須謹慎評估,將公司的利益放在第一位。

軟體為什麼會淪為遺留系統?

學習新事物很有趣

學習很有趣,但學習本身賺不到錢,而且賺錢也不好玩。還有什麼比在工作中一邊學習一邊賺錢更好的呢?大多數開發人員都非常喜歡在工作中學習。然而,這對於企業來說是一個問題,因為學習最新的技術通常會使公司受益,但正如我們在本文中列出的許多其他原因那樣,擁抱新技術是導致軟體成為遺留系統的另一個原因。

引入新技術通常會導致軟體成為遺留系統,因為不同的方法會導致系統演變成東拼西湊的混合體,這會增加不必要的複雜性。此外,隨著不斷加入新的技術,舊技術就會過時。過時的代碼量逐漸增加,而軟體最終會變成遺留系統。

這是一個雙重打擊:開發人員的目的是學習新技術而不是工作,產出的軟體也變成了遺留系統,而不是長期穩定可靠的軟體。

有時,軟體開發包括長期的工程作業,其中業務流程是自動化的。與學習和嘗試新技術相比,通常這些工作被視為機械無聊的工作。

軟體開發與其他建築工作沒有什麼不同。通常,解決問題的方法都是眾所周知的,解決問題時使用的工具和技術也是眾所周知的。換句話說,開發人員需要接受這樣一個事實:有時候在工作中你只需要構建軟體,而學習新技術的機會非常小。原因很簡單,因為公司的目標從來都不是讓開發人員學習新技術。

當然,有時學習新技術也很有用。但這應該由公司領導層做出決定,認真學習符合公司利益的新技術。在這種情況下,很明確學習是公司戰略的一部分,當然學習就不再是問題了。

在引入新技術時,領導層應認真考慮重構舊代碼,讓整個代碼庫與最新的技術保持同步。只有這樣才能控制好軟體的複雜性。

軟體為什麼會淪為遺留系統?

時尚

你可能會覺得很驚訝,IT界也有時尚?當然,我們這裡說的可不是服飾時尚,但很類似。當今的社會不需要再擔心衣不蔽體的問題,因此服裝設計師發明了新的設計和顏色組合,生產出各種時尚的服裝。差異化和一致性推動著時尚的發展:你不想和爺爺輩的人身著相同的衣服,但你卻想和最喜歡的明星、創業家或音樂家穿相同款式的衣服。

軟體界也可以看到相同的情況。

如今,構建軟體已不再是一個問題,因此開發人員希望自己的產品從那些平庸的軟體中脫穎而出,做到炫酷炸裂。於是,一系列不同的軟體開發方式就這樣誕生了,其實這背後並沒有任何實際的專業理由。

軟體為什麼會淪為遺留系統?

今日時尚,明日老套

今天新穎閃亮的技術,到明天就會變得陳舊乏味。IT行業是出了名的發展迅速,只要開發人員學習了新技術,他們就會在下一個項目中拒絕使用原來的技術。一些軟體系統就是舊時尚的博物館,來也匆匆去也匆匆。這是遺留軟體的特徵之一。

因此,認識到一種時尚是很重要的,在接受技術之前應該仔細考量。

軟體為什麼會淪為遺留系統?

喜新厭舊

俗話說得好,情人眼裡出西施。在你眼中新技術充滿了優點,而回頭再看舊技術就會看到各種問題。要看到新技術的問題並不容易,然而經過多年的使用後,缺點就會顯現出來,因此對於新技術而言這些缺點並不明顯。

因此,在比較技術時,考慮技術的方方面面非常重要。雖然這很困難,但技術方面的強有力決策可以保護軟體免於淪落為遺留系統。

軟體為什麼會淪為遺留系統?

不必要的依賴和過於緊密的耦合

重用軟體很重要,在軟體生命周期中,能夠重複使用的部分會越來越多。因此,會產生一個不斷擴展的依賴項列表,通常這些依賴項都是包管理器(如maven或npm)引入的,或者是過於依賴Web服務的依賴項。

如果選擇依賴時太隨意,那麼這些軟體變成遺留系統的風險就會越來越大,這反過來又會導致依賴於該軟體的其他部分變成遺留系統。我們應該儘力避免不必要的依賴項。

相關問題是與依賴關係的緊密耦合。緊耦合意味著有很多代碼與依賴項交互,而且這種交互充滿了依賴項的細節。這種厚實而緊密的集成基本上意味著,軟體的命運與依賴項的命運息息相關。這種情況很常見,有時不可避免。但架構師應該仔細考慮是否真的需要緊耦合,如果沒有必要性,那麼就應該避免緊耦合,這樣可以在依賴項變成遺留系統時,保護軟體免於步後塵。

軟體為什麼會淪為遺留系統?

不必要的複雜架構

軟體架構是軟體開發中最高級別的結構。創建架構時所做的決定會產生長期影響,典型的例子是使用多種編程語言編程。現代Web應用程序可能需要合理地使用兩種或三種不同的編程語言,但使用六種或更多種編程語言很可能會造成架構不必要的複雜性。

如果架構過於複雜,那麼新來的開發人員就很難上手,這會導致代碼質量隨著時間的推移而不斷惡化。

根本原因還是系統過於難以理解,而且修改代碼時可能沒有考慮到體系結構的相關細節。擁有一個儘可能簡潔的架構可以減少這樣的問題。

軟體為什麼會淪為遺留系統?

編程語言中不必要的部分

開發者社區非常關注代碼的慣用寫法,慣用寫法會大力使用某種語言獨有的屬性,原因是人們相信慣用寫法的代碼更快,更不容易出錯。

殊不知,慣用寫法也有一些未知的弊端。首先,這些代碼完全依賴於特定的編程語言。當這種編程語言被淘汰時,這些代碼就變成了遺留問題。此外,如果代碼中包含的慣用寫法較少,而是採用了所有編程語言中更常見的結構,則更容易轉換成其他編程語言。

另一個問題是複雜性。大多數現代編程語言都非常複雜,如果你沒有在當前項目中遇到過這種情況,那麼可以看看在線的編程語言益智遊戲或測驗。大多數擁有10年以上經驗的牛人都掌握了大量編程語言的細節。他們的專業知識能夠針對某些問題提出非常緊湊的解決方案。如果某個技術不夠嫻熟的人遇到這樣的代碼,那麼他們將不得不花費幾個小時搜索谷歌和與同事討論,才能真正了解代碼的實質內容。而這些成本往往都會被忽略,但這確實是解決方案成本的一部分。雖然一個更為簡單的解決方案可能需要更多的代碼和時間,但將來不會產生這類的成本。

毋庸置疑,修改過於花哨的代碼很容易出錯。而為奇特的解決方案編寫代碼亦是如此。

有些公司通過編程指南、靜態分析和代碼審查來降低他們使用的編程語言的複雜性。這些方式只不過是通過禁用語言中的一些結構來降低編程語言的複雜性。然而,隨著時間的推移,這些指南都有可能改變和被人遺棄。

軟體為什麼會淪為遺留系統?

不限制開發人員

通常,軟體系統都擁有精心選擇的架構。新來的開發人員或技術水平比較低的開發人員可能不了解架構的決策。因此,開發人員可能會生成違反體系結構的代碼,從而創建更複雜的體系結構。這種架構的變遷會隱含在代碼中,因此其他開發人員並不知道。這會無形中增加複雜性。

換句話說,不限制開發人員通常都會增加系統的複雜性。

限制開發人員的方式有很多種。例如,根據開發人員的能力範圍進行分類。然後,將開發人員劃分到正確的分類。某些類別的修改應僅限於架構師。例如,選擇引入新的編程語言。

這些限制應該通過靜態分析輔助的代碼審查來強制執行,這是控制複雜性的一種方法。

軟體為什麼會淪為遺留系統?

沒有模塊化的軟體以及沒有範圍限制的模塊

模塊化軟體的意思是說,將軟體劃分成小塊,每一塊的範圍和大小都有限,而且責任明確。一直以來這種方式都很受歡迎,大多數人都贊同這種做法。

然而,隨著時間的推移,模塊會發展得過於龐大。其中一個原因是模塊不受限制。例如,如果某個模塊被限制為只包含無狀態函數,那麼它肯定不會超出該範圍。還有比如,限制模塊抽象與支付系統的交互。我們可以通過代碼審查確保這類限制。

軟體為什麼會淪為遺留系統?

總結

在本文中,我們的主要觀點是:軟體應該擁有一位架構師和技術主管,長期負責保護該軟體。這位架構師應該在選擇技術與處理技術變更時,做出謹慎而明智的決策。這位架構師應該確保軟體的模塊化,還要確保每個模塊只包含結構和編程語言必要的依賴性和複雜程度。從事這些模塊開發的工作人員應該了解模塊的範圍並遵循範圍要求。而這位技術主管可以主要通過代碼審查以及靜態分析來強制執行這些要求。

原文:https://www.progsbase.com/blog/top-10-reasons-your-software-became-legacy/

本文為 CSDN 翻譯,轉載請註明來源出處。

【END】

軟體為什麼會淪為遺留系統?

熱 文推 薦

?微軟為何痛失移動操作系統?

?漫畫:一文學會面試中常問的 IO 問題!

?滴滴章文嵩:不僅軟體開源,還向學界開放數據

?小米崔寶秋:小米 AIoT 深度擁抱開源

?獨家 | Vitalik Buterin:以太坊2.0之跨分片交易

?如何在標準的機器學習流程上玩出新花樣?

?面試官:你簡歷中寫用過docker,能說說容器和鏡像的區別嗎?

?C++、Python、Rust、Scala構建編譯器的差異性究竟有多大?

?馬雲曾經偶像,終於把阿里留下的1400億敗光了!

軟體為什麼會淪為遺留系統?

點擊閱讀原文,輸入關鍵詞,即可搜索您想要的 CSDN 文章。

軟體為什麼會淪為遺留系統?

你點的每個「在看」,我都認真當成了喜歡

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

5G 來了,需要更換 SIM 卡嗎?
「密碼已死!」

TAG:CSDN |