珍惜的寶藏,維護的痛苦,第 3 部分

在VORtech作為科學軟體工程師的實踐中,我們為那些將計算軟體作為其智力資本重要組成部分的組織工作。如果成功的話,這樣的計算軟體包可以存在很多年甚至幾十年。隨著時間的推移,它不斷發展。但同時,程式碼庫不斷成長並且變得越來越難以管理。維護和擴展這些遺留程式碼所需的工作量變得越來越大。這種情況甚至可能會上升到這樣的程度:儘管投資巨大,但從頭開始更換似乎是唯一的出路。

遺留程式碼

這是我們討論如何處理遺留程式碼的一系列部落格的第三部分。如何使其保持在可管理的狀態,以及如何在必要時恢復它。在第一篇部落格中,我們給出了對遺留軟體的願景,包括對價值的尊重、對歷史和現在的理解以及對老化軟體缺點的清晰願景。

在第二篇部落格中

我們討論了我們遇到的遺留程式碼的典型不良功能,以及這些功能如何隨著時間的推移滲透到程式碼中。在最後一篇部落格中,我們將描述可以採取哪些方法來提高程式碼的可持續性,以及我們讓遺產寶藏再次閃耀和繁榮的整體策略。

處理遺留程式碼的三種方法

在較高的層面上,可以選擇三種方法來繼續使用遺留應用程式:

封裝遺留程式碼核心被視為一個黑盒子

被打包在一個容器中,並且不再被打開。創建一個包裝器來負責對核心的訪問,最好使用現代語言(例如 Python)。
通常,這種方法可以滿足特定的用例,例如並行運行、與其他軟體或新使用者介面互動。

這種方法的優點是引入錯

誤和錯誤的風險相對較低。不涉及內核程式碼,重點是新功能的開發。這也使得初始投資比以下方法小。
另一方面,最終這種方法可能會導致更複雜(多應用程式、跨語言)的情況。由於核心保持不變,因此無法深入了解其功能。遺留代 外匯數據庫 碼被“木乃伊化”而不是“復活”,從長遠來看,它可能會導致更不靈活和不可行的情況。

 

特殊數據庫

 

復興程式碼逐漸重構到可管理的狀

並朝著更高的靈活性邁進。此重構過程中的典型步驟包括(不一定依此順序):
透過將功能分離為程式單元(例如使用者介面、檔案通訊、計算核心、管理層)來逐步模組化。努力實現單一職責原則,即每一部分程式碼(流程或函數)單獨執行一項任務。
測試套件的擴充。測試套件包含執行工作流程的測試案例,包括應支援的所有選項。它是所需功能的濃縮。因此,它鞏固了應用程式的行為,並保證在未來的開發中保留該行為。

可能:將(部分)程式碼遷移到現代語言

透過更高程度的模組化,這可以透過部分/漸進的方法來完成,這使得它比整個應用程式的完全遷移更易於管理。
納入新要求。透過模組化、改進的測試和遷移實現程式碼現代化,可以以顯著降低的成本滿足當前的需求和未來的前景。這些要求的例子包括
新應用、模型與功能

新介面或 GUI(例如基於 Web)

線程安全和並發

提高性能
在新平台上運行,例如在雲端運行或在加速器(GPU)上運行
這種方法的主要優點主要是它的漸進性和它的目標是復興遺留程式碼。將開發劃分為不同的階段並根據時間和結果進行管理相對容易。過程中,對程式碼用 建立聯絡人資料庫的好方法:綜合指南 途的了解不斷加深,程式碼文件也逐漸得到完善。遺產越來越多地被解鎖,並恢復了原來的光彩。大多數情況下,長期潛伏在程式碼中的隱藏錯誤會被發現並解決。隨著模組化程度的不斷提高,新的功能和需求可以更好地整合到程式碼中。

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *