金庸筆下的武俠世界里,掌握一門內(nèi)功心法是獨(dú)步武林的基礎(chǔ)。在汽車電子領(lǐng)域,也有著這樣的內(nèi)功心法——V模型的開發(fā)流程。
開發(fā)模型有很多,包括增量式、原型式、螺旋式、噴泉式、W模型等,但在實(shí)際開發(fā)中,V模型被應(yīng)用最多。所以,掌握好這門心法,才能更好地做好開發(fā)工作。
汽車開發(fā)的基本模式
你我都知道,在汽車開發(fā)過程中,汽車概念首先被分解成系統(tǒng)和組件,然后重新整合成整車,那么怎么拆就是一個問題。
當(dāng)前,新能源整車及三電系統(tǒng)的設(shè)計(jì)開發(fā)主要采納ASPICE V模型開發(fā)模式。
ASPICE全稱為“Automotive Software Process Improvement and Capacity Determination”,即汽車軟件過程改進(jìn)及能力測定模型,是汽車軟件的開發(fā)過程標(biāo)準(zhǔn)。
而V模型是一個軟件開發(fā)過程模型,它強(qiáng)調(diào)測試和軟件開發(fā)各階段之間的關(guān)系。在系統(tǒng)開發(fā)活動中,最為常見的開發(fā)模型是V模型。V模型因其開發(fā)過程展現(xiàn)的形式與英文字母“V”非常相似而得名。V模型具有與瀑布模型相同的順序設(shè)計(jì)過程,每個階段都必須在下一個階段開始前完成,同時相應(yīng)的測試計(jì)劃應(yīng)與對應(yīng)的開發(fā)階段并行進(jìn)行。
軟件開發(fā)V模型,圖源|《智能汽車:電子電氣架構(gòu)詳解》
V模型從瀑布模型而來,1970年溫斯頓·羅伊斯(Winston Royce)提出瀑布模型,將軟件生命周期分為若干階段和固定的順序,形如瀑布流水,最終得到軟件產(chǎn)品。
瀑布模型將軟件生命周期劃分為:制定計(jì)劃、需求分析、軟件設(shè)計(jì)、程序編寫、軟件測試、.運(yùn)行維護(hù)。
瀑布模型的優(yōu)點(diǎn)是為項(xiàng)目提供了按階段劃分的檢查瀑布模型查點(diǎn);當(dāng)前一階段完成后,只需要去關(guān)注后續(xù)階段;可在迭代模型中應(yīng)用瀑布模型。不過,瀑布模型各個階段的劃分完全固定,階段間產(chǎn)生大量文檔,極大增加工作量。此外,由于開發(fā)模型為線性的模型,用戶只有等到過程末期才能見到開發(fā)成果,從而增加開發(fā)風(fēng)險。更重要的是,早期錯誤可能要等到開發(fā)后期的測試階段才能發(fā)現(xiàn),進(jìn)而帶來嚴(yán)重后果。
V模型則是Kevin Forsberg & Harold Mooz在1978年提出,V模型強(qiáng)調(diào)測試在系統(tǒng)工程各個階段中的作用,并將系統(tǒng)分解和系統(tǒng)集成的過程通過測試彼此關(guān)聯(lián)。
實(shí)際生產(chǎn)中的V模型
不過,光是這么個模型,其實(shí)還是很理想化的模型,在實(shí)際生產(chǎn)中,V模型要復(fù)雜的多。
在實(shí)際的軟件開發(fā)過程中,鑒于測試驗(yàn)證的反復(fù)性、功能需求的迭代更新等多重因素,往往會涉及多個版本的發(fā)布。因此,真正的開發(fā)流程是由一系列相互關(guān)聯(lián)的“小V”模型串聯(lián)而成,這些“小V”模型共同構(gòu)建了一個更為宏觀、綜合的“大V”模型,以適應(yīng)軟件開發(fā)過程中的多樣性和復(fù)雜性。
復(fù)雜軟件開發(fā)模型示意,圖源|《智能汽車:電子電氣架構(gòu)詳解》
在實(shí)際運(yùn)作中,整車的開發(fā)任務(wù)又會被切割到各個域,然后又被逐漸分解到系統(tǒng)、部件,以及部件內(nèi)的組件(軟件、硬件、機(jī)械等),所以整個V模型會更為復(fù)雜。
如下圖所示,每個車型的研發(fā)周期可以看作一個獨(dú)立的“大V”模型,“大V”模型中的子研發(fā)階段(系統(tǒng)集成節(jié)點(diǎn)之間)可以看作“小V”模型。每個系統(tǒng)研發(fā)周期可以視作獨(dú)立的“大V”模型,它又由多個“小V”模型串聯(lián)而成。
整車開發(fā)中的V模型分解示意圖,圖源|《智能汽車:電子電氣架構(gòu)詳解》
V模型開發(fā)結(jié)構(gòu)明確劃分了設(shè)計(jì)開發(fā)與分析活動(位于模型左側(cè))以及設(shè)計(jì)結(jié)果的測試與驗(yàn)證活動(位于模型右側(cè)),兩側(cè)互為補(bǔ)充,共同構(gòu)建了一個完整且嚴(yán)謹(jǐn)?shù)拈_發(fā)流程。
從V模型結(jié)構(gòu)中,我們可以看出,測試驗(yàn)證環(huán)節(jié)與開發(fā)環(huán)節(jié)處于同等重要的地位,是系統(tǒng)開發(fā)中不可或缺的關(guān)鍵環(huán)節(jié)。
盡管當(dāng)前許多車企從互聯(lián)網(wǎng)領(lǐng)域借鑒并引入了“敏捷開發(fā)”的理念,但汽車類的設(shè)計(jì)開發(fā)流程依然以V模型作為其主干結(jié)構(gòu)。
ASPICE設(shè)計(jì)開發(fā)流程,圖源| RIO電驅(qū)動
V模型上的工具
那么在每個階段,又有什么工具,來支持各個階段的開發(fā)工作。以下是對這些階段的工作目標(biāo),常用工具鏈及其相應(yīng)的供應(yīng)商:
1. 需求分析階段
需求管理工具:DOORS(IBM),Jama Software,Polarion(Siemens)
需求建模工具:Enterprise Architect(Sparx Systems),MagicDraw(No Magic)
2. 系統(tǒng)設(shè)計(jì)階段
系統(tǒng)建模工具:Enterprise Architect(Sparx Systems),Rhapsody(IBM)
仿真和驗(yàn)證工具:Simulink(MathWorks),Modelica(OpenModelica)
3. 詳細(xì)設(shè)計(jì)階段
軟件設(shè)計(jì)工具:UML建模工具(如Enterprise Architect,MagicDraw)
硬件設(shè)計(jì)工具:Altium Designer,Cadence,Mentor Graphics(Siemens)
4. 實(shí)現(xiàn)階段
集成開發(fā)環(huán)境(IDE):Eclipse,Keil(Arm),IAR Embedded Workbench
版本控制工具:Git,SVN(Subversion),Jenkins
5. 單元測試階段
測試框架:Google Test,CppUnit,JUnit
測試覆蓋率工具:gcov(GCC),Bullseye Coverage
6. 集成測試階段
集成測試工具:Vector CANoe,National Instruments(NI TestStand),VT-System(Vector)
仿真工具:Simulink,MATLAB
7. 系統(tǒng)測試階段
測試管理工具:HP ALM(Application Lifecycle Management),JIRA
硬件在環(huán)(HIL)測試工具:dSPACE ,ETAS LABCAR ,Vector Informatik
8. 驗(yàn)收測試階段
工具鏈和供應(yīng)商:HP ALM,JIRA,TestRail(Gurock)
9. 維護(hù)階段
問題追蹤工具:JIRA,Bugzilla,Redmine
配置管理工具:Git,SVN,Perforce
把敏捷開發(fā)加入V模型
最近一段時間,汽車交付越來越快,甚至出現(xiàn)一年一車的盛況。V模型的局限性也越來越明顯,V模型的測試過程是在開發(fā)過程的后期進(jìn)行的,這意味著問題在測試階段被發(fā)現(xiàn)可能會導(dǎo)致較高的修復(fù)成本。
為了補(bǔ)足V模型的缺點(diǎn),將敏捷開發(fā)和V模型結(jié)合使用是全新的方法,也就是將敏捷原則嵌入到V模型中。
顧名思義,敏捷開發(fā)是一種迭代式、增量式的開發(fā)方法,強(qiáng)調(diào)對需求變化的快速響應(yīng)和持續(xù)交付有價值的軟件,將其用于產(chǎn)品的開發(fā),實(shí)現(xiàn)敏捷迭代。
通過結(jié)合敏捷開發(fā)和V模型,可以實(shí)現(xiàn)對汽車軟件開發(fā)過程的全面評估和改進(jìn),提高產(chǎn)品研發(fā)質(zhì)量和可靠性。
結(jié)合完大改長這樣:
原本按照V模型按部就班走,每個環(huán)節(jié)走得都不一樣快,走得快其實(shí)就可以有時間喘口氣等一等。當(dāng)加入敏捷思維之后,這基本是一種讓大家都閑不下來的方法,一段時間內(nèi)可能會比較容易提升效率和效果,但長久來看,如何通過激勵措施持續(xù)運(yùn)作下去會是一個問題。
轉(zhuǎn)變并非易事,汽車行業(yè)幾十年來一直遵循V模型開發(fā)流程,未來怎么融合,也是現(xiàn)階段在考慮的事情。原文:想做好汽車軟件開發(fā),先練好這個內(nèi)功
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實(shí),本站將立刻刪除。