嵌入式軟件開發為什么要使用基于模型的設計?
對這個問題,最不希望聽到的回答是:
因為GM在使用基于模型設計,因為BMW在使用基于模型設計,所以我們也要使用基于模型設計……
好吧,或許他們可以作為借鑒,但是我們是否認真想過:
基于模型的設計能給我們的開發帶來什么樣的好處?
弄清這個問題,是我們在后續有效使用基于模型設計開發嵌入式軟件的前提。
這里我引用一下若干年前MathWorks公司CEO——Jack Little的說法,在嵌入式軟件開發過程中,基于模型的設計至少可以給我們帶來四個方面的好處:
1圖形化設計
對于基于模型的設計來講,圖形化設計是天然的、固有的。圖形化的優勢,工程師們都非常清楚,明確、清晰、唯一,便于交流、便于維護,這也是為什么就算我們不用基于模型設計的方式開發軟件,也需要在設計文檔中畫流程圖、狀態機的原因。
需要注意的是,我們需要把Simulink模型畫到清晰、明確,便于交流、便于維護。
2早期驗證
話說軟件開發過程中,bug的引入難以避免。人非圣賢、孰能無過,引入bug不可怕,能否盡快發現bug對整個開發過程至關重要。這里提到“早期”,什么是“早期”?你某一個階段的工作產品出來之后,緊跟著就要做驗證工作。對于早期驗證,以前的方式比較單一,通常我們使用評審的方式去實現最早期的驗證,以至于Peer Review在很多公司的流程中被固化下來了,寫完文檔要評審,做完設計要評審,寫完代碼還要評審,寫好測試用例也要評審。如果我們翻看一些軟件工程的教材或者文獻,大家對評審的評價非常高,因為在這個階段每發現一個錯誤,都會給后續的開發過程帶來很多便利,但遺憾的是,評審的效率通常不高。
使用基于模型設計去開發軟件,除了評審,我們還有更高效的早期驗證方式,包括Simulink模型本身固有的仿真,以及通過形式化方法工具對模型進行形式化的分析。
3代碼的自動生成
自動生成代碼通常是使用基于模型設計進行軟件開發的工程師最容易關注的優勢。代碼都不用寫了,“碼農”從此跟我無關,還有什么比這事更美好的呢?確實,從開發效率來講,這個環節,對于效率的提升,是無法量化的,原本需要一個月時間寫完的代碼,現在可能只要一個上午或者兩個小時就可以搞定,誰幫我算一下工作效率提升了多少?不少人對代碼生成的開發效率沒有質疑,但對生成代碼的代碼效率卻不夠放心。這事,很多人都比過,SAE上也能找到這樣的論文。通俗點講,從效率上,生成的代碼在各種效率上(RAM、ROM、執行時間等)不比大學畢業后工作了5年的工程師差。當然,遇到那種“寫代碼像寫詩一樣”的工程師,代碼生成工具還是要甘拜下風的。不過,“寫代碼像寫詩一樣”的工程師我們又見過幾人?
4文檔自動化
對于文檔,我說兩點:
工程師大多不愿意寫文檔;
開發過程中文檔又是不可缺少的。
有三個字足以證明上面兩條,那就是“補文檔”。在基于模型設計的開發過程中,我們可以通過軟件讀取模型中相關信息并自動創建文檔,實現文檔自動化。
上面提到了基于模型設計能給我們帶來的好處,也正是因為基于模型的設計可以給我帶來上述好處,所以我們才應該使用基于模型的設計。
除上述優勢之外,軟件規模的爆炸式增長也是使用基于模型的設計開發軟件的一個重要原因。我想很多人都會有很深刻的體會,近年來軟件規模在快速膨脹,各種機電產品的功能、性能大多通過軟件的方式去實現、去提升。
NASA做過研究,汽車、航天器等產品的代碼量這些年都在呈指數級增加,戰斗機從1960年的F-4約8%的功能由軟件實現到2000年的F-22約有80%的功能由軟件實現,其他機電系統也差不多。軟件規模的快速膨脹,給驗證和實現都帶來了很大困難。
原有的開發模式難以應對,新的開發模式必然會出現。即便是沒有MathWorks、沒有Simulink,也會有其他產品去實現基于模型的設計,這不是單單一個MathWorks能夠推動的,而是技術發展到這一階段的必然。
-
自動化
+關注
關注
29文章
5588瀏覽量
79370 -
圖形化
+關注
關注
0文章
56瀏覽量
14221
發布評論請先 登錄
相關推薦
評論