車用系統中 OTA 軟體更新的風險
車用系統中 OTA 軟體更新的風險
OTA 更新將品質保證轉嫁給終端用戶
現代車輛中的空中下載 (OTA) 更新正日益導致關鍵的資訊娛樂與連通性功能的退化,實際上將客戶變成了無償的品質保證 (QA) 測試員。當製造商在缺乏嚴格測試門檻的情況下部署更新時,重要的功能——例如 Android Auto 和 Apple CarPlay——可能會失效,導致用戶在已購買的車輛中面臨功能減少的情況。
車用領域中「快速行動,破壞一切」的影響
在汽車產業中應用敏捷軟體開發方法論,導致了一種軟體快速發布並在事後修補的趨勢。這種方法雖然在 Web 應用程式中很成功,但通常與汽車這類高成本、長期的實體資產不相容。
- 失去實體護欄: 從歷史上看,發布有缺陷的軟體需要進行實體重新分發(光碟或召回),這會對組織造成巨大的財務成本。透過 OTA 更新消除這些成本後,降低了製造商在部署前確保軟體完美的動力。
- 測試門檻失效: 雖然有人認為短開發衝刺 (sprint) 並非問題所在,但缺乏強大的「測試門檻」和「負載測試 (load-bearing smoke tests)」使得退化問題能夠進入生產環境。
- 品牌侵蝕: 車輛中不穩定的軟體體驗會導致長期的品牌損害,因為一次糟糕的軟體更新可能會在多年內對客戶對整台車的看法產生負面影響。
軟體退化案例研究
現實世界的案例突顯了整合式車用軟體的穩定性問題:
- Android Auto 失效: 有報告指出 OTA 更新會導致 Android Auto 連通性完全中斷,需要手動干預或製造商支援。
- Kia EV9 問題: 用戶回報更新後導致 Apple CarPlay 在行駛幾分鐘後顯示空白畫面,隨後透過後續的 OTA 修補程式部分解決,但製造商並未就修復說明進行明確溝通。
關於軟體定義硬體 (Software-Defined Hardware) 的爭議
技術界正形成一種日益增長的共識:將離散、孤立的硬體功能移至由軟體驅動的螢幕後方,會增加故障的表面積。
"Don't put discrete, isolated HW functions behind a SW powered screen. It's that simple."
這種向「智慧」家電轉型的趨勢,導致了產品壽命感知的下降。一些用戶現在認為,任何包含程式碼的家電,在變得過時或不穩定之前,其功能壽命大約只有三年左右。
緩解 OTA 風險的策略
為了避免與車輛滾動發布 (rolling releases) 相關的不穩定性,用戶和開發者提出了幾種替代方案:
- 手動更新控制: 改為使用基於 USB 的更新,或提供實體的「連網」開關,讓用戶決定何時以及是否應該更新系統。
- 避免連網: 對於功能固定的家電,避免網路連線可以防止強制更新並保護系統目前的狀態。
- 透過開源工具解鎖功能: 在某些情況下,CarPlay 或 Android Auto 等功能存在於硬體中,但透過軟體標記 (flags) 被禁用。開源社群工具偶爾會被用於手動啟用這些功能,以繞過製造商的限制。
關於更新效率的技術觀點
一些開發者建議,完整 OS 更新的低效率是一個問題。一種改進 OTA 更新的理論性方法是採用混合系統,結合核心框架的 Ahead-of-Time (AOT) 編譯與針對選擇性修補程式碼的 Just-in-Time (JIT) 或解釋模式。這將允許快速、高效能的更新,而無需推送完整的系統映像檔,從而可能降低在修補過程中導致整個系統崩潰的風險。