1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        QP實(shí)時(shí)嵌入式框架之QM

        共 1835字,需瀏覽 4分鐘

         ·

        2021-11-15 03:59

        關(guān)注、星標(biāo)公眾號,直達(dá)精彩內(nèi)容

        來源:技術(shù)讓夢想更偉大

        作者:李肖遙

        前言

        關(guān)于軟件開發(fā)中的大事,已經(jīng)有很多墨水了。其中之一是從高級模型(例如,從狀態(tài)機(jī))的自動代碼生成,在此前的文章中說到了QM是一個(gè)自動生成代碼的工具,這樣的代碼就好用嗎?

        你是否用過或者寫過這樣的代碼自動生成腳本,如果代碼可以生成,生成的代碼又不好用只能參考,是不是有點(diǎn)雞肋呢?

        本想說到這個(gè)問題,但是在此之前,我們又有必要先了解一下QM這個(gè)軟件,它是怎么自動生成代碼的,原理是什么,好不好用。

        QM是什么?

        QM(QP Modeler) 是一款免費(fèi)軟件,基于模型設(shè)計(jì)(MBD) 和自動代碼生成工具,用于基于分層狀態(tài)機(jī)(UML 狀態(tài)圖)和事件驅(qū)動的 QP 實(shí)時(shí)嵌入式軟件框架 (RTEF), QM 可用于 Windows、Linux 和 MacOS 主機(jī)。

        有什么作用?

        QM 基于模型的設(shè)計(jì)工具的主要目標(biāo)是:

        • 將軟件分解為稱為活動對象的事件驅(qū)動組件

        • 以圖形方式設(shè)計(jì)與這些活動對象關(guān)聯(lián)的分層狀態(tài)機(jī)

        • 自動生成具有生產(chǎn)質(zhì)量且可從您的設(shè)計(jì)中完全追溯的代碼

        QM從根本上說是一個(gè)面向?qū)ο蟮墓ぞ撸c目標(biāo)編程語言無關(guān),面向?qū)ο笠馕吨?QM 模型從根本上由類組成,并且只有類才能擁有與其關(guān)聯(lián)的狀態(tài)機(jī)。

        QM看起來如何?

        QM是一個(gè)跨平臺的桌面應(yīng)用程序,以下顯示了QM中執(zhí)行的典型活動:

        • 在 QM 中使用分層狀態(tài)機(jī)
        • 在 QM 中生成代碼
        • 設(shè)計(jì)一個(gè)子機(jī)器來捕獲 QM 中的常見行為
        • 自定義 QM 用戶界面(深色主題)

        QM有什么特別之處?

        QM的主要設(shè)計(jì)目標(biāo)是簡單和最大限度地減少與工具斗爭的需要,下面描述的幾種方式實(shí)現(xiàn)了這一點(diǎn)。

        簡單

        與當(dāng)今市場上的大多數(shù)其他高級建模工具相比,QM更簡單、以代碼為中心且級別相對較低(不是貶義的)。

        這意味著QM明確地將設(shè)計(jì)直接映射到C或C++代碼,狀態(tài)機(jī)執(zhí)行的所有動作都直接用 C 或 C++ 輸入到模型中;沒有“平臺無關(guān)模型”(PIM)、“平臺特定模型”(PSM)、復(fù)雜的“模型轉(zhuǎn)換”或“動作語言”。

        內(nèi)置 QP 框架

        與大多數(shù)其他能夠生成代碼的工具一樣,QM創(chuàng)建的模型基于事件驅(qū)動的實(shí)時(shí)嵌入式框架,這樣的框架提供了明確定義的“框架擴(kuò)展點(diǎn)”,旨在將框架定制到應(yīng)用程序中,從而為生成代碼提供明確定義的規(guī)則。

        然而,QM的大部分簡單性在于:它帶有內(nèi)置的 QP 框架系列,而不是支持開放式的框架和編程語言,另一個(gè)簡化方面是 QM 是一種嚴(yán)格的前向工程工具(不應(yīng)編輯生成的代碼),不嘗試支持往返工程。

        捕捉物理設(shè)計(jì)

        QM是市場上獨(dú)特的基于模型的設(shè)計(jì)工具,可以將代碼的物理設(shè)計(jì)作為模型的一個(gè)組成部分,即將代碼劃分為目錄和文件,例如頭文件 (.h) 和實(shí)現(xiàn)文件(.c 或 .cpp 文件)。

        這種獨(dú)特的方法可以使我們靈活控制源代碼結(jié)構(gòu),減少了對生成的代碼進(jìn)行手動更改,此外,QM提供了在模型和生成的代碼之間快速來回切換的機(jī)制,以便任何更改都可以方便地直接應(yīng)用于模型而不是代碼。

        不再是“與工具作斗爭”

        QM的主要設(shè)計(jì)目標(biāo)是盡可能地尊重設(shè)計(jì)決策,不僅在生成代碼的物理設(shè)計(jì)方面,而且在安排狀態(tài)和路由轉(zhuǎn)換的確切細(xì)節(jié)方面。

        比如當(dāng)我們花了很多時(shí)間安排狀態(tài)和路由轉(zhuǎn)換之后,如果突然改變圖表排列的工具或者有新的變更需求,那么肯定會有很多麻煩的事情。

        在QM中繪制分層狀態(tài)圖需要考慮很多,且具有創(chuàng)新性,例如,QM 不使用“偽狀態(tài)”,比如初始偽狀態(tài)或選擇點(diǎn);相反,QM 分別使用更高級別的初始轉(zhuǎn)換和選擇段原語;這極大地簡化了狀態(tài)圖,我們不需要單獨(dú)定位偽狀態(tài)然后連接它們。

        此外,QM 為內(nèi)部轉(zhuǎn)換引入了新的表示法,它允許實(shí)際繪制內(nèi)部轉(zhuǎn)換(在標(biāo)準(zhǔn) UML 表示法中,內(nèi)部轉(zhuǎn)換只是狀態(tài)體中的文本)。這種表示法能夠?qū)?nèi)部轉(zhuǎn)換或者常規(guī)狀態(tài)轉(zhuǎn)換附加到單個(gè)選擇點(diǎn),彌補(bǔ)了標(biāo)準(zhǔn)UML的缺陷。

        后記

        自動生成代碼工具很多,大家可以自行了解,當(dāng)然QP中QM的使用也就很關(guān)鍵了,本文先介紹一下其表,在下一篇中將回到深層次一點(diǎn)的問題,歡迎持續(xù)關(guān)注。

        ???????????????? ?END ?????????????????

        關(guān)注我的微信公眾號,回復(fù)“加群”按規(guī)則加入技術(shù)交流群。

        歡迎關(guān)注我的視頻號:

        點(diǎn)擊“閱讀原文”查看更多分享,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看。

        瀏覽 65
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            操鼻视频素材大全网站直接看 | 桃色激情网 | 极品少妇久久久 | 三级片视频网站 | 国产精品久久丫 | 亚洲大尺度视频 | 色图片小说 | 国产黄片观看 | 好大好粗好多水 | 秘书激情办公室在线观看 |