奇迹觉醒深渊之火哪里打:為什么要基于模型設計?

奇迹觉醒女神之光 www.mhotr.icu 2019-3-3 17:08| 發布者: ilovematlab| 查看: 22630| 評論: 14|原作者: 老胡

摘要: 基于模型的設計能給我的開發帶來什么樣的好處?

目錄:

嵌入式軟件開發為什么要使用基于模型的設計?

對這個問題,最不希望聽到的回答是:

因為GM在使用基于模型設計,因為BMW在使用基于模型設計,所以我們也要使用基于模型設計……


好吧,或許他們可以作為借鑒,但是我們是否認真想過:

基于模型的設計能給我們的開發帶來什么樣的好處?

弄清這個問題,是我們在后續有效使用基于模型設計開發嵌入式軟件的前提。 這里我引用一下若干年前MathWorks公司CEO——Jack Little的說法,在嵌入式軟件開發過程中,基于模型的設計至少可以給我們帶來四個方面的好處:

1. 圖形化設計

對于基于模型的設計來講,圖形化設計是天然的、固有的。圖形化的優勢,工程師們都非常清楚,明確、清晰、唯一,便于交流、便于維護,這也是為什么就算我們不用基于模型設計的方式開發軟件,也需要在設計文檔中畫流程圖、狀態機的原因。
需要注意的是,我們需要把Simulink模型畫到清晰、明確,便于交流、便于維護。

2. 早期驗證

話說軟件開發過程中,bug的引入難以避免。人非圣賢、孰能無過,引入bug不可怕,能否盡快發現bug對整個開發過程至關重要。這里提到“早期”,什么是“早期”?你某一個階段的工作產品出來之后,緊跟著就要做驗證工作。對于早期驗證,以前的方式比較單一,通常我們使用評審的方式去實現最早期的驗證,以至于Peer Review在很多公司的流程中被固化下來了,寫完文檔要評審,做完設計要評審,寫完代碼還要評審,寫好測試用例也要評審。如果我們翻看一些軟件工程的教材或者文獻,大家對評審的評價非常高,因為在這個階段每發現一個錯誤,都會給后續的開發過程帶來很多便利,但遺憾的是,評審的效率通常不高。
使用基于模型設計去開發軟件,除了評審,我們還有更高效的早期驗證方式,包括Simulink模型本身固有的仿真,以及通過形式化方法工具對模型進行形式化的分析。

3. 代碼的自動生成

自動生成代碼通常是使用基于模型設計進行軟件開發的工程師最容易關注的優勢。代碼都不用寫了,“碼農”從此跟我無關,還有什么比這事更美好的呢?確實,從開發效率來講,這個環節,對于效率的提升,是無法量化的,原本需要一個月時間寫完的代碼,現在可能只要一個上午或者兩個小時就可以搞定,誰幫我算一下工作效率提升了多少?不少人對代碼生成的開發效率沒有質疑,但對生成代碼的代碼效率卻不夠放心。這事,很多人都比過,SAE上也能找到這樣的論文。通俗點講,從效率上,生成的代碼在各種效率上(RAM、ROM、執行時間等)不比大學畢業后工作了5年的工程師差。當然,遇到那種“寫代碼像寫詩一樣”的工程師,代碼生成工具還是要甘拜下風的。不過,“寫代碼像寫詩一樣”的工程師我們又見過幾人?

4. 文檔自動化

對于文檔,我說兩點:
  1. 工程師大多不愿意寫文檔;
  2. 開發過程中文檔又是不可缺少的。
有三個字足以證明上面兩條,那就是“補文檔”。在基于模型設計的開發過程中,我們可以通過軟件讀取模型中相關信息并自動創建文檔,實現文檔自動化。
上面提到了基于模型設計能給我們帶來的好處,也正是因為基于模型的設計可以給我帶來上述好處,所以我們才應該使用基于模型的設計。

結語

