自動代碼生成,在此前的文章中說到了QM是一個自動生成代碼的工具,這樣的代碼就好用嗎?
你是否用過或者寫過這樣的代碼自動生成腳本,如果代碼可以生成,生成的代碼又不好用只能參考,是不是有點雞肋呢?
本想說到這個問題,但是在此之前,我們又有必要先了解一下QM這個軟件,它是怎么自動生成代碼的,原理是什么,好不好用。
QM是什么?
QM(QP Modeler) 是一款免費軟件,基于模型設計(MBD) 和自動代碼生成工具,用于基于分層狀態(tài)機(UML 狀態(tài)圖)和事件驅動的 QP 實時嵌入式軟件框架 (RTEF), QM 可用于 Windows、Linux 和 MacOS 主機。
有什么作用?
QM 基于模型的設計工具的主要目標是:
-
將軟件分解為稱為活動對象的事件驅動組件
-
以圖形方式設計與這些活動對象關聯(lián)的分層狀態(tài)機
-
自動生成具有生產質量且可從您的設計中完全追溯的代碼
QM從根本上說是一個面向對象的工具,與目標編程語言無關,面向對象意味著 QM 模型從根本上由類組成,并且只有類才能擁有與其關聯(lián)的狀態(tài)機。
QM看起來如何?
QM是一個跨平臺的桌面應用程序,以下顯示了QM中執(zhí)行的典型活動:
-
在 QM 中使用分層狀態(tài)機
-
在 QM 中生成代碼
-
設計一個子機器來捕獲 QM 中的常見行為
-
自定義 QM 用戶界面(深色主題)
QM有什么特別之處?
QM的主要設計目標是簡單和最大限度地減少與工具斗爭的需要,下面描述的幾種方式實現(xiàn)了這一點。
簡單
與當今市場上的大多數(shù)其他高級建模工具相比,QM更簡單、以代碼為中心且級別相對較低(不是貶義的)。
這意味著QM明確地將設計直接映射到C或C 代碼,狀態(tài)機執(zhí)行的所有動作都直接用 C 或 C 輸入到模型中;沒有“平臺無關模型”(PIM)、“平臺特定模型”(PSM)、復雜的“模型轉換”或“動作語言”。
內置 QP 框架
與大多數(shù)其他能夠生成代碼的工具一樣,QM創(chuàng)建的模型基于事件驅動的實時嵌入式框架,這樣的框架提供了明確定義的“框架擴展點”,旨在將框架定制到應用程序中,從而為生成代碼提供明確定義的規(guī)則。
然而,QM的大部分簡單性在于:它帶有內置的 QP 框架系列,而不是支持開放式的框架和編程語言,另一個簡化方面是 QM 是一種嚴格的前向工程工具(不應編輯生成的代碼),不嘗試支持往返工程。
捕捉物理設計
QM是市場上獨特的基于模型的設計工具,可以將代碼的物理設計作為模型的一個組成部分,即將代碼劃分為目錄和文件,例如頭文件 (.h) 和實現(xiàn)文件(.c 或 .cpp 文件)。
這種獨特的方法可以使我們靈活控制源代碼結構,減少了對生成的代碼進行手動更改,此外,QM提供了在模型和生成的代碼之間快速來回切換的機制,以便任何更改都可以方便地直接應用于模型而不是代碼。
不再是“與工具作斗爭”
QM的主要設計目標是盡可能地尊重設計決策,不僅在生成代碼的物理設計方面,而且在安排狀態(tài)和路由轉換的確切細節(jié)方面。
比如當我們花了很多時間安排狀態(tài)和路由轉換之后,如果突然改變圖表排列的工具或者有新的變更需求,那么肯定會有很多麻煩的事情。
在QM中繪制分層狀態(tài)圖需要考慮很多,且具有創(chuàng)新性,例如,QM 不使用“偽狀態(tài)”,比如初始偽狀態(tài)或選擇點;相反,QM 分別使用更高級別的初始轉換和選擇段原語;這極大地簡化了狀態(tài)圖,我們不需要單獨定位偽狀態(tài)然后連接它們。
此外,QM 為內部轉換引入了新的表示法,它允許實際繪制內部轉換(在標準 UML 表示法中,內部轉換只是狀態(tài)體中的文本)。這種表示法能夠將內部轉換或者常規(guī)狀態(tài)轉換附加到單個選擇點,彌補了標準UML的缺陷。
后記
自動生成代碼工具很多,大家可以自行了解,當然QP中QM的使用也就很關鍵了,本文先介紹一下其表,在下一篇中將回到深層次一點的問題,歡迎持續(xù)關注。
???????????????? END ????????????????
本文將討論常見的調試問題以及預防和檢查這些故障問題的一些方法。從歷史角度上來看,嵌入式應用代碼的調試流程可以分為兩類。第一類調試流程是回答 “我的代碼現(xiàn)在執(zhí)
關鍵字: 嵌入式系統(tǒng) 調試 系統(tǒng)軟件 實時嵌入式摘要:為滿足對安全關鍵領域日益增長的可靠性需求,提出一種基于松耦合多處理器體系結構的雙機容錯實時嵌入式系統(tǒng)設計方案。該方案無縫整合了計算機硬件級、操作系統(tǒng)級、應
關鍵字: 嵌入式系統(tǒng) 系統(tǒng)設計 雙機 實時嵌入式摘要:介紹了實時操作系統(tǒng)μC/OS-II的特點和內核結構,并首次實現(xiàn)了μC/OS-II在摩托羅拉處理器MPC555上的移植,介紹了移植后OS的應用方法。 關鍵詞:μC/OS-I...
關鍵字: 移植 實時嵌入式 嵌入式操作系統(tǒng) μC/OS-II嵌入式實時操作系統(tǒng)在目前的嵌入式應用中用得越來越廣泛,尤其在功能復雜、系統(tǒng)龐大的應用中顯得愈來愈重要。人們要求實時嵌入式產品能夠提供更為強勁的計算能力,以滿足無
關鍵字: 實時系統(tǒng) 混合任務 動態(tài)電壓調節(jié) 實時嵌入式摘要:介紹PB0技術及其特點,這種技術支持軟件重用和動態(tài)可重配置;分析其應用于航空航天器等實時裝入式軟件開發(fā)過程中的優(yōu)勢與困難。關鍵詞:軟件重用 動態(tài)可重配置 實時裝
關鍵字: 嵌入式軟件 軟件開發(fā) 實時嵌入式 實時系統(tǒng)實時嵌入式系統(tǒng)軟件調試常見問題分析
關鍵字: 嵌入式系統(tǒng) 系統(tǒng)軟件 調試 實時嵌入式實時嵌入式系統(tǒng)軟件調試常見問題分析
關鍵字: 嵌入式系統(tǒng) 系統(tǒng)軟件 調試 實時嵌入式實時嵌入式系統(tǒng)模型校驗技術
關鍵字: 嵌入式系統(tǒng) 系統(tǒng)模型 實時嵌入式 LEVEL