在汽車與自動(dòng)化行業(yè),基于模型的開(kāi)發(fā)過(guò)程中,從業(yè)者希望能夠在保證建模效率的同時(shí)確保模型質(zhì)量。此時(shí),合理使用建模工具變得尤為重要。合適的工具不僅能夠通過(guò)建模規(guī)范檢查分析測(cè)試模型的質(zhì)量,還能根據(jù)分析結(jié)果對(duì)模型進(jìn)行自動(dòng)改進(jìn)。本篇文章為您介紹業(yè)界頂級(jí)的工具M(jìn)ES Model Examiner (MXAM) 。從MXAM在靜態(tài)測(cè)試中的應(yīng)用角色到實(shí)際演示與10.0版本功能更新,本文帶您透徹了解MXAM如何能輕松幫助您實(shí)現(xiàn)優(yōu)質(zhì)建模。
基于模型的開(kāi)發(fā)中靜態(tài)測(cè)試的應(yīng)用與MXAM
MXAM是用于對(duì)Simulink?、Stateflow?、Embedded Coder?和TargetLink?模型進(jìn)行全面靜態(tài)分析的專業(yè)工具,主要應(yīng)用于軟件V型開(kāi)發(fā)流程的左側(cè)設(shè)計(jì)階段,覆蓋從架構(gòu)到單元設(shè)計(jì)和實(shí)現(xiàn)的全過(guò)程。
基于模型的開(kāi)發(fā)(MBD)依賴基于需求的,測(cè)試驅(qū)動(dòng)的工作流來(lái)持續(xù)地確保質(zhì)量。軟件V型開(kāi)發(fā)流程由左側(cè)地設(shè)計(jì)階段和右側(cè)的測(cè)試階段組成。功能質(zhì)量和功能的適用性是右側(cè)測(cè)試階段的主題,而設(shè)計(jì)的適用性和設(shè)計(jì)質(zhì)量則是設(shè)計(jì)階段關(guān)注的重點(diǎn)。設(shè)計(jì)質(zhì)量和功能質(zhì)量同樣重要,因?yàn)槟P驮O(shè)計(jì)的適用性能夠有效促進(jìn)功能的適用性。那么,模型設(shè)計(jì)質(zhì)量應(yīng)如何保證? 模型靜態(tài)測(cè)試能夠幫助工程師保證模型設(shè)計(jì)的適用性:不僅可以改進(jìn)已在開(kāi)發(fā)過(guò)程中的模型,還可以通過(guò)質(zhì)量保證前置幫助模型在代碼生成前確保質(zhì)量,生成代碼的質(zhì)量得以有效提升。
實(shí)際應(yīng)用中,MXAM支持高度自動(dòng)化的靜態(tài)分析并致力于Simulink和TargetLink模型的可讀性,魯棒性,避免模型錯(cuò)誤以及改進(jìn)生成代碼。圖是一個(gè)Simulink模型的次級(jí)子系統(tǒng)??梢钥闯觯P湍壳按嬖谶`背建模規(guī)范的多項(xiàng)錯(cuò)誤。例如第一處,模塊命名應(yīng)位于模塊下方,而不是上方。再比如第二處,對(duì)于常值模塊而言,其命名不應(yīng)使用具體的,非0和1的數(shù)字,而應(yīng)當(dāng)設(shè)置為參數(shù)進(jìn)行表示。對(duì)于模型的可讀性來(lái)說(shuō),圖1的信號(hào)流未對(duì)齊(第三處)。模塊的命名應(yīng)當(dāng)被清晰識(shí)別,而第四處顯然不符合建模規(guī)范的相關(guān)要求。第五處的輸入端口隱藏在了系統(tǒng)布局內(nèi)。此外,出于避免模型錯(cuò)誤的出現(xiàn),第六處的乘積模塊不應(yīng)存在超過(guò)兩個(gè)輸入端口…等等,這些問(wèn)題嚴(yán)重影響了該Simulink模型的可讀性和設(shè)計(jì)質(zhì)量。圖2展示了該模型經(jīng)過(guò)MXAM修改優(yōu)化后的結(jié)果:所有在之前討論過(guò)的錯(cuò)誤都被一一準(zhǔn)確修正,模型的可讀性得到了顯著提升。
圖1. Simulink模型次級(jí)子系統(tǒng)經(jīng)建模規(guī)范優(yōu)化前
圖2. Simulink模型次級(jí)子系統(tǒng)經(jīng)建模規(guī)范優(yōu)化后
由此可見(jiàn),評(píng)估模型的建模規(guī)范合規(guī)性在保證模型質(zhì)量的實(shí)際應(yīng)用中至關(guān)重要。此環(huán)節(jié)主要評(píng)估模型的布局,數(shù)據(jù)和控制流,數(shù)據(jù)類型,及其配置情況。模型的布局要求確保模型元素之間的關(guān)系和連接方式符合設(shè)計(jì)規(guī)范。模型的數(shù)據(jù)和控制流要求檢驗(yàn)可能的邏輯錯(cuò)誤及路徑偏差。模型中的數(shù)據(jù)類型定義必須正確且一致。模型的配置情況則要求模型的配置參數(shù)符合設(shè)計(jì)規(guī)范。這樣的評(píng)估需要遵循相關(guān)的模型設(shè)計(jì)原則或標(biāo)準(zhǔn),例如MISRA,MATLAB Simulink,或相應(yīng)建模規(guī)范文件等等,設(shè)計(jì)原則的具體應(yīng)用主要通過(guò)對(duì)根據(jù)相應(yīng)規(guī)范而設(shè)置的模型指標(biāo)的檢驗(yàn)評(píng)估實(shí)現(xiàn)。例如汽車功能安全行業(yè)標(biāo)準(zhǔn)ISO 26262 – 6: 軟件級(jí)別產(chǎn)品開(kāi)發(fā)中對(duì)汽車軟件架構(gòu)所提出的具體建議和原則。其中,模型的復(fù)雜度,大小,和非相干度是檢驗(yàn)?zāi)P褪欠穹舷鄳?yīng)建模規(guī)范的重要指標(biāo)。模型的復(fù)雜度分析旨在發(fā)現(xiàn)模型中可能導(dǎo)致問(wèn)題的復(fù)雜結(jié)構(gòu)或關(guān)系,及時(shí)優(yōu)化并簡(jiǎn)化模型,確保模型合規(guī)。模型的大小意在評(píng)估模型子系統(tǒng),接口等等的規(guī)模,確保模型的可理解性和可維護(hù)性。模型的非相干度要求減少模型中的非相干性,以此確保模型各部分之間的關(guān)聯(lián)適度。
模型指標(biāo)的檢驗(yàn)分析可以通過(guò)靜態(tài)測(cè)試的方式在模型開(kāi)發(fā)中及早實(shí)現(xiàn),提高模型的質(zhì)量,并保證軟件系統(tǒng)運(yùn)行的穩(wěn)定性和安全性。在模型開(kāi)發(fā)過(guò)程的敏捷工作流中,建立模型之后,根據(jù)建模規(guī)范或行業(yè)標(biāo)準(zhǔn)的要求分析模型指標(biāo),再生成清晰且全面的分析報(bào)告,并根據(jù)報(bào)告結(jié)果對(duì)模型進(jìn)行修復(fù),最終實(shí)現(xiàn)并輸出優(yōu)質(zhì)的模型。
在模型開(kāi)發(fā)過(guò)程中執(zhí)行靜態(tài)測(cè)試,可通過(guò)敏捷工作流實(shí)現(xiàn)。如圖3所示,敏捷工作流中,首先建立模型,再根據(jù)業(yè)界標(biāo)準(zhǔn)和建模規(guī)范進(jìn)行模型分析,得出清晰全面的分析報(bào)告,最后根據(jù)分析報(bào)告的結(jié)論快速解決和修復(fù)模型遇到的問(wèn)題,最后實(shí)現(xiàn)質(zhì)量門的通過(guò),輕松實(shí)現(xiàn)優(yōu)質(zhì)建模。 在這一過(guò)程當(dāng)中,MXAM和MoRe (MES Model Refactor MoRe, 現(xiàn)已集成在MXAM中) 兩大工具,分別在敏捷工作流的不同階段為建模工作提供有力支持。
圖3. MXAM與MoRe為模型開(kāi)發(fā)過(guò)程中敏捷工作流的不同階段提供支持
通過(guò)啟動(dòng)模型分析,MXAM可以向用戶展示模型根據(jù)建模規(guī)范一致性的分析結(jié)果報(bào)告,如圖4所示的分析結(jié)果視圖。
圖4. MXAM分析結(jié)果視圖
從展示形式來(lái)說(shuō),如圖5所示,MXAM中的報(bào)告視圖可展示為不同的導(dǎo)覽方式,如規(guī)范文檔導(dǎo)覽(Document Navigation)和模型工件導(dǎo)覽(Artificial Navigation)。規(guī)范文檔形式下,在報(bào)告和文檔的每個(gè)級(jí)別都顯示聚合的分析結(jié)果:模型名稱、分析完成的時(shí)間。在工具欄中,還可以通過(guò)選擇樹(shù)查看分析結(jié)果。工件導(dǎo)覽是以模型結(jié)構(gòu)樹(shù)的形式顯示相應(yīng)系統(tǒng)或子系統(tǒng)對(duì)應(yīng)的模型聚合分析結(jié)果。
圖5. MXAM報(bào)告視圖的不同導(dǎo)覽方式
內(nèi)容而言,圖顯示了模型的合規(guī)報(bào)告視圖右側(cè)顯示了模型的合規(guī)分析結(jié)果列表 (Findings),模型架構(gòu)分析的相應(yīng)指標(biāo) (Metrics),模型合規(guī)性的注釋列表 (Annotations),模型分析的配置詳情 (Analysis Configuration)和模型分析指標(biāo)的摘要 (Metrics Summary)。
圖6. MXAM合規(guī)分析結(jié)果
用戶還可以通過(guò)菜單(Menu)或過(guò)濾選項(xiàng)(filter)選擇并查看相應(yīng)的分析結(jié)果。
分析結(jié)果的詳細(xì)信息可以在詳情結(jié)果視圖(Finding Details)查看。如圖7所示,用戶可以查看到違反相關(guān)建模規(guī)范的詳細(xì)信息和結(jié)果描述。
圖7. MXAM違規(guī)項(xiàng)的詳細(xì)信息
比如出現(xiàn)錯(cuò)誤的具體路徑(Path)和具體模塊(Name),和出現(xiàn)這條錯(cuò)誤報(bào)告的具體原因。用戶可以通過(guò)路徑及模塊名稱上的超鏈接直接到達(dá)模型中該錯(cuò)誤所在的位置。修復(fù)選擇(Repair Finding)可以幫助用戶一鍵修復(fù)錯(cuò)誤。
對(duì)于建模規(guī)范來(lái)說(shuō),此處以建模規(guī)范mcheck_misra_slsf_030_c為例,在詳情頁(yè)中(如圖8所示)可以找到關(guān)于這一建模規(guī)范的詳細(xì)描述,包括檢查項(xiàng)通過(guò)該建模規(guī)范或不通過(guò)的評(píng)判標(biāo)準(zhǔn)(Pass-Fail Criteria),以及相應(yīng)的解決方案(Solution)和修復(fù)的具體描述(Repair Action)。
圖8. MXAM建模規(guī)范詳情頁(yè)
最終的檢查報(bào)告可以HTML-、 PDF-、 EXCEL-、XML-以及MXAM自帶的mxmr格式快速導(dǎo)出。
MXAM v10.0: MoRe的集成與功能升級(jí)
MoRe 現(xiàn)已成為MXAM的一部分
在前文中已提到,MXAM能夠在模型敏捷開(kāi)發(fā)流程的多個(gè)階段提供強(qiáng)有力的支持: 加速模型分析流程,快速生成報(bào)告,并輔助自動(dòng)修復(fù)。同樣來(lái)自MES模賽思的MATLAB Simulink擴(kuò)展建模輔助工具M(jìn)ES Model & Refactor(MoRe)能夠?yàn)槊艚蓍_(kāi)發(fā)流程中的建模和修復(fù)提供高效幫助。MoRe能將您日常建模中的步驟自動(dòng)化,省去大量重復(fù)單調(diào)的操作,幫助您在建模時(shí)專注于重要步驟,節(jié)約時(shí)間,全面提高工作效率。
現(xiàn)在,在MXAM全新版本v10.0之下, MoRe已集成在MXAM中。MXAM的功能變得更為全面,全力支持您基于模型的開(kāi)發(fā)過(guò)程。
如圖9所示,這是普通的MXAM安裝程序。用戶可以在此處選擇許可證文件,而MoRe的標(biāo)志已在此標(biāo)注。 接下來(lái)用戶可以繼續(xù)正常的下載步驟, MoRe的下載會(huì)自動(dòng)隨 MXAM同步進(jìn)行。
圖9. MoRe的安裝已集成在MXAM下載器中
進(jìn)入 MATLAB 界面后,MXAM和MoRe即可馬上使用。如圖10中的Simulink模型所示,MES MoRe選項(xiàng)已經(jīng)在菜單中,可以直接調(diào)用MoRe的相關(guān)功能。
圖10. MoRe的輕松調(diào)用
MoRe 最新版本的所有功能均包含在內(nèi),集成在MXAM中和MoRe獨(dú)立工具使用的體驗(yàn)相同。 不僅是自動(dòng)布局,MoRe同樣可以從多角度幫助模型進(jìn)行快速優(yōu)化。不論是從將 Goto/From 模塊轉(zhuǎn)換為信號(hào)線,或是命名問(wèn)題, MoRe都可以輔助您改進(jìn)模型,并節(jié)約大量時(shí)間。
新增可選擴(kuò)展全局參數(shù)及建模規(guī)范
新版本中,MXAM 對(duì) Embedded Coder AUTOSAR 運(yùn)行實(shí)體中的參數(shù)進(jìn)行了擴(kuò)展。在使用 Embedded Coder進(jìn)行模型開(kāi)發(fā)時(shí),如果靜態(tài)測(cè)試包括了自動(dòng)生成的模型部分,則會(huì)導(dǎo)致大量的時(shí)間和資源浪費(fèi)。MXAM v10.0對(duì)分析參數(shù)進(jìn)行了擴(kuò)展(見(jiàn)圖11)。如果將此參數(shù)設(shè)置為“True“, 那么MXAM只會(huì)對(duì)運(yùn)行實(shí)體子系統(tǒng)中的模型元素進(jìn)行分析。
???? 圖11. MXAM v10.0新增參數(shù):“Global.AnalyzeAutosarRunnablesSubsystemsOnly“
在開(kāi)發(fā)AUTOSAR模型的過(guò)程中,工程師一般通過(guò)ARXML文件開(kāi)始進(jìn)行模型生成和框架的構(gòu)建,因而模型會(huì)自動(dòng)生成很多層級(jí)以及其他文件。而模型的自動(dòng)生成部分并非必須進(jìn)行靜態(tài)測(cè)試,因其必須遵循 AUTOSAR提供給您的內(nèi)容,模型結(jié)構(gòu)固定,對(duì)固定部分進(jìn)行靜態(tài)測(cè)測(cè)試會(huì)耗費(fèi)大量不必要的時(shí)間和精力。這個(gè)新的全局參數(shù)能夠幫助工程師實(shí)現(xiàn)只分析AUTOSAR運(yùn)行實(shí)體中的模型和函數(shù),這樣開(kāi)發(fā)工程師就可以將模型分析專注于實(shí)際應(yīng)用和可以進(jìn)行更新修改的模型部分,從而節(jié)約大量時(shí)間。
而對(duì)于建模規(guī)范而言,MXAM新版本的更新完全圍繞主題“功能安全“展開(kāi)。
建模規(guī)范mes_slsf_1500: 確??芍赜媚P徒M件具有已解析并啟用的鏈接。本建模規(guī)范完全專注于功能安全。在工程師應(yīng)對(duì)可重用模型組件時(shí),應(yīng)當(dāng)確保所有鏈接已解析,如果其中有尚未解析的鏈接,將模塊用未啟用的鏈接進(jìn)行連接可能會(huì)導(dǎo)致潛在的問(wèn)題。使用本建模規(guī)范可以確保模型引用可用且已更新,同時(shí)提高了可測(cè)試性,確保模型在進(jìn)入下一個(gè)質(zhì)量保證階段前一切就緒。
另一項(xiàng)更新來(lái)自mes_slsf_2200: 避免舍入模式(Rounding Mode)。絕大多數(shù) Simulink 中的計(jì)算模塊都可以設(shè)置特定的舍入模式。此時(shí),確保代碼生成的舍入模式都被明確定義十分重要。本建模規(guī)范能夠避免模型將舍入模式設(shè)置為“Simplest”,并且對(duì)應(yīng)的MES檢查項(xiàng)中也有對(duì)應(yīng)的檢查參數(shù)可供使用。
此外,建模規(guī)范mes_slsf_3500: 禁止在Stateflow圖中使用用戶定義的事件?;谑录慕?赡軙?huì)導(dǎo)致模型難以維護(hù),出現(xiàn)隱藏控制流和可能的無(wú)限遞歸。同步問(wèn)題也可能發(fā)生,且Stateflow的早期返回邏輯可能導(dǎo)致不良后果。此建模規(guī)范可確保模型不會(huì)在Stateflow圖中使用用戶定義的事件,從而防止隱藏控制流出現(xiàn)在模型之中。
除此之外,新版本還添加了對(duì)三個(gè)版本的 TargetLink 用戶的相應(yīng)變量類別和全新的MES檢查。
如您對(duì)MXAM全新版本感興趣,歡迎您申請(qǐng)免費(fèi)試用了解更多。