大多數嵌入式軟件開發團隊在某個階段都需要使用遺留代碼,無論是出于成本考量,還是因為相比遷移到新代碼庫,復用現有代碼更為便捷。問題在于,遺留代碼的具體功能可能并不明確,這需要投入精力去理解,并編寫新的測試用例來驗證其是否仍能按預期運行。即使背景信息和測試用例仍然存在,遺留代碼也可能不符合當前的編碼規范,或無法滿足功能安全及安全標準的要求。
遺留代碼通常難以集成到其他系統、適配新數據格式或部署到現代平臺及云端托管環境。相關代碼可能已不再提供安全更新和補丁,供應商或開源社區的支持也可能逐漸減少甚至消失。然而,如果使用遺留代碼不可避免,以下是一些最佳實踐建議:
1.測試代碼
創建特征測試(Characterization Tests)和單元測試,并使用靜態代碼分析器等代碼質量工具,以理解代碼功能并揭示其在功能、性能、安全性和編碼標準合規性方面的問題。
2.審查文檔
檢查原始需求和功能說明,了解代碼的來源及其當前運行機制,識別可能不符合新用途的缺失部分。
3.僅重寫必要代碼
盡管重寫整個遺留代碼庫看似誘人,但此舉風險極高:既耗費時間,又可能因知識不完整而引入缺陷或依賴性問題。更好的策略是選擇性重寫。
4.重構遺留代碼
更務實的方案是逐步重構——在不影響代碼功能或外部行為的前提下調整其結構。重構還能生成更“整潔”的代碼,易于理解維護且更少出錯。
5.分階段實施變更
避免一次性過多修改,否則管理、測試和修復的復雜度會不必要地增加。通過限制變更范圍,評審者能更清晰地審查改動,而非淹沒在大量變更中。
6.開發者協作
即使并非所有團隊成員都熟悉特定遺留代碼,也應鼓勵團隊協作。這有助于共享代碼庫知識,同時減少時間和精力消耗,且“第二雙眼睛”的審查總是有益的。
7.保持新代碼規范
例如遵循企業編碼最佳實踐,并符合適用的編碼標準。
8.謹慎嘗試AI工具
為加速流程可考慮AI技術,但需保持警惕。AI能快速重寫遺留代碼,但其輸出可能因訓練數據和自身理解能力引入功能變化。不過,AI技術(如大語言模型LLM)正在持續改進,值得在結合人工解讀和專業經驗的前提下進行實驗。
9.借助權威資源
可參考Michael C. Feathers和Martin Fowler等專家關于遺留代碼和重構技術的著作。
未來維護建議
為避免遺留代碼的長期維護問題,在編寫或更新代碼時:
- 采用廣泛認可的編碼標準
- 編寫充分注釋和文檔化的代碼
- 使用版本控制系統管理和追蹤代碼變更
- 實施自動化持續測試,確保代碼隨時間推移仍保持功能性與可靠性
- 關鍵是通過安全編碼技術、安全測試及靜態分析工具(如Perforce的Helix QAC和Klocwork),遵循代碼安全最佳實踐,最大限度降低軟件生命周期內的安全風險。
總結
對許多嵌入式團隊而言,遺留代碼的復用不可避免。但通過采用經過驗證的技術和工具,混合新舊代碼的現代嵌入式項目仍能滿足安全與安規標準的要求。
-
嵌入式軟件
+關注
關注
4文章
245瀏覽量
27148 -
代碼
+關注
關注
30文章
4886瀏覽量
70216 -
軟件測試
+關注
關注
2文章
238瀏覽量
19020 -
嵌入式軟件開發
+關注
關注
0文章
10瀏覽量
2115
發布評論請先 登錄
嵌入式軟件開發中構件技術的研究

嵌入式軟件開發的優勢分析
嵌入式軟件開發做什么?嵌入式開發培訓學哪些

評論