一家之言,如有異議或者錯誤請忽略
Matlab
優點
- 面向算法,可以運行和仿真,能看到每個變量隨時間變化的曲線,因而可以進行早期驗證
- 各種現成的組件
- 各種現成的模板用於生成不同平臺的代碼
缺點
- 不面向對象,沒有類的概念,也不能使用時序圖,活動圖等
- 好像只能生成C/C++代碼
- 可以引用外部代碼,但是不能增量式維護,只能改模型重新生成
- 貴!
Matlab的強項在於實現功能,而不是架構設計
StarUML
優點
- 簡單,易上手
- 對象屬性很全面,可以直接對應C++的各種屬性,比如Virtual,Static,volatile等,
- 免費
缺點
- 只能從類圖生成代碼,所以只能進行框架設計,也不能在模型中插入實現代碼
- 只能單向生成,不能增量式維護,因此如果模型有更改,只能生成新的代碼,然後手動和現有代碼進行比較更新
- 不能運行,無法進行早期驗證
StartUML基本上只用於早期的概念階段和框架設計,在設計階段基本上就無法再用了
xtUML
優點
- 可以執行,因而可以進行早期驗證
- 即可以設計框架,也可以設計實現
- 好像可以修改代碼生成模板
- 據說兼容AUTOSAR
- 免費
缺點
- 好像只能生成C代碼,不能生成C++代碼?
- 執行過程不太友好,有時候不知道發生了什麼,甚至不知道該如何發生
- 需要學習一種自有的腳本語言,好在好像不是太複雜
- 目標是生成代碼直接使用,因而也無法雙向維護,基本上更改只能從模型出發
OpenAmeos
優點
- 可以增量式維護,在生成的代碼裏進行的修改重新生成後還會保留
- 有語法檢查
- 自動生成構造,析構函數,Get, Set, 拷貝構造函數
- 可以在模型裏插入實現代碼,自動加入到生成的代碼裏面
- Doxygen 風格的註釋
- 適用於大型項目,有客戶端和服務器端,還有不同的參與者角色區分
- 有版本管理功能,可以設置BaseLine,應該可以進行Baseline之間的比較
- 程序很小,才20M+功能卻很強大
- 免費
缺點
- 類屬性沒有Static屬性?
- 不能執行,所以也不能進行早期驗證
- 有點複雜