電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 48|回復(fù): 0
收起左側(cè)

汽車行業(yè)為何采用ASPICE V型開發(fā),而不是敏捷開發(fā)?

[復(fù)制鏈接]

660

主題

660

帖子

4567

積分

四級(jí)會(huì)員

Rank: 4

積分
4567
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-11-19 08:01:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
* E: d  A2 }$ J- M
點(diǎn)擊上方藍(lán)色字體,關(guān)注我們+ u) ]2 b; A: R
關(guān)于這個(gè)問題主要聽到了兩種聲音:
8 b6 s8 z% t# ]
2 K" e5 c5 y+ Z% D( S" T6 l1 i一種視敏捷開發(fā)為豺狼虎豹,認(rèn)為敏捷開發(fā)就是“MMA”(無(wú)規(guī)則格斗),拋開一切規(guī)則擼起袖子使勁干,認(rèn)為使用敏捷開發(fā)的軟件都會(huì)存在嚴(yán)重的質(zhì)量問題,使用敏捷開發(fā)的公司都是草菅人命。
0 H2 K. g8 u+ c$ I) s, i% W
# p5 p% S# a7 }+ ^6 [7 w另一種聲音認(rèn)為單純的敏捷和現(xiàn)有的ASPICE都不完全適用域控開發(fā),應(yīng)采用V+敏捷的進(jìn)行結(jié)合,創(chuàng)新地根據(jù)公司實(shí)際情況適配,既不能完全按敏捷一套快速迭代,也不能僅僅為了通過BP而找補(bǔ)文檔。
( K( F& h( F$ c9 P$ u5 {# H! \3 n5 _% p3 j
對(duì)于第一種聲音,我個(gè)人只能說尊重百花齊放的意見,歡迎繼續(xù)評(píng)論?赡艽_實(shí)有MMA那樣的“敏捷開發(fā)”,但其實(shí)這種不叫敏捷,這種叫沒有開發(fā)流程。3 O7 }) O/ y) L0 x  a

+ |; }9 a6 z+ W% [% {. E還有動(dòng)不動(dòng)就說要ASPICE的,您真的過過審嗎?您知道里面的工作量有多少嗎?V可以,ASPICE?HELL NO!可能很多傳統(tǒng)汽車電子行業(yè)出身的工程師沒有真正使用過敏捷,這不是問題,怎么說呢,空杯心態(tài)很重要吧。
* s9 B$ P$ H% H$ D5 ~! f- a- t7 f8 t
對(duì)于第二種聲音,本人舉雙手雙腳贊成?梢园岩粋(gè)scrum看成一次小V,也可以通過FFI的方式把功能和監(jiān)控分開成兩個(gè)小項(xiàng)目實(shí)施,以達(dá)到功能安全的要求,還有建議把what to do部分V化,How to do部分scrum化,這具體展開就涉及到各家拆招的能力了,沒有統(tǒng)一答案,主要看各家practice上的經(jīng)驗(yàn)了。
2 z% X. ?) ]) t. p+ ^, g/ M
8 p! l. l* }' |9 H0 p7 ]開寫前先嘮兩句,只要與開發(fā)工程師多聊兩句,你就會(huì)很容易地發(fā)現(xiàn),開發(fā)工程師幾乎是一邊倒的支持敏捷開發(fā),筆者曾完整地參與過一次ASPICE認(rèn)證項(xiàng)目,也在敏捷模式下進(jìn)行過較長(zhǎng)時(shí)間開發(fā)。- X9 p# O* o+ I/ H/ |0 n

* k, ?9 H) M4 l% Z2 z從開發(fā)工程師的角度出發(fā),使用敏捷進(jìn)行開發(fā)的體驗(yàn)吊打ASPICE(或者V模型)九條街,但我們今天討論的話題是哪種模式更適合“更快更高質(zhì)量”地輸出產(chǎn)品,而不是哪個(gè)模式對(duì)工程師更友好。
8 C5 c) w8 c% c6 H7 h& Q) z0 Y
+ o% N+ ~! p4 v那么我們就來探討一下這兩種開發(fā)模式在域控時(shí)代的適應(yīng)性。# D( S' C8 Y& O( A
' c, W- Y4 Y( V( E: }, I8 H% O7 f
當(dāng)汽車電子電器架構(gòu)還處于分布式的年代,ASPICE(或V模型)可以說是唯一的答案,就沒聽說過哪家Tier 1或者OEM是使用敏捷去開發(fā)一個(gè)發(fā)動(dòng)機(jī)控制器的。! |2 {) N# d; m

