|
vb3nqnvn11064012788817.gif (60.41 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
vb3nqnvn11064012788817.gif
2024-11-23 22:07 上傳
* 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
0e4455t32cb64012788918.jpg (66.25 KB, 下載次數(shù): 2)
下載附件
保存到相冊(cè)
0e4455t32cb64012788918.jpg
2024-11-23 22:07 上傳
# 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
5njz4d3bvyq64012789018.png (324.46 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
5njz4d3bvyq64012789018.png
2024-11-23 22:07 上傳
|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 z5 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: `
nby1tnaubdo64012789118.jpg (45.31 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
nby1tnaubdo64012789118.jpg
2024-11-23 22:07 上傳
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
vtey0nr5uro64012789218.jpg (321.56 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
vtey0nr5uro64012789218.jpg
2024-11-23 22:07 上傳
' 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
g0tgvmhbs0e64012789318.jpg (212.26 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
g0tgvmhbs0e64012789318.jpg
2024-11-23 22:07 上傳
# 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 }- Z9 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
ja3bwnmui2q64012789418.jpg (108.61 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
ja3bwnmui2q64012789418.jpg
2024-11-23 22:07 上傳
" 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# _
to0mqwpswrq64012789519.jpg (382.98 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
to0mqwpswrq64012789519.jpg
2024-11-23 22:07 上傳
% 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
asljdhitrfr64012789619.jpg (76.31 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
asljdhitrfr64012789619.jpg
2024-11-23 22:07 上傳
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& }
xw111uklxta64012789719.jpg (71.14 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
xw111uklxta64012789719.jpg
2024-11-23 22:07 上傳
6 F3 c7 s2 n( W! \" `5 |, p9 t3 U
zg20sumyw0l64012789819.gif (45.46 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
zg20sumyw0l64012789819.gif
2024-11-23 22:07 上傳
% [4 X7 b: r+ d* o) h點(diǎn)擊閱讀原文,更精彩~ |
|