除上述優勢之外,軟件規模的爆炸式增長也是使用基于模型的設計開發軟件的一個重要原因。我想很多人都會有很深刻的體會,近年來軟件規模在快速膨脹,各種機電產品的功能、性能大多通過軟件的方式去實現、去提升。
NASA做過研究,汽車、航天器等產品的代碼量這些年都在呈指數級增加,戰斗機從1960年的F-4約8%的功能由軟件實現到2000年的F-22約有80%的功能由軟件實現,其他機電系統也差不多。軟件規模的快速膨脹,給驗證和實現都帶來了很大困難。
原有的開發模式難以應對,新的開發模式必然會出現。即便是沒有MathWorks、沒有Simulink,也會有其他產品去實現基于模型的設計,這不是單單一個MathWorks能夠推動的,而是技術發展到這一階段的必然。

關于作者

老胡,MATLAB中文論壇超級版主,MathWorks公司中國區高級應用工程師,主要負責自動代碼生成在汽車及其他工業領域中的應用,具有15年以上的MATLAB?/Simulink使用經驗。加入MathWorks之前,曾任職于德爾福中國研發中心的控制與安全部門負責算法建模和代碼生成,并成功的將基于模型設計引入到產品開發中,在基于模型設計以及相關的流程優化方面有豐富的經驗。

聲明:
本文內容所有內容僅代表個人觀點,如有任何問題,請聯系作者。
本版塊所有文章版權歸作者個人所有,未經允許,不得作為出版物出版。如需轉載,請聯系論壇管理員。

相關閱讀

發表評論

最新評論

引用 m_dgz 2019-8-10 17:55
萌新學習,感謝分享
引用 cgl155410 2019-8-7 14:38
感謝分享,萌新來學習
引用 blade55 2019-8-6 19:34
是不錯,可是怎么做?有教程教材嗎?
引用 joe_1991 2019-7-25 14:19
受教了
引用 ShieldIron 2019-7-18 10:06
感謝科普
引用 view195127 2019-6-27 16:34
期待基于模型設計的推廣,希望能集成越來越多的硬件板卡驅動。
引用 chdwwd 2019-6-27 09:00
方便使用
引用 FaceMask 2019-5-26 20:03
我覺得基于模型的設計很大的優勢是便于理解邏輯關系,方便后期軟件修改維護。目前在做電機控制器MCU,明顯感覺邏輯比手寫代碼要清楚,但是生成的代碼略微臃腫,執行時間較長。 ...
引用 Assembly_x 2019-5-13 13:39
深有感觸。圖像化方便設計,利于交流,代碼生成更是節約時間。
引用 Daniel-sp 2019-5-12 20:11
感謝分享!
引用 supernova1987 2019-5-6 22:36
thanks,好文章
引用 液壓控制 2019-4-30 11:15
“基于模型設計”是指“根據仿真模型的數據進行優化設計”?
引用 Theknight 2019-4-29 14:39
基于模型的設計,這不是單單一個MathWorks能夠推動的,而是技術發展到這一階段的必然。感覺很有道理
引用 erbao_zhang 2019-4-27 17:35
基于模型的設計容易上手和維護,以后的趨勢
引用 老胡 2019-2-2 13:15
A_Fer: 文檔的自動化是指export to web么?感覺這個還比較牽強,只是省去了自己截圖的步驟,離可用的文檔還差很遠吧。
不是export to web,可以從模型中讀出你需要的信息,形成定制化的文檔。
引用 道德 2019-2-1 14:36
謝謝
引用 A_Fer 2019-1-25 11:14
文檔的自動化是指export to web么?感覺這個還比較牽強,只是省去了自己截圖的步驟,離可用的文檔還差很遠吧。
引用 蘇城114 2019-1-23 10:25
效率更高,新趨勢吧
引用 51MAT 2018-12-17 10:31
個人以為,基于模型的設計應該是有利于后期糾錯,增加容錯率
引用 落木蕭蕭2017 2018-12-15 21:34
感謝分享,長見識了

查看全部評論(14)

為什么要基于模型設計?

基于模型的設計能給我的開發帶來什么樣的好處?

為什么要基于模型設計?

基于模型的設計能給我的開發帶來什么樣的好處?
關閉

站長推薦上一條 /4 下一條

返回頂部