$ J  }, |( F) t# T& l' g+ @9 |到了域控時(shí)代,新的玩家入場(chǎng),開發(fā)邏輯出現(xiàn)不同聲音,特斯拉,蔚小理等硅谷/互聯(lián)網(wǎng)背景出身的新玩家都使用敏捷進(jìn)行開發(fā),做出來的產(chǎn)品用戶體驗(yàn)確實(shí)讓消費(fèi)者有種“諾基亞轉(zhuǎn)安卓”的感覺,難道說敏捷就有如此大的魔力?可以給軟件賦予生命力?ASPICE和敏捷的差異和思路究竟在哪?5 f  A$ i' R* {
1; |  ^) h" _+ Z3 M7 V5 ^
ASPICE:堂正之師
( o) L5 M+ \+ b9 |1.1. 簡(jiǎn)述5 {" _' W2 g1 S- D* R' x" F7 T
ASPICE的核心思想就是DRIFT(Do things right in first time)。
$ M* }3 L- f2 |2 R) p/ O9 p$ Z/ w- n0 L) X9 U0 l  g" X
ASPICE認(rèn)為:" f3 j7 o+ p! W3 @: o5 ], q7 M
  • 軟件缺陷修復(fù)的成本是隨著軟件進(jìn)度的開展,成倍數(shù)級(jí)提升的,BUG越早發(fā)現(xiàn),成本越低;
    / _! p' m' s: `7 E* O
    , J# x$ y4 m" B. z

    # r1 C) G- `1 E) Y5 u# k5 ~2 ]. |9 x/ Z4 l
  • 在關(guān)鍵控制器上(比如動(dòng)力總成的ECU),某些Bug可能是致命的(字面意義上的)且難以被發(fā)現(xiàn)的,因此,對(duì)代碼的態(tài)度必須慎之又慎;
  • 傳統(tǒng)的合作關(guān)系上,通常是Tier1供控制器(Turn-key or Customer-sharing),OEM集成到車上,對(duì)于軟件這種無(wú)形的資產(chǎn),又是閉源交付,OEM管控是很難的,唯一的監(jiān)管方式就是交付物,所以ASPICE既是開發(fā)過程,也是質(zhì)量證據(jù)。+ j8 y) N) U7 C5 |- d

    . M) T) C: D; M* Y5 A+ {因此,ASPICE講究走一條最康莊平坦的大道。/ z' N3 F& o- j* r6 p
    ! V0 k! J- p6 o
    一份不偏離相關(guān)方(stakeholder)意圖的工程需求---->按照意圖,考慮所有corner case,基于選型芯片資源,設(shè)計(jì)考慮完備的軟件架構(gòu)---->將軟件架構(gòu)進(jìn)一步細(xì)化到模塊與函數(shù)級(jí)別的詳細(xì)設(shè)計(jì)---->與詳細(xì)設(shè)計(jì)思路一模一樣的編碼---->驗(yàn)證是否與詳細(xì)設(shè)計(jì)一致的單元測(cè)試---->驗(yàn)證是否與軟件架構(gòu)設(shè)計(jì)一致的集成測(cè)試---->驗(yàn)證是否與軟件需求一致的合格性測(cè)試。
      I4 O9 E+ w5 y# F" N/ t  N  v
    說白了,就是:
    : b3 {1 C5 U( o: R4 K" _
  • V左半邊:保證每一行代碼都能知道是為哪一條需求服務(wù)的。
  • V右半邊:保證每一行代碼都在正確的實(shí)現(xiàn)每一條需求。! S, h) m% f0 |/ t
    & \5 h9 y0 @/ u: L
      |6 L& R4 {1 p! f

    + ]  n' E7 h$ l1.2. ASPICE的缺點(diǎn)5 b) S$ g% f1 {1 b& N
    ASPICE統(tǒng)治了汽車軟件這么多年,自然有他的必要性與優(yōu)勢(shì),但ASPICE的缺點(diǎn)也非常致命。
    8 E* {" d' k. ]
    0 b& i. I) J' D2 z
    5 n# f5 a! E$ u) f# H$ y
    1. 難以擁抱變化
    9 e5 o5 B5 k, e3 `( v' R從上文可以看出,一套V模型擼下來,都是一環(huán)套一環(huán)的,下一步的輸出完全依賴上一步的輸入,如果需求發(fā)生了變更,而且需求還是與原需求互斥的,那整個(gè)項(xiàng)目的改動(dòng)量將是災(zāi)難性的。
    $ ?' m+ o+ @. d7 y% S) i
    6 x8 f' o! h8 c所以有些OEM的DRE可能會(huì)很疑惑,為什么看起來一個(gè)小小的CR(change request)發(fā)下去,會(huì)被Tier1告知一大筆的開發(fā)費(fèi)用,甚至是拒絕?流程可能就是其中一個(gè)原因。/ P) S( L; l: N& ^
    / O# s! Y) J4 F9 r
    只要代碼需要變更,好嘛,相應(yīng)的設(shè)計(jì)文檔作廢,重新設(shè)計(jì),測(cè)試重新做……想想都頭疼。而國(guó)內(nèi)的項(xiàng)目氛圍又是“最愛”擁抱變化的,hmmm……
    ) X( g( R8 j0 n( \0 q! b3 y: ` 7 Z# W- U, \! @0 P6 M  S+ L

    ) ?* Y' n8 ]. O, v! N% [2. 對(duì)人力消耗巨大
    1 L  L$ B6 B, G$ M) R我貼一下SWE.3(軟件詳細(xì)設(shè)計(jì)與單元開發(fā))的BP出來給大家感受一下。% h6 o/ r0 X7 d
    ) |/ y. h' d( Z% p, X2 G+ r

    ' x% @+ d- C; e8 H; l" e* y( a* n2 H, U% n1 X( g! |) Y
    隨便說幾個(gè)工作量大到離譜的:
    $ L: z; T+ x( l& b4 e' ?
  • BP3:很多時(shí)候模塊間交互是很難窮盡描述的,特別是大型軟件,應(yīng)用層,或者高聚低耦做得沒那么好的模塊,在不同場(chǎng)景,不同條件下,都可能走不同邏輯,整個(gè)交互路徑都窮舉一遍是很難的,畫出來的seq圖也很難閱讀
  • BP5:每一步的流程都要求這個(gè),做過的dddd(懂的都懂),有DOORS相對(duì)好點(diǎn),用excel去管理這玩意就是個(gè)災(zāi)難,還感覺沒什么卵用
    2 U/ r0 w/ w: A$ }" `' z1 F
    . t( L* p8 g) W; h2 a/ N( Z
    其實(shí)每個(gè)BP要求的工作量都很大,我做過大概的統(tǒng)計(jì),執(zhí)行ASPICE的人力需求是不執(zhí)行的3倍,除此以外,就像我之前說的,這個(gè)流程既是開發(fā)流程,也是質(zhì)量證據(jù),屬于監(jiān)管與被監(jiān)管的關(guān)系,繁重的文檔任務(wù)深深的打擊了工程師的積極性
    ! j0 b: U- e2 n' O: `28 t$ U; t1 g3 Q" O, ~) w
    敏捷開發(fā):短平快,擁抱變化
      |/ s" M- _4 P" V( n2.1. 簡(jiǎn)述
    # i* m# q1 [' b! r, g, g; L # r/ o- x6 b# T1 p4 Y+ ?" F7 H

    2 Z, s5 V* X4 C: L敏捷開發(fā)的核心邏輯是解構(gòu),把軟件需求分解成Epic or story,通過一輪開發(fā)迭代(sprint)實(shí)現(xiàn)相應(yīng)的功能。
    * M, g# b3 a( c( n2 }! b: l7 x1 A9 u% R# Q5 s2 W- o
    一輪sprint包含:需求確認(rèn)->方案制定->coding->臺(tái)架驗(yàn)證->實(shí)車驗(yàn)證->rolling candidate版本驗(yàn)證->代碼合入。
    0 s* W! u7 |+ `; p9 _9 z
    % p# D3 E2 z( K敏捷的優(yōu)點(diǎn)在于:$ n9 }5 d% W% v5 ]7 _' E' z/ ^% i
  • 擁抱不確定性,發(fā)生需求變更,那就直接來一輪sprint,如果還不夠,那就來兩輪;
  • 出活快,一個(gè)sprint的迭代以周為單位;
  • 充分調(diào)動(dòng)工程師積極性,(相對(duì))輕文檔,重代碼;
    2 q- L4 r7 Y  }- Z
    9 k4 r( L# A: ]* J9 x0 A4 |8 A
    2.2. 敏捷的缺點(diǎn). r7 g8 m/ p% w* Y
    說完敏捷這枚硬幣的正面,下面說他的反面。" ?) z6 q, \7 U" M1 k" j4 }
    - @: i8 S, d  X, P$ _4 B
    相比ASPICE或者V模型,敏捷少做的事情:
  • 缺少統(tǒng)籌全局的進(jìn)行軟件架構(gòu)設(shè)計(jì),導(dǎo)致模塊很難做到高類聚低耦合,比如Sprint A實(shí)現(xiàn)的一個(gè)功能,其底層模塊其實(shí)可以被Sprint B的某個(gè)功能部分復(fù)用,但由于Sprint A沒有考慮Sprint B的開發(fā)需求,所以該底層模塊并不能被完全復(fù)用,Sprint B可能就要重新開發(fā)一個(gè)底層模塊去覆蓋他自己的需求。多輪sprint下來,可能會(huì)有重復(fù)造相似輪子的情況出現(xiàn)。這樣會(huì)導(dǎo)致軟件比較臃腫,代碼量大,執(zhí)行效率低,且代碼質(zhì)量不高;
  • 缺少集成測(cè)試,導(dǎo)致新加的功能可能對(duì)已實(shí)現(xiàn)的功能有潛在的影響而不能被發(fā)現(xiàn);
  • 由于短平快的特性,很多時(shí)候單元測(cè)試也不能充分進(jìn)行,比如動(dòng)態(tài)單元測(cè)試;
  • 與FUSA的流程完全不兼容。ISO26262也好,ISO61508也好,ISO34590也好,都是植根于V模型,使用敏捷開發(fā)的軟件,很難滿足功能安全的開發(fā)要求,也無(wú)法做功能安全分析,無(wú)法做FFI。
    8 _. B2 \; d, r& Q; u8 Q[/ol]
    3 d2 T; E+ u! q, u3 n& O9 p3
    0 g  g* i. B! e誰(shuí)是自動(dòng)駕駛時(shí)代答案?0 H( L/ J% V2 v" K: I
    兩種開發(fā)流程各擅勝場(chǎng),也有其出現(xiàn)的背景,在傳統(tǒng)汽車時(shí)代,各個(gè)控制器沒有花哨的功能,但要求軟件穩(wěn)定可靠,這種情況下,使用ASPICE或者V模型進(jìn)行開發(fā)無(wú)疑是非常正確的。5 I+ |7 f8 {4 K6 m
    5 Z. Z$ P- J4 q. d$ V& L1 \& x
    域控時(shí)代的來臨,最主要的變化有三點(diǎn):
    $ q3 p) @1 v! a
  • 功能眾多:帶來的變化是軟件復(fù)雜度指數(shù)式上漲,相關(guān)方眾多;
  • 產(chǎn)業(yè)鏈合作關(guān)系改變:從一功能一盒子,由Tier1軟硬件一起交付,OEM負(fù)責(zé)集成,到所有功能集中在域控,Tier1只提供底軟和硬件,應(yīng)用軟件由Tier1,Tier2,OEM聯(lián)合開發(fā);
    % Z# g: k# g8 H$ R3 D) S; [4 \

    ) `* I: p8 N$ @# b6 X4 {2 O. m
    ( d3 R, I# j5 A3 z. u, k# S
    " l' ^$ f8 U: ?! Z' C7 g! f/ V! N, x' T( V6 ?- K
    我的觀點(diǎn)是:ASPICE不適合用于開發(fā)智駕域控軟件,敏捷相對(duì)更合適,但必須根據(jù)汽車軟件的特點(diǎn),進(jìn)行適配(一家之言,如果有使用ASPICE完整開發(fā)過智駕域控到SOP的經(jīng)驗(yàn),非常非常歡迎留言探討)。% s/ B  q7 @$ \( r: Y/ I' k
    ( L% }+ p9 `$ {2 ~9 w- \$ Q
    3.1. 為什么ASPICE不合適用于開發(fā)域控?6 I7 E6 e# \+ A7 Z0 B
    第一,ASPICE下對(duì)發(fā)生變更的代價(jià)是巨大的,因此需要一次把所有功能都定義,設(shè)計(jì)完美。
    0 V( a# ]) C; V
    ) Z) h% R" i8 W3 i2 U然而在域控這種軟件復(fù)雜度下,我不認(rèn)為有哪個(gè)人或者團(tuán)隊(duì)可以在項(xiàng)目開發(fā)初期,就能一次把所有的需求都定到完美。
    0 d$ }" M: E+ l% Q( ]( y3 @
    ! _4 l4 F$ W: H: Z! A不完美,后期增改功能,好嘛,又一輪完整的V迭代,所有文檔改掉,軟件配置管理做版本管理,恐怕需求沒開發(fā)完,工程師跑一大半了。
    7 U( G, G5 Y( i+ C
    0 t" v8 ^( I8 g7 M$ I4 i2 R: n2 H# _ % t9 H2 e& r7 W7 c

    8 k! O+ n4 Y8 O/ U第二,退一萬(wàn)步講,就算有優(yōu)秀的產(chǎn)品團(tuán)隊(duì)可以一次把所有需求縷清,肯定也需要漫長(zhǎng)的時(shí)間,試想下,兩家公司同時(shí)開始項(xiàng)目,使用敏捷的小步快跑,不斷試錯(cuò),都已經(jīng)有產(chǎn)品在投放市場(chǎng)了,使用ASPICE的可能還在需求制定階段……
    # g$ t" l+ L4 L! A' k
    % _' y2 p% `- \8 n, ]3.2. 敏捷開發(fā)需要做什么適配?* K+ Q0 V5 q+ X
    敏捷開發(fā)需要克服的困難主要在于提升軟件質(zhì)量和滿足功能安全要求。
    3 j( J' E6 C8 w; u5 |3 r, u& N) j+ O$ b& z" s6 ]
    并不是用敏捷開發(fā)出來的軟件架構(gòu)就會(huì)松散,臃腫,而是敏捷的環(huán)境讓工程師更容易輸出這樣的結(jié)果。: R$ X& L' u* b

    3 `; O- H$ j1 z/ \3 s8 n- ^所以我認(rèn)為以下措施的執(zhí)行能有效改善軟件質(zhì)量:
    1 s; h: I* k) x. q0 F# R4 `
  • 適當(dāng)延長(zhǎng)sprint周期;
  • 嚴(yán)格的編碼規(guī)范與培訓(xùn);
  • 使用TDD(測(cè)試驅(qū)動(dòng)開發(fā))思路
  • 強(qiáng)大的devops能力作為技術(shù)保證;
  • 引入自動(dòng)化單元檢查工具;
    - Q% y& N) I" r. Y8 m3 u
    % G9 {) z+ F/ P* h" E
    滿足功能安全要求,話只有一句,其實(shí)是個(gè)悖論,因?yàn)檐浖δ馨踩?V模型開發(fā)。
    ( {* e, N7 y5 f4 W% y; U1 `) X
    4 e7 e- D  z7 w& m. e可能的一個(gè)解決方案,是利用ISO26262中FFI的思路,通過前期技術(shù)規(guī)劃,將軟件架構(gòu)分解成功能。
    * ~4 Z+ {- @9 k- V0 }. }' r0 k8 K; y8 F( p- g$ m
    QM(D)和功能安全軟件D(D),功能分區(qū)使用敏捷開發(fā)小步快走,功能安全分區(qū)還是按V模型進(jìn)行開發(fā)(思路是這么個(gè)思路,但做軟件安全分析和安全架構(gòu)設(shè)計(jì)需要非常小心,而且僅適用于safety goal為fail safe的域控,如果L4以上需要做fail operational的,又不能這么玩了)。1 L) o2 o+ V$ r1 w+ C

    & m2 {+ C' f/ Z8 z
    6 @2 a  ]1 B3 Z1 X( H
    ) \% B& [% g: V' a$ D1 T) V/ W

    , d4 v  f8 S  T% G$ v7 k作者:FragmentedSword
    / h# P( s% }0 m+ h, e5 w/ a* T鏈接:https://www.zhihu.com/question/393230142/answer/2613414502
    # N5 r8 ?$ I; ?- w  v  Q來源:知乎/ S, i+ }* Z1 Q$ a/ u& }
    6 F3 c7 s2 n( W! \" `5 |, p9 t3 U

    % [4 X7 b: r+ d* o) h點(diǎn)擊閱讀原文,更精彩~
  • 發(fā)表回復(fù)

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表