汽車行業(yè)的電動化、智能化和網(wǎng)聯(lián)化的趨勢對管理各種電子控制單元(ECU)的軟件復(fù)雜度與保證其功能安全提出了更高的要求。 現(xiàn)代中高端的汽車上約有 50 個以上的 ECU 及總量超過 1 億行代碼的嵌入式軟件,如何對 ECU 的軟件質(zhì)量進(jìn)行有效管理是擺在管理者面前的緊迫課題。本文將闡述軟件質(zhì)量目標(biāo)(SQO)的概念,與大家一起探討如何通過軟件質(zhì)量目標(biāo)管理 ECU 的軟件質(zhì)量。 ◆ ◆ ◆ ◆軟件質(zhì)量目標(biāo) 軟件質(zhì)量目標(biāo)(SQO)定義了一系列來源于行業(yè)實(shí)踐總結(jié)的可度量的代碼指標(biāo)及達(dá)到相應(yīng)質(zhì)量要求的閾值。軟件質(zhì)量目標(biāo)可以定義為不同的等級,隨著軟件開發(fā)階段的進(jìn)行而動態(tài)調(diào)整。其組成部分包括軟件質(zhì)量計(jì)劃、詳細(xì)設(shè)計(jì)描述、代碼度量信息、代碼規(guī)范要求、運(yùn)行錯誤檢查、數(shù)據(jù)流分析結(jié)果等,下圖案例說明了不同 SQO 等級包含的內(nèi)容范圍: 軟件質(zhì)量計(jì)劃 軟件質(zhì)量計(jì)劃應(yīng)由供應(yīng)商提供,包括為了實(shí)現(xiàn)主機(jī)廠所要求的軟件質(zhì)量所采取的方法、工具以及團(tuán)隊(duì)和項(xiàng)目本身的信息。目的在于說明軟件質(zhì)量的保證工作由誰實(shí)施以及如何實(shí)施。以下是軟件質(zhì)量計(jì)劃包含的內(nèi)容示例:
詳細(xì)設(shè)計(jì)描述 詳細(xì)設(shè)計(jì)描述提供了軟件應(yīng)用的架構(gòu)和成熟度信息,包括:
代碼度量信息 代碼度量信息用來幫助主機(jī)廠理解軟件模塊的特性以及評估軟件模塊的質(zhì)量。主機(jī)廠和供應(yīng)商雙方應(yīng)在項(xiàng)目開始前選定度量信息,供應(yīng)商應(yīng)在軟件交付時提交度量指標(biāo)符合或背離說明報(bào)告。常用的代碼度量信息包括:
代碼規(guī)范符合 遵循代碼規(guī)范是保證代碼可讀性和防范代碼出錯的重要舉措,汽車行業(yè)一般選用 MISRA(汽車工業(yè)軟件可靠性聯(lián)合會)的編碼規(guī)范,值得一提的是 MISRA 的編碼規(guī)范分為針對手寫代碼和針對自動代碼的兩種規(guī)范,在應(yīng)用時應(yīng)加以選擇。對不同的軟件質(zhì)量目標(biāo)定義不同的編碼規(guī)范子集是推薦的應(yīng)用方式,供應(yīng)商應(yīng)提交所適用的編碼規(guī)范子集的符合性證明或背離說明報(bào)告。以下是編碼規(guī)范符合性的統(tǒng)計(jì)說明案例。 運(yùn)行錯誤分析 運(yùn)行錯誤相對于編譯錯誤或鏈接錯誤而言,即通常所說的代碼在運(yùn)行過程中存在的 bug。其分析結(jié)果分為確定的運(yùn)行錯誤、潛在的運(yùn)行錯誤、安全代碼操作和不可達(dá)的代碼操作。供應(yīng)商應(yīng)聲明在開發(fā)階段所采用的方法和工具用以確保代碼中不存在運(yùn)行錯誤或?qū)Πl(fā)現(xiàn)的運(yùn)行錯誤加以審查說明。對于潛在的運(yùn)行錯誤(多由輸入數(shù)據(jù)的取值范圍引起),需要定義對應(yīng)不同 SQO 等級的人工審查率,如下圖所示: 數(shù)據(jù)流分析 數(shù)據(jù)流分析指用來獲取有關(guān)數(shù)據(jù)如何沿著程序執(zhí)行路徑流動的相關(guān)信息的技術(shù),其目的是提供一個過程(或一段程序)如何操縱其數(shù)據(jù)的全局信息。數(shù)據(jù)流分析結(jié)果包括:
功能安全符合和工具支持 ISO 26262-6 定義了為確保軟件質(zhì)量而在軟件開發(fā)過程的各階段所應(yīng)采用的方法,可以通過 SQO 的實(shí)施加以實(shí)現(xiàn),后續(xù)有機(jī)會再以專文敘述。SQO 可以在靜態(tài)代碼分析工具 Polyspace 中設(shè)定并與分析結(jié)果比較,從而確認(rèn)供應(yīng)商的軟件是否達(dá)到各階段交付標(biāo)準(zhǔn),下圖顯示了 SQO 設(shè)定方式和 MISRA 規(guī)范的比較結(jié)果。 ◆ ◆ ◆ ◆綜上所述,軟件質(zhì)量管理圍繞軟件質(zhì)量目標(biāo)進(jìn)行,其中可度量性是軟件質(zhì)量目標(biāo)的基礎(chǔ)要求;與不同開發(fā)階段相對應(yīng)的階梯式目標(biāo)體現(xiàn)了軟件開發(fā)過程的特點(diǎn);而將其內(nèi)化到工具的支持則保證了軟件質(zhì)量目標(biāo)不僅僅停留在文檔要求上而具有了現(xiàn)實(shí)可操作性。 |
|