單元 9 · SWE.2 軟體架構設計

freedom from interference、partitioning、層級架構

9.1 SWE.2 在做什麼

SWE.2 軟體架構設計:把軟體需求分配到架構元件,定義層級結構介面靜態/動態關係,並確保高 ASIL 元件不受干擾

對應 ISO 26262:Part 6 要求架構設計採分層、具可分解性,並證明freedom from interference

9.2 分層架構範式

應用層服務層驅動層硬體
職責ASIL 考量
應用層AEB 決策、TTC通常最高 ASIL(D)
服務層排程、通訊、日誌視分配而定
驅動層CAN、ADC、GPIO需證明不受其他層干擾

9.3 Freedom from Interference(免於干擾)

高 ASIL 元件要避免被其他元件「干擾」而失效,干擾面向包括:

干擾類型例子緩解
時序低優先任務拖垮安全任務優先權 + 靜態排程
記憶體越界覆寫安全資料MPU 分區、記憶體保護
資源CPU/匯流排壅塞頻寬預算與監視
通訊訊息錯誤/偽冒CRC、計數器、驗證
Partitioning(分區):用硬體(MPU/MMU)或軟體(Hypervisor、SafeOS)把不同 ASIL 的元件隔離,是達成免於干擾的主流做法。

9.4 架構中的安全機制

9.5 Worked Example:AEB 的架構設計

範例
┌─ 應用層 ─────────────────────────────┐
│ [AEB 決策](ASIL D)[警示](ASIL B) │
├─ 服務層 ─────────────────────────────┤
│ [SafeOS 排程](ASIL D)[通訊](ASIL C)│
├─ 驅動層 ─────────────────────────────┤
│ [CAN] [Watchdog] [GPIO](皆受 MPU 隔離)│
└──────────────────────────────────────┘
分配範例:
  SWR-AEB-011 → AEB 決策模組
  SWR-AEB-012 → 通訊層(雷達解析)
  SWR-AEB-014 → SafeOS 安全狀態管理
隔離:AEB 決策與警示模組位於不同 MPU 分區;
      Watchdog 獨立監視,逾時 → 強制安全狀態。

動手:畫出你專案的軟體架構圖,標出每個元件的 ASIL 與隔離方式。

9.6 深入原理:隔離要用失效路徑來證明

Freedom from interference 不是在架構圖上畫一條虛線,而是要回答低 ASIL 或非安全元件如何可能影響高 ASIL 元件,再逐一封鎖這些路徑。至少要檢查時間、記憶體、通訊與控制流:低優先任務是否能讓安全任務逾時?錯誤指標是否能覆寫安全資料?共享 buffer 是否有所有權與範圍檢查?重置、例外與診斷是否會把系統帶到不安全狀態?

干擾路徑證明問題常見證據
時間最壞執行時間是否仍滿足 FTTI?WCET、排程分析
記憶體是否能讀寫別的分區?MPU 設定、違規測試
通訊錯誤訊息會不會被信任?CRC、計數器、拒絕測試
控制非安全程式能否改安全狀態?權限設計、故障注入

9.7 Worked Example:共享記憶體的隔離檢查

範例
問題:QM 日誌任務與 ASIL D AEB 任務共享事件 buffer。
風險:日誌任務寫入超界,覆寫 AEB 的狀態旗標。
設計:分離記憶體區、只讀狀態快照、長度檢查、MPU 權限;
違規時觸發例外並進入預定安全狀態。
證據:靜態配置審查 + 越界故障注入 + 回歸測試報告。

9.8 練習

  1. 為你的架構各找一條時間、記憶體與通訊干擾路徑。
  2. 替每條路徑指定預防控制與偵測證據。
  3. 解釋為何「不同函式」不必然代表「獨立元件」。

9.9 交付物檢查清單

