ASPICE vs Agile,誰是自動駕駛時代答案?
瀏覽:2185
來源 | 智能汽車設計
-
軟件缺陷修復的成本是隨著軟件進度的開展,成倍數級提升的,BUG越早發現,成本越低;
-
在關鍵控制器上(比如動力總成的ECU),某些Bug可能是致命的(字面意義上的)且難以被發現的,因此,對代碼的態度必須慎之又慎; -
傳統的合作關系上,通常是Tier1供控制器(Turn-key or Customer-sharing),OEM集成到車上,對于軟件這種無形的資產,又是閉源交付,OEM管控是很難的,唯一的監管方式就是交付物,所以ASPICE既是開發過程,也是質量證據。
-
V左半邊:保證每一行代碼都能知道是為哪一條需求服務的。 -
V右半邊:保證每一行代碼都在正確的實現每一條需求。
1.2. ASPICE的缺點
-
BP3:很多時候模塊間交互是很難窮盡描述的,特別是大型軟件,應用層,或者高聚低耦做得沒那么好的模塊,在不同場景,不同條件下,都可能走不同邏輯,整個交互路徑都窮舉一遍是很難的,畫出來的seq圖也很難閱讀 -
BP5:每一步的流程都要求這個,做過的dddd(懂的都懂),有DOORS相對好點,用excel去管理這玩意就是個災難,還感覺沒什么卵用
2. 敏捷開發:短平快,擁抱變化
2.1. 簡述
-
擁抱不確定性,發生需求變更,那就直接來一輪sprint,如果還不夠,那就來兩輪; -
出活快,一個sprint的迭代以周為單位; -
充分調動工程師積極性,(相對)輕文檔,重代碼;
2.2. 敏捷的缺點
-
缺少統籌全局的進行軟件架構設計,導致模塊很難做到高類聚低耦合,比如Sprint A實現的一個功能,其底層模塊其實可以被Sprint B的某個功能部分復用,但由于Sprint A沒有考慮Sprint B的開發需求,所以該底層模塊并不能被完全復用,Sprint B可能就要重新開發一個底層模塊去覆蓋他自己的需求。多輪sprint下來,可能會有重復造相似輪子的情況出現。這樣會導致軟件比較臃腫,代碼量大,執行效率低,且代碼質量不高;
-
缺少集成測試,導致新加的功能可能對已實現的功能有潛在的影響而不能被發現;
-
由于短平快的特性,很多時候單元測試也不能充分進行,比如動態單元測試;
-
與FUSA的流程完全不兼容。26262也好,61508也好,34590也好,都是植根于V模型,使用敏捷開發的軟件,很難滿足功能安全的開發要求,也無法做功能安全分析,無法做FFI。
3. 誰是自動駕駛時代答案?
-
功能眾多:帶來的變化是軟件復雜度指數式上漲,相關方眾多 -
產業鏈合作關系改變:從一功能一盒子,由Tier1軟硬件一起交付,OEM負責集成,到所有功能集中在域控,Tier1只提供底軟和硬件,應用軟件由Tier1,Tier2,OEM聯合開發
3.1. 為什么ASPICE不合適用于開發域控?
3.2. 敏捷開發需要做什么適配?
-
并不是用敏捷開發出來的軟件架構就會松散,臃腫,而是敏捷的環境讓工程師更容易輸出這樣的結果。所以我認為以下措施的執行能有效改善軟件質量: -
適當延長sprint周期; -
嚴格的編碼規范與培訓; -
使用TDD(測試驅動開發)思路 -
強大的devops能力作為技術保證; -
引入自動化單元檢查工具; -
滿足功能安全要求,話只有一句,其實是個悖論,因為軟件功能安全=V模型開發。可能的一個解決方案,是利用26262中FFI的思路,通過前期技術規劃,將軟件架構分解成功能:QM(D)和功能安全軟件D(D),功能分區使用敏捷開發小步快走,功能安全分區還是按V模型進行開發(思路是這么個思路,但做軟件安全分析和安全架構設計需要非常小心,而且僅適用于safety goal為fail safe的域控,如果L4以上需要做fail operational的,又不能這么玩了)。
技術鄰APP
工程師必備
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















