實際上,軟件現(xiàn)代化包括用更好的替換壞的漸進過程。選擇專注于軟件可移植性而不是條件編譯是現(xiàn)代化不可或缺的一部分。
考慮與部署平臺現(xiàn)代化相關的工作。假設最初在Windows上使用C++語言開發(fā)的應用程序現(xiàn)在需要集成到運行專有操作系統(tǒng)和ARM處理器的現(xiàn)代智能手機中。移植活動需要標識并替換 Microsoft 基礎類上的所有依賴項。它還必須分析和解決對Microsoft編譯器和Microsoft Windows實現(xiàn)的底層線程調度模型的所有依賴關系。雖然其中一些移植問題是由手機供應商的編譯器和鏈接器輸出的診斷消息識別的,但 Microsoft 和智能手機編譯器的代碼生成方法之間的細微差異只能通過對各自技術進行廣泛的測試和/或仔細審查和分析來檢測。同樣,Microsoft 和智能手機操作系統(tǒng)對線程調度隊列、互斥鎖和優(yōu)先級反轉避免策略的處理之間的差異必須取決于對各自操作系統(tǒng)和應用程序源代碼以及任何可用應用程序設計文檔的廣泛測試和/或仔細審查和分析。
請注意,通過獨立開發(fā)的可重用軟件組件的模塊化組合來構建新應用程序的能力取決于這些組件的可移植性。因此,實現(xiàn)軟件可移植性對于開發(fā)新系統(tǒng)和維護現(xiàn)有系統(tǒng)至關重要。
條件編譯增加了復雜性
對于典型的C++移植工作,必須更改以支持新平臺的代碼量相對較小,通常不到總代碼的 10%。找出必須更改的 10% 的線路是任何移植工作的最大障礙之一。隨著各種移植障礙的識別和解決,盡職盡責的軟件工程師通過插入有條件編譯的代碼塊并創(chuàng)建文檔來幫助闡明將此代碼移植到另一個平臺(如 Linux、INTEGRITY 或 VxWorks)可能需要的額外工作,從而使應用程序現(xiàn)代化。當然,不能保證從Windows到智能手機的端口可以識別到另一個操作系統(tǒng)或處理器的后續(xù)端口可能出現(xiàn)的所有問題。但是,從第一個端口中吸取的經(jīng)驗教訓為其他端口提供了寶貴的指導。
軟件現(xiàn)代化的一個相互沖突的目標是減少糾正錯誤、解決性能缺陷或隨著系統(tǒng)需求的發(fā)展添加增量新功能所需的工作量。通過插入條件編譯指令和每個新端口要考慮的問題的文檔列表來使應用程序變得可移植,這很難發(fā)展。如果對原始應用程序的更改影響有條件編譯的代碼,則必須將更改傳播到表示對每個相關平臺的支持的所有有條件編譯的代碼塊中。此外,每個增量更改都必須使用合法條件編譯選項的每個組合進行測試。這大大增加了與常見軟件維護活動相關的工作量。
可移植語言避免條件編譯
使用條件編譯指令的一種流行的替代方法是使用更可移植的編程語言實現(xiàn)軟件。Java通常是首選,許多人使用短語“軟件現(xiàn)代化”來描述將Ada,C或C++軟件遷移到Java語言的過程。Java,包括某些實時版本的Java,解決了Java運行時環(huán)境(所謂的虛擬機)本身的可移植性問題,而不是要求應用程序中的條件編譯指令。Java 語言甚至提供了用于解決多處理問題的特殊控制結構,包括用于識別互斥代碼區(qū)域的語法以及各個處理器緩存之間的一致性。通過抽象這些可移植性注意事項,Java 語言在典型的軟件維護活動中節(jié)省了大量成本。一個開發(fā)團隊報告說,與 C 語言相比,在一個項目中節(jié)省了 20 倍的成本,該項目包括組裝獨立開發(fā)的現(xiàn)成軟件組件以部署到新的嵌入式平臺上。
在一次整體式工作中將整個遺留應用程序重寫為 Java 語言在經(jīng)濟上很少可行。當今的典型應用程序由數(shù)十萬或數(shù)百萬行代碼組成;因此,以增量步驟對舊版應用程序進行現(xiàn)代化改造更為常見。隨著每個功能的添加,新功能都在Java中實現(xiàn),并固定在現(xiàn)有的遺留系統(tǒng)上。如果維護活動顯示遺留應用程序的特定方面難以移植或發(fā)展,則應用程序的一部分將替換為更現(xiàn)代的 Java 實現(xiàn)。
審核編輯:郭婷
-
智能手機
+關注
關注
66文章
18690瀏覽量
186044 -
操作系統(tǒng)
+關注
關注
37文章
7401瀏覽量
129279
發(fā)布評論請先 登錄
低成本高精度:組合導航系統(tǒng)如何重塑現(xiàn)代精準農(nóng)業(yè)
降低LDO功耗延長運行時間
宏集案例 | 加勒比最大石油企業(yè)如何用DataHub實現(xiàn)SCADA現(xiàn)代化與IoT設備集成?
利用DMA如何降低MCU功耗?
風華電阻:低成本與高穩(wěn)定性家電應用
SD-WAN如何幫助企業(yè)降低網(wǎng)絡運維成本?
Molex推出蜂窩柔性天線的特性與優(yōu)勢-赫聯(lián)電子
SMA連接器類型:低損耗款性能優(yōu)勢全解析
NetApp助力對象存儲現(xiàn)代化,提升速度、可擴展性和安全性
微型氣象站系統(tǒng):為智慧氣象建設和應急管理體系現(xiàn)代化提供關鍵技術支撐
現(xiàn)代化智慧農(nóng)業(yè)四情監(jiān)測設備方案
斑馬技術:84%決策者認為,倉儲現(xiàn)代化運營是當務之急
DS4830A光學微控制器技術手冊
如何最大限度地擴大基于氮化鎵 (GaN) 功率放大器的雷達系統(tǒng)的探測距離
密封測試儀:提高測試效率,降低成本
增量式軟件現(xiàn)代化可最大限度地降低風險,降低成本
評論