架構評審可使用「如果低 ASIL 元件失控,會怎麼影響高 ASIL 元件?」作為固定問題。答案必須落到權限、時間預算、介面驗證或故障反應,而不能只引用「已隔離」四個字。

看完這單元你應該能說出:
  • 設計分層軟體架構並分配需求。
  • 解釋 freedom from interference 與 partitioning。
  • 在架構中引入安全機制與監視路徑。

延伸閱讀

9.A 進階真實情境 Worked Example

進階範例:多 ASIL 等級混合的系統安全分析
系統:進階駕駛輔助系統(ADAS)
元件 ASIL 分配:
  雷達模組:ASIL C
  攝影機模組:ASIL B
  融合控制器:ASIL D
  顯示器(HMI):ASIL A

安全分析方法選擇:
┌────────────────────────────────────────────────────────────┐
│ 1. FMEA(Part 4 §7.4.4):                               │
│    目的:自下而上分析每個元件的故障模式                     │
│    應用:雷達模組的單一故障分析                            │
│    產出:FMEA 表格(含故障模式、影響、偵測率、RPN)       │
│                                                           │
│ 2. FTA(Part 4 §7.4.4):                                │
│    目的:自上而下分析頂端事件的因果鏈                       │
│    應用:「AEB 誤觸發」的頂端事件分析                     │
│    產出:FTA 邏輯樹(含 AND/OR 門、概率計算)             │
│                                                           │
│ 3. 安全矩陣分析(Part 9 §7):                            │
│    目的:識別 ASIL 分解後的獨立性要求                       │
│    應用:融合控制器的冗餘通道分析                          │
│    產出:安全矩陣(通道 A × 通道 B 的 ASIL 分配)         │
│                                                           │
│ 4. HAZOP(Part 9 §6):                                   │
│    目的:系統性識別偏離正常操作的危險                       │
│    應用:感測器融合演算法的邊界條件分析                     │
│    產出:HAZOP 工作表(含引導詞、偏離、原因、後果)       │
└────────────────────────────────────────────────────────────┘

多 ASIL 混合的關鍵挑戰:
  • 通訊通道的 ASIL 等級:取最高 ASIL(ASIL D)
  • 記憶體保護:按最高 ASIL(ASIL D)配置 MPU
  • 時間分区:按最嚴格的 FTTI(融合控制器:50ms)設計

9.B 深入原理擴充

ISO 26262 Part 9 §6-7 要求進行「安全分析」(Safety Analysis), 但未限定具體方法——FMEA、FTA、HAZOP、STPA 等均可接受。關鍵在於分析方法必須與 系統複雜度和 ASIL 等級匹配。

核心概念:「ASIL 等級继承」。當多個不同 ASIL 的元件共享通訊通道時, 通道的 ASIL 等級取最高值(Part 9 §5.4.3)。這是域控制器架構設計的關鍵約束—— 低 ASIL 元件的故障可能影響高 ASIL 元件的通訊。

9.C 診斷式疑難排解表

症狀可能原因解決方案
FMEA 結果與 FTA 結果不一致分析角度不同(自下而上 vs 自上而下)交叉驗證:FMEA 的高 RPN 項目必須在 FTA 中有對應的最小割集合
HAZOP 識別的危險場景過多引導詞(Guide Word)設定過於寬泛聚焦於安全關鍵場景,使用 ASIL 等級過濾低風險偏離
安全分析結果未更新到設計文件安全分析與設計流程脫節建立安全分析結果到設計文件的追溯機制,變更時同步更新

9.D 進階挑戰題

  1. 為 ADAS 系統的融合控制器撰寫完整的 FTA,頂端事件為「融合控制器輸出錯誤車速」。
  2. 若雷達模組(ASIL C)與攝影機模組(ASIL B)需要共享融合資料,設計通訊通道的 ASIL 等級分配方案。
  3. 比較 FMEA 與 STPA(Systems-Theoretic Process Analysis)的適用場景,各舉一例。