做(zuò)開(kāi)發也(yě)是(σσδshì)如(rú)此,除了(le)需要(yào)高(gāo)效的(de)編碼能(nén×✘'αg)力,同樣也(yě)離(lí)不(bù)開(kāi)編程思維的(de)指導。作(zuò)為(w™↕∏èi)剛剛進入汽車(chē)電(diàn÷★π$)子(zǐ)行(xíng)業(yè)的(d ♥e)開(kāi)發小(xiǎo)白(bái),本篇博文(wén)将總結最近(jìn)學 εφ習(xí)到(dào)的(de)汽車(chē)軟≈≈件(jiàn)行(xíng)業(yè)開(kāi)發思維:V模型。
1、V模型概述
汽車(chēΩΩ®♦)軟件(jiàn)開(kāi)發過程中的(de)V模型對(duì)行(xíng)業≤(yè)內(nèi)開(kāi)發者早已是(shì)司空(kōng)見(jiàn)£™慣的(de)模型,是(shì)由瀑布模型演變而來(lái)的(₹₩de),也(yě)是(shì)目前汽車(chē)行(xíng)業→λ&σ(yè)運用(yòng)最廣的(de)軟件(jiàn)$✔π開(kāi)發模型。由于該模型的(de)構圖形似字母V,所以•εσ俗稱V模型。V模型核心思想是(shì)通(tōng)過A"♣ -SPICE流程(汽車(chē)産業(yè>α)的(de)軟件(jiàn)流程改進和(hé)✔↑能(néng)力測定标準)來(lái)支持和(hé)管理(lǐ)整π®©"個(gè)開(kāi)發流程,從(cóng)需求到(dào)源代碼的(de☆<→×)每個(gè)過程都(dōu)有(yǒu)相(xiàng)應的(de)測試。
V模型大(dà)體(tǐ)可(kě)♠✘∞劃分(fēn)為(wèi)幾個(gè)不(bù)同的(deΩΩ¶)階段步驟即:功能(néng)需求、功能(néng)開(kāi)£₩發、軟件(jiàn)開(kāi)發、軟件(jiàn)集成測試、功能(nénδαg)集成測試、整車(chē)集成測試(系統合格↔±✘≥性測試),如(rú)下(xià)圖所示,左邊為(wèi)需求分(fēnβ )析和(hé)設計(jì)開(kāi)發的(de)過程,右邊則為(wèi)針>¥δ對(duì)左邊的(de)測試驗證,左邊的(de)每個(gè↕δ₹)過程是(shì)與右邊的(de)過程正好(hǎo)相(xiàng)對(€λ∏δduì)應。

2、V模型實施
2.1、系統需求分(÷αfēn)析
系統需λ¶求需要(yào)系統工(gōng)程師(shī)™∑完成。
基于項目的(d©≥> e)整體(tǐ)需求,以及軟硬件(jiàn)整體(tǐ)定義,對(duì)系統邏輯架 ¥↕構進行(xíng)整體(tǐ)定義,這(zhè)部分(fēn)工(gōng)作(zuò)♦£"包括:硬件(jiàn)功能(néng)定義,控制€≠≈(zhì)器(qì)與其他(tā)控制(zhì)器(qì)通(tōng)信定義,軟件(ji↔àn)簡要(yào)功能(néng)定義。這(↔∞β✘zhè)個(gè)過程并不(bù)會(huì)對(d✘©uì)具體(tǐ)的(de)技(jì)術(shù)實現(xiàn)做(zuò)出定義。
2.2、軟件(jiàn)需求分(fē£← 'n)析
× ±® 軟件(jiàn)需求需要(yào)系統工(gōng)程師(shī)完成。
系統工(gōng)程師(shī)根據系統相(©φ₽∑xiàng)關方需求說(shuō)明(míng)書(shū)、軟硬☆₹件(jiàn)接口文(wén)件(jiàn)≤÷≠、變更通(tōng)知(zhī)書(shū)等輸入,梳理(lǐ)定義軟件(jiàn)研""≈±發需求說(shuō)明(míng)書(shū),包括操作(zuò)系統需求、電(diàn)源管理(ε>↓lǐ)策略、傳感器(qì)讀(dú)取,執行(xíng)器(∞ ×γqì)控制(zhì)、信号特性需求、存儲服務、±>↕通(tōng)信服務,網絡管理(lǐ)、故障診斷、标定、程序升級等功能(néng)₽"♥需求和(hé)非功能(néng)需求。
根據項目規劃,制(z↓≥↓hì)定軟件(jiàn)開(kāi)發計(jì)劃。
軟件(jiàn)需>≠¥求分(fēn)析建立需求追蹤矩陣,将軟件(jiàn)需求映射到(dào)系統需求,确保軟∑↑件(jiàn)要(yào)實現(xiàn)的(de)系統需求全部覆蓋。✘ φφ
成功實施這(zhè)個¥'Ωγ(gè)過程的(de)結果如(rú)下(xià):
- 定義系統中分(©£♦fēn)配給軟件(jiàn)要(yào)素的(de)軟件(j ₩®↕iàn)需求及其接口;
- 将軟₩ δ∏件(jiàn)需求進行(xíng)分(fēn)類,并> ε分(fēn)析了(le)其正确性和(hé)可(kě)驗證性;
- 分(fēn)析軟件(jiàn)需求對(du↕♥ì)運行(xíng)環境的(de)影(yǐng)響;
- 定義軟件(jπ♠§iàn)需求實現(xiàn)的(de)優₩♦φ先級;
- 根據需要(yào)更新了(le)軟™↔ 件(jiàn)需求;
- 在系統需求與軟件(jiàn)需求&≤∏≠之間(jiān)、在系統架構設計(jì)與軟件(jiàn)需求之間(jiān)•§建立了(le)一(yī)緻性和(hé)雙向可(kě)追溯性;
- 從(cóng)成本、進度和Ω↔★(hé)技(jì)術(shù)影(yǐng)響來(lái)評估軟↓✘件(jiàn)需求;
φΩεδ- 約定了(le)軟件(jiàn)需求,并與所有(yǒu)受←'®€影(yǐng)響方溝通(tōng)。
2.3、軟件(jiàn)架構設計(jì)
軟件(jiàn)架構需要(yβ♥¶ào)架構工(gōng)程師(shī)完成。
為(wèi)了(le)建立清晰的(de)、結σφ±♥構化(huà)的(de)軟件(jiàn)設計(jì)<<<,應該統一(yī)分(fēn)配軟件(jiàn)需求©•↔,然後完成軟件(jiàn)架構設計(jì)。根據系統相(xiàng)關需求、軟硬件(ji×∏'àn)接口表、軟件(jiàn)需求确定軟件(jiàn)架構。将每條軟件(ji♦¥àn)需求合理(lǐ)分(fēn)配到(dào)軟件(jiàn)模塊中,定義每個(gè)軟件(j§₹↔γiàn)模塊的(de)輸入輸出接口、動态行(xíng)為(w♦<èi)、資源消耗目标等,評估多(duō)ε¶<種軟件(jiàn)架構的(de)優缺點等。
<£ 架構工(gōng)程師(shī)需要(yào)使用(yòng)EA等架構軟件(jiλ←★àn)畫(huà)出整個(gè)控制(zhì)器(qì ₩π )軟件(jiàn)所有(yǒu)模塊的(de)輸入輸出接口、以及內(nèi)↑φ部動态行(xíng)為(wèi)。
如(rú)果項目基于AU∑φ≥TOSAR開(kāi)發,需要(yào)架構工↓÷(gōng)程師(shī)配置應用(yòng)層的(de)所有(yǒu)組件(jiàn),并輸出₽&每個(gè)組件(jiàn)的(de)A ↑±RXML描述文(wén)件(jiàn)。
&nb÷₽✔sp;一(yī)般來(lái)說(shuō),•σ₽★還(hái)需要(yào)架構工(gōng)程師 α₹γ(shī)輸出架構文(wén)檔。
成功實施這(zh≤↓♠è)個(gè)過程的(de)結果如(rú)下(xià):
φ₹λ↔- 定義了(le)識别軟件(jiàn)要(yào)素的(de)軟 ♣↕$件(jiàn)架構設計(jì);
- 将軟件(jiàn)需求分(fēn)配βΩ♠$給軟件(jiàn)的(de)要(yào)素;
- 定義每個(g $↑è)軟件(jiàn)要(yào)素的(de)接口;
- 定義軟件(jiàn)要"λ(yào)素的(de)動态行(xíng)為(wèi)和(hé)資源消<™§耗目标;
¶♦©- 建立軟件(jiàn)需求與軟件(jiàn)架構設計(jì)之間(jiān)的(de)一(yī≤₹ λ)緻性和(hé)雙向可(kě)追溯性;
- 約定軟件(jiàn)架構設∏€α計(jì),并與所有(yǒu)受影(yǐng)響方溝通(tōng)。
2.4、軟件(jiàn)單元設計(jì)和(hé)軟件(jiàn)→'§實現(xiàn)
軟件(jiàn)單元設計(™¶ βjì)需要(yào)軟件(jiàn)開(kāi)∞×∑≥發工(gōng)程師(shī)完成。
✘α在此階段,需要(yào)對(duì)每個(gè)組件(jiàn)內(nèi)部的(de)算(s&♣$uàn)法邏輯進行(xíng)詳細的(de)內(nèi)部設計(jì)。¶✘組件(jiàn)功能(néng)的(de)詳細設↔↔ 計(jì)需要(yào)與軟件(jiàn)需求建立有(y₹πǒu)效的(de)對(duì)應關系。
如(>♥ rú)果是(shì)算(suàn)法邏輯編碼,建議(yì)使>¶×₩用(yòng)Matlab進行(xíng)模型開(kāi)發,如(rú)果★§是(shì)接近(jìn)底層的(de)複雜(zá)驅動,一(yī)般是(shì)γ₩←♠使用(yòng)手寫代碼。
如(rú)果項目使用(yòng)A§✔ε¥UTOSAR架構,使用(yòng)模型開(kāi)發時(♠©'≤shí)需要(yào)導入arxml生(shēng)成模型框架₩>進行(xíng)開(kāi)發,使用(yòng)手寫代碼進行(xíng)開(kāi∑•&±)發時(shí)需要(yào)使用(yòng)AUTOSAR工(gōng)具生(sh≠δēng)成的(de)組件(jiàn)代碼框架±∑♦進行(xíng)開(kāi)發。
需要(yào)将代碼經過多(duō)φ>次代碼審查和(hé)優化(huà)之後,将最終版本上(shàng)傳至代碼庫,以實現(x∑→δiàn)最佳的(de)可(kě)靠性和(hé)性能(né≈↓ng)。
成功實施這(zhè)個(gè)過程的σ<(de)結果如(rú)下(xià):
&₹ > - 開(kāi)發描述軟件(jiàn)單元的(γde)詳細設計(jì);
- 定✔↔義各軟件(jiàn)單元的(de)接口;
- 定義 £₩軟件(jiàn)單元的(de)動态行(xíng)為(wèi);
- 建立☆÷←σ軟件(jiàn)需求與軟件(jiàn)單元之間(ji ←ān)的(de)一(yī)緻性和(hé)雙向可(kě)追溯性;建立軟件( ©jiàn)架構設計(jì)與軟件(jiàn)詳細設計(jì)之間(jλ♣∞£iān)的(de)一(yī)緻性和(h陕→♦)雙向可(kě)追溯性;建立軟件(jiàn)詳細設計(jì)與軟件♣←↔(jiàn)單元之間(jiān)一(yī)€緻性和(hé)雙向可(kě)追溯性;
- 約定軟件(jiàn)詳細設∑π"計(jì)及該設計(jì)與軟件(jiàn)架構設計(jì)的(deφ∞↔∏)關系,并和(hé)所有(yǒu)受影(yǐng)響方溝通(tōng);
- 生(shēng)成軟件(jiàn)詳₽₩Ω細設計(jì)所定義的(de)軟件(jiàn)單元。
2.5、軟件(jiàn)單元測試
組件(jiàn)單元測試一(yī)般需要(yào)軟♥φδ件(jiàn)開(kāi)發工(gōng)程師(shī)完成,也(yě)可(kě)以&✔讓測試工(gōng)程師(shī)完成。
當進<<>¥行(xíng)單元測試通(tōng)過後,将會(huì)将軟件≤♣(jiàn)編譯成ECU可(kě)執行(xíng)的(de)文(wén)件(₽↕≠₽jiàn),比如(rú)Hex格式的(de)文(w ≠én)件(jiàn),将其刷寫到(dào)ECU進行(xíng)集成測試(或稱HIL測試),如↓≠×(rú)果隻是(shì)測試底層軟件(jiàn),那(nà)麽一(yī)般隻需要(y ào)額外(wài)的(de)硬件(jiàn)負載箱支持就(jiù)行(xíng),比如(<∞σδrú)用(yòng)負載箱來(lái)模拟一(yī)些(xiē)傳感器(qì)信号輸入,或制(z'<®hì)造一(yī)些(xiē)執行(xíng)器(qì)♥≤↓>的(de)短(duǎn)路(lù)和(hé)開(kāi)路(lùΩ)故障;如(rú)果測試包括應用(yòng)層軟件(jiàn),那(nà)麽就(jiù)€↓φ還(hái)需要(yào)物(wù)理(lǐ)模型支持才行(xíng),比如(r∞✘↑ú)電(diàn)機(jī)控制(zhì)就(jiù)需要(yào)電(diàn$®)機(jī)的(de)物(wù)理(lǐ)模型,變速箱控制₩←☆(zhì)可(kě)能(néng)就(jiù) 需要(yào)整個(gè® '•)動力傳動系統的(de)模型才行(xín™φ₽g)。
單元測試與軟件(jiàn)單元設計(jì)對(duì)應¥<。
單元測試是(shì)根據軟件(jiàn♥"∑♠)單元設計(jì),進行(xíng)代碼級别上(s±∏hàng)進行(xíng)的(de)測試。
單元測試↑σ一(yī)般可(kě)以通(tōng)過Matl♠α₹ab和(hé)Tessy等工(gōng)具進行(xíng)。
成功實施這(zhè)個(gè)過程 β的(de)結果如(rú)下(xià):
- ♥♥'♦制(zhì)訂包括回歸策略在內(nèi)的(de)軟件(jiàn)單元驗證策略,以驗證軟件(j↑Ω♦iàn)單元;
- 根據軟件(jiàn)單元驗證策略,制(↓✘×≤zhì)訂軟件(jiàn)單元驗證準則,以适于提供軟件(jiàn)單元符合軟件(jiàn)詳細設ε≤π$計(jì)及非功能(néng)性軟件(jiàn)需求的(de)證♣±據;
&nb$ α'sp;- 根據軟件(jiàn)單元驗證策略及軟件(jiàn)單元驗證準則,驗證軟件←ε(jiàn)單元并記錄了(le)結果;
&nb•sp;- 建立軟件(jiàn)單元、驗證準則及驗證結果之間(jiān)的(de)雙ε≥→∑向可(kě)追溯性和(hé)一(yī)緻性;
- 總結單元驗證結果,并與所有(y♠αǒu)受影(yǐng)響方溝通(tōng)。
2.6、軟件(jiàn)集成測試
集成測試需要(yào)測試δ<÷工(gōng)程師(shī)完成。
集成測試與軟件↔ε(jiàn)需求對(duì)應。
集成測試将各個(gè)組成部分(∏φγγfēn)整合入一(yī)個(gè)軟件(jiàn)系統中之後,最後進行(xín€≈∏g)軟件(jiàn)的(de)集成測試。根據定義的(de)需求,測±σ✔試相(xiàng)應的(de)功能(néng)是(shì)否滿足軟件(jiàn)需求。&♦
成功實施本過程的(de)結果如(r><•ú)下(xià):
&n "¶≤bsp; - 制(zhì)訂與項目計(jì)劃、發布計(jì)劃和(hé)軟件(ji♥≥'∑àn)架構設計(jì)相(xiàng)一(yī)緻的(d÷₩e)軟件(jiàn)集成策略,以集成軟件(j ←iàn)項;
&nb¶↓≈ sp; - 制(zhì)訂包括軟件(jiàn)回歸測試策略在內(nè♠λi)的(de)軟件(jiàn)集成測試策略,以測試軟件(jiàn)單元之間(jiā♥≈↑n)和(hé)軟件(jiàn)項之間(jiān)的(de)>↔交互;
- 根據軟件(jiàn)集成測試策略✔×,開(kāi)發了(le)軟件(jiàn)集成測試規範,以适于提供集成的(de)軟件(jiàn)項σ₩∞♣符合軟件(jiàn)架構設計(jì)(包括軟件(jiàn)單元之間(jiān)和(hé)軟<♣♥件(jiàn)項之間(jiān)的(de)↓接口)的(de)證據;
£♦€∏ - 根據集成策略集成了(le)軟件(jiàn)單元和(hé)軟件(jiàn∑λ)項直至完整的(de)集成軟件(jiàn);
- 根據軟件(jiàn)集成測試策略和(≠hé)發布計(jì)劃,選擇了(le)軟件(jiàn€↔γ)集成測試規範中的(de)測試用(yòng)例;
- 使用(yòng)選定的(de)♦♣≥↔測試用(yòng)例測試了(le)集成的(de)軟件(j↑εiàn)項,并記錄了(le)測試結果;
- 建立軟件(ji≈≤÷↓àn)架構設計(jì)要(yào)素與軟件(jiàn)集成$♦測試規範中的(de)測試用(yòng)例之間(j↑≈↕≈iān)的(de)一(yī)緻性和(hé)雙向可(kě)追溯性,并建立了(le)測試™♠用(yòng)例與測試結果之間(jiān)的(de)一(yī)緻性和(hé)↓★≈&雙向可(kě)追溯性;
σ× - 總結軟件(jiàn)集成測試結∞☆₽果,并與所有(yǒu)受影(yǐng)響方溝通(tōng)。
2.7、軟件(jiàn)系統測試
系統測試需要(yào)測試工(♦↔₽₩gōng)程師(shī)完成。
&nbs×Ω•p;系統測試與系統需求對(duì)應。
因為(wèi)軟件(jiàn)給各個(gσεεè)ECU提供了(le)相(xiàng)應的(de)&×功能(néng),因此在集成測試中,需要(yào)将軟件≠∞&(jiàn)燒錄至硬件(jiàn)中。然後E≤♦CU要(yào)與其他(tā)電(diàn)子(zǐ)系統組件(j♣♠iàn)集成起來(lái),比如(rú)傳感器(qì)和(hé €)執行(xíng)器(qì)。在接下(xià)來(lái)的(de)系統綜合測 ♥$≤試中,對(duì)所有(yǒu)系統設備的(de)交互響應進行(xíng)評估ε¶ 。
成功實施本過程的(de)結果如←α(rú)下(xià):
- 制(zhì)訂與項目計(jì)劃和(↔✔ ✔hé)發布計(jì)劃相(xiàng)一(yī)緻的(de)包括回歸測試策≤÷略在內(nèi)的(de)軟件(jiàn)合格性測試策略,以測試集成軟件(jiàn);
- 根據軟件(jiàn)合格性測試♣£↕策略,開(kāi)發集成軟件(jiàn)的(de)軟件(jiàn)合格性測試規範,以适©✔•于提供符合軟件(jiàn)需求的(de)γ€₽證據;
&nb¶↑sp;- 根據軟件(jiàn)合格性測試策略和(hé)÷₹發布計(jì)劃,選擇了(le)軟件(jiàn)合格性測試規範中的(de₽>←)測試用(yòng)例;
- 使用(yòng)選定的(de£α)測試用(yòng)例測試了(le)集成軟件(jiàn),并記錄軟件(jiàn)合格性測試結果; &'≈
♠δσ- 建立軟件(jiàn)需求與軟件(jiàn)合格性測試☆×規範中的(de)測試用(yòng)例之間(jiān)的(de)一(yī$↑)緻性和(hé)雙向可(kě)追溯性,建立測試用(yòng)例與測試結果之間☆∑π (jiān)的(de)一(yī)緻性和(hé)雙向的(de)可≠≥(kě)追溯性;
- 總結軟件(jiàn)合格性測試結果,并與<₹所有(yǒu)受影(yǐng)響方溝通(tōng)。
3、V模型的(de)追溯性和(hé)一(yī)緻性要(yào)求
&n↓₩bsp;汽車(chē)軟件(jiàn)開(kāi)發的(de)過程中有(yǒβ∑u)嚴格的(de)追溯性和(hé)一(yī)緻性要(yà≠∏o)求,每個(gè)階段的(de)過程要(y≈γβ'ào)求、使用(yòng)的(de)工(gōng)具方↕ φ™法和(hé)人(rén)員(yuán)要(yào)求,前一(yī)階段的(de)輸出交付物(w₽£ù)作(zuò)為(wèi)下(xià)一(yī)階段輸入,在每個(gè)階段完成後對(d®≥uì)交付物(wù)進行(xíng)驗證,在軟件(jiàn)集成後在最後階段進行(xín₹§↓ g)确認與軟件(jiàn)需求的(de)一(yī)緻性。概覽如(rú)下(xià)圖所示:
4、V模型面臨的(de)挑戰
 ≥☆;特斯拉人(rén)工(gōng)智能(néng)總監Andrej Karparthy在他(₩β✘tā)的(de)一(yī)篇技(jì)術(shù)博客中§λ™☆提出構建軟件(jiàn)2.0技(jì)術(shù)棧的(≠≤εde)觀點,代碼正在從(cóng)軟件(jiàn) 1.0(♦ ♠λ由人(rén)類編寫的(de)代碼)過渡到(dào)軟件(ji¥'≠àn) 2.0(由優化(huà)編寫的(de↓↕↔☆)代碼,以神經網絡訓練的(de)形式編寫)。
&nbs↕÷∑&p;軟件(jiàn)1.0 是(shì)我們熟悉<∏×的(de)V模型,它是(shì)用(yòng) Python、C++、C等語言書(shū)δ≠寫的(de)。它包括程序員(yuán)對(duì)計(jì)算(suàn)機(jī)∞β♠的(de)明(míng)确說(shuō)明(míng),通(tōng)過編寫每行(xíng)代碼∞,程序員(yuán)會(huì)用(yòng)一(✔±™±yī)些(xiē)可(kě)取的(de)行(xíng)λ為(wèi)識别程序空(kōng)間(jiā¶♦>∞n)中的(de)特定點。
軟件(jiàn)1.0的(de)≤♣β∏工(gōng)程方法遵循以下(xià)4個(gè)步驟:
-
确定要(yào)解決的(de)問(wèn)題,即需求;
-
把需求進行(xíng)分(fēn)解;
-
為(wèi)每個(gè)分(fēn)解的(de )需求設計(jì)軟件(jiàn);
-
逐級測試,集成并部署軟件(jiàn)。
軟件(jiàn)2.0時(shí)代正在 ♣逐漸到(dào)來(lái),目前AI算(suàn)法大(dà)量應用(yòng)于自(zì ÷)然語言識别、行(xíng)為(wèi)分(fēn)析、決策協助、身(shēn)份識别等α↓♣不(bù)涉及公衆安全的(de)領域,也(yě↔₩•)在自(zì)動駕駛、醫(yī)療診斷等安全領域也(< yě)在逐步應用(yòng)。對(duì)于×€安全關鍵系統,系統工(gōng)程方法學¶&是(shì)否還(hái)适合軟件(jià↔♥n)2.0時(shí)代,功能(néng)安全标準如(rú)IEC61508、ISOδ∏✘↓26262、EN50128不(bù)同行(xíng)業(yè)安全軟件(jiàn)開(k§āi)發所遵循的(de)标準,是(shì)否還(hái)能(néng)指導軟件(jiàn)2φ∑.0的(de)開(kāi)發實踐,下(xià)面從(cóng)開(kā'≠§✘i)發過程、軟件(jiàn)需求、開(kāi)發工&≤(gōng)具三個(gè)方面談談想法。
軟件(jiàn)1.0♦£λ☆的(de)開(kāi)發生(shēng)命周期模型按照(zhào)系統工(gōng)程V∑≠模型的(de)方式開(kāi)發,從(cóng)上(shàng)到(dào)下(xià)是(shìπ₹)瀑布式的(de),規定每個(gè)階段的(dγ∞↑e)過程要(yào)求、使用(yòng)的(d←≥'∑e)工(gōng)具方法和(hé)人(rén)員(yuán)要(yào)求,前'€≥β一(yī)階段的(de)輸出交付物(wù)作(zuò)為(wèi)下(xià)一(yΩī)階段輸入,在每個(gè)階段完成後對(duì)交付物(wù☆λ←©)進行(xíng)驗證,在軟件(jiàn)集成後在最後階段進行(xíng)确認與軟件(↓✘™€jiàn)需求的(de)一(yī)緻性。在實際應用(yòng)中,設計(jì'₹≤)實現(xiàn)階段和(hé)測試階段,會(huì)規劃小(xiǎo)版本之±&±★間(jiān)的(de)叠代,從(cóng)整體(tǐ)過程來(lái)看(kàn)還( βhái)是(shì)V模型。

軟件(jiàn)¶♠2.0的(de)開(kāi)發模型始于數(shù)據,可(kě)以劃♣$分(fēn)為(wèi)數(shù)據管理(€☆±lǐ)、模型訓練、模型驗證、模型部署,這(zhè)四個(gè)階¥£$段不(bù)斷往複叠代,不(bù)是(shì)一(yī)次性完成的(de)。
數(shù)據管理(l✔"ǐ):先建立所需數(shù)據集的(de)要(yà↔φ×Ωo)求,通(tōng)過對(duì)數(shù)據的(de)分λ'≈(fēn)析确定數(shù)據收集、增強和(hé)預處理(lǐ)的(de)需求,收集什(s ™↔hén)麽數(shù)據,如(rú)何收集數(shù)據,如(rú)何解決樣本數(s≤γ±₹hù)不(bù)足,收集成本過高(gāo)的(de)問(wèn)題,如(rú)何對(duì)收集的α↕(de)數(shù)據清洗預處理(lǐ)。
模型訓練:選擇所使用(yòng)的(de)模型,構建損失函數(shù)作(zuò)為(wèi)訓練誤差的(₩✔de)衡量标準,訓練的(de)目的(de)是(shì)産生(shēng)一♦↓ (yī)個(gè)最小(xiǎo)化(huà)該誤差的(de)模≤↓¥₽型。需要(yào)制(zhì)定一(yī)個(gè)合适的(de)數(§ ¶shù)據拆分(fēn)策略,用(yòng)于訓練模型、驗♠∞證模型、測試模型的(de)比例。
模型驗證:針對(duì)數(shù)據管理(lǐ)階段産生(shēng)的(de)∏δ•Ω獨立于訓練數(shù)據集的(de)驗證數(shù)據集,通(tōng)過測試評估♥©♣訓練模型的(de)性能(néng)。
&nb>≠sp;模型部署:使用(yòng)驗證過的(de)模型的(de)系統将被集成,将經過驗證λ>的(de)ML模型與使用(yòng)傳統軟件(jiàn)工(gōng)程方 ∞$∞法開(kāi)發和(hé)驗證的(de)系統組件(jiàn)進行(xíng)整合×€₹,對(duì)其運行(xíng)進行(xíng)監控,并通(tō↓≤ ®ng)過在線維護或在線學習(xí)進行(xíng)更新。
4.2、軟件(jiàn)2.0新的(de)軟件(jiàn)需求:數(shù)據集
既然軟∞ 件(jiàn)2.0的(de)系統行(xíng)為(wèi)主要(yào)由數(shù)據§集決定,系統是(shì)否符合其預期功能(néng),很(hěn)大(dà)程度上(shà&♣✘ng)取決于數(shù)據集的(de)質量。要(yào)證明(míng)φ≥數(shù)據集對(duì)于軟件(jiàn)的(de)預期功能(néng)在¶™ 系統的(de)操作(zuò)環境下(xià)是(shì)足夠的(de),對(d✔♦βuì)于認證來(lái)說(shuō)是(♣$±shì)非常大(dà)的(de)挑戰。與軟件(jiàn)1.0的↔ ♦(de)需求對(duì)比,有(yǒu)以下(xià)不(bù)同:
₹☆"- 确定軟件(jiàn)需求不(bù)是(shì)在需求階₹✔★段,而是(shì)在軟件(jiàn)開(kāi)發階段,對(duì)軟件(jiàn)設計∏∏↔β(jì)實現(xiàn)的(de)輸入将不(bù★¥✔€)是(shì)軟件(jiàn)的(de)功能(✘©∏∑néng)需求,而是(shì)訓練過程的(de)輸出。如(rú)一(yī)個(gè)神經網絡架構π↓≥♣、權重和(hé)偏差。
- 需求和(hé)設計(jì)∏$×實現(xiàn)不(bù)具備可(kě)追溯性,神經網絡結構和(hé)權重不™∑♣β(bù)能(néng)追溯到(dào)開(kāi)發它們的(de)軟件(jiàn)需求,追 ≤←溯不(bù)到(dào)描述預期屬性的(de)需求文(wén)件(jiàn),☆≠<也(yě)追溯不(bù)到(dào)訓練數(shù)據集。
- 安全軟件(jiàn)的(d×&©¶e)驗證方法不(bù)再适合數(shù)據集及訓練模型,人(rén★♦)類已無法理(lǐ)解,無法實現(xiàn)人(rén)工(gōng)審查和(hé)分(fē←★n)析,傳統軟件(jiàn)基于需求的(de)測試方法♥€♠也(yě)無法進行(xíng)。例如(rú),功能(néngσβ¥ )安全軟件(jiàn)的(de)測試用(yòng)例采用(y§¥×òng)的(de)等價類生(shēng)成分(fēn)∑∏¶析,由于常規規模的(de)神經網絡的(de)高(gāo)度複雜(zá)和(hé)非線性特征₩≠,不(bù)适用(yòng)于模型的(de)σ →實施。要(yào)确定神經網絡模型算(suàn)法的(de)等價類是(sδ∑×€hì)不(bù)可(kě)能(néng)的(de←&)。
ISO26262 軟件(jiàn)單元測✘π∏試用(yòng)例生(shēng)成推薦方法
- 數(shù)據集的(de)屬性與軟件(jiàn)需γ↓×求保證屬性存在差異,傳統軟件(jiàn)'↑需求的(de)完整性,清晰性,精确性,無歧義性,可(kě)驗證性,可(kě)測試性,可(kě)ו♦維護性,可(kě)擴展性 這(zhè)些(xiē)屬性的(de)含義↓↔™∏需要(yào)重新定義。
- ¶<網絡權重作(zuò)為(wèi)參數(shù)數(shù)據項,在本質上(ו§shàng)與傳統的(de)數(shù)據配置文(wén)件(jiàn)不(←←£≈bù)同,依據已有(yǒu)配置參數(shù)修改流程而套用(yòng)網絡權重,存在很(hěn)↔±大(dà)偏差。
4.3、軟件(jiàn)2.0開(kāi)發工(gōng)具鏈
傳統軟件↑¥(jiàn)開(kāi)發中已建立完善的(de)工(gōng)具鏈用(yòng)于支持開 ♠(kāi)發,集成開(kāi)發環境,編輯器(qì),×☆編譯器(qì),調試器(qì),git集成→≈₽,單元測試,集成測試工(gōng)具,在功能(néng)安全軟件(↑×λ€jiàn)工(gōng)具的(de)鑒定中,根據工(gōng)具對(du∏→&ì)軟件(jiàn)安全性影(yǐng)響的(de)不(bù)同,劃分(fēn)為(&α©wèi)不(bù)同的(de)級别,例如(r★≤↕γú)ISO26262-8對(duì)軟件(jiàn)工(gōng)具的 ★(de)TCL1、TCL2和(hé)TCL3分(fēn)級。在軟件(↕∞<jiàn)2.0中,也(yě)可(kě)以按照(zhào)類似的(de)分(fēn)類對(d↔ ↔uì)工(gōng)具進行(xíng)分(fēn)級,但(dàn)目前還(hái)沒有(y→✘©ǒu)完善的(de)開(kāi)發工(gōng)具鏈和(hé)如(rú)何對(d₽ uì)工(gōng)具鑒定的(de)标準。
從(cóng)軟件(jiàδσn)領域的(de)發展來(lái)看(kàn),軟件(jiàn)2.0所占的(de)規模越來(láβ♥γi)越大(dà),已出現(xiàn)機(jī)器(qì)自(zì)動生(shēng₽ )成的(de)代碼,當這(zhè)類軟件(jiàn)應用(yòng)于安全關鍵系統時(shí©♥>∏),有(yǒu)可(kě)能(néng)徹底改✘λ變既有(yǒu)軟件(jiàn)的(deα®)開(kāi)發模式,需要(yào)識别&≤©與現(xiàn)有(yǒu)标準的(de)差異,安全關鍵領域如(rú)航空(kōng)航天、鐵(t ¥iě)路(lù)、汽車(chē)标準,采用(yòng)協作(zuò)的(de)方∑₽¶≈式在不(bù)同領域之間(jiān)獲取經驗;對(duì)應用(yòng)軟件(jiàn)2.0₽₽¶産品的(de)鑒定也(yě)不(bù)再是(shì)一(yī)次性的(de),與軟♦α件(jiàn)2.0生(shēng)命周期類似,是©★λ¥(shì)一(yī)個(gè)叠代的(de)過程,評估系統運行(xíng)性能(n≈αéng)表現(xiàn)是(shì)重要(yào)環節;軟件(jiàn) ¶₽¶的(de)變更會(huì)更加頻(pín)繁,如(rú)智能(néng)網聯汽₩®≠車(chē)的(de)OTA功能(néng),對(λ♣←duì)軟件(jiàn)變更的(de)評估,應考慮其服務期限、運行(xíng)設計(jì)₹♦±域差異、産品異常行(xíng)為(wèi)記錄報(bào)★告等所有(yǒu)既有(yǒu)數(shù)據記♦♥$錄。
轉自(zì)汽車(chē)電(diàn)子(zǐ)與軟件(jiàn)