我在尋找一個框架,它提供了分層狀態機(HSM)的執行。C++的哪個狀態機執行框架實現UML語義?
這些是框架的要求:
- 符合UML狀態機語義(儘可能地)
- 支持至少
- 運行到完成語義
- 分層狀態
- 進入和退出動作
- tra nsition行動
- 衛士
- 事件與自定義參數
- 是面向對象的或沒有至少沒有禁止OO設計
目標平臺是一箇中型到大型嵌入式系統與操作系統。
你知道一個滿足上述要求的框架嗎?你的框架有什麼優點和缺點?
我在尋找一個框架,它提供了分層狀態機(HSM)的執行。C++的哪個狀態機執行框架實現UML語義?
這些是框架的要求:
目標平臺是一箇中型到大型嵌入式系統與操作系統。
你知道一個滿足上述要求的框架嗎?你的框架有什麼優點和缺點?
我已經在幾個嵌入式項目(從非常小到很大)使用它,它支持所有你需要的子彈項目,等等。
QP的網頁比我在這裏可以做的更好地解釋自己。
請注意,QP並未實現UML規範中指定功能的100%,但清楚地解釋了這些偏離,在我對QP的所有經驗中,他們都沒有成爲該項目的問題。
還有2個Boost狀態圖包,你似乎知道。
如果您正在尋找支持具有UML語義(入口/出口,轉換,警衛,具有參數的事件,異步/同步)的分層和併發狀態機的框架,請查看我的state machine code and diagram generator。
取而代之的是「手工」實現狀態機,用簡單的人類可讀和可寫的xml描述描述狀態機,並讓狀態機生成器用C++,C#或java編寫代碼源。
實際上,對於C++版本,生成的代碼可以很容易地針對中型/大型嵌入式系統進行交叉編譯。它已經完成了。
您可能會看看我的C++模板類框架STTCL,它旨在提供UML 2.2狀態圖表示法到實現類的映射。STTCL方法是對GoF狀態模式的改進,並試圖填補UML狀態圖符號的空白。
只要需要這些操作系統依賴關係,就可以對框架實現進行配置(僅適用於異步執行模型)。
有一個PDF document可用於解釋更詳細的概念。
嗨,看來你的代碼取決於Boost。最近我一直在評估狀態機框架,如果Boost是依賴項,爲什麼要選擇STTCL而不是Boost StateCharts和Boost MSM?特別是Boost :: StateCharts也是GoF狀態模式的改進。 – krapht 2015-07-06 15:21:08
截止到今天,還有一個新的C++(支持帶Boost的C++ 11和C++ 03)可供選擇。它叫做yasmine(我是建築師)。它滿足所有上述要求。
一些利弊(從亞斯曼網頁引用):
使用亞斯曼
- 她提供UML狀態機語義的完整實現的優勢。
- yasmine是使用C++ 11的現代C++實現(也提供C++ 03支持)。
- 因爲它是C++(而不是C),所以代碼很好地集成到了OO代碼中。
- 她有據可查[012]
- 因爲她是開源的,你可以檢查她的執行情況。這也保證了長期的可用性和可用性。
- 該庫使您能夠在運行時創建狀態機。
- [...]
什麼亞斯曼不
她不是在每個系統上運行 不管幾個可用資源的數量優先的最小足跡庫。 yasmine不是 資源飢餓,但她不能(也不希望)與 基於開關情況的裸機無抽象庫競爭。
注意
我知道這是一個老問題,但它是谷歌的#1「C++ UML狀態機」,這使得它非常重要。
謝謝,這看起來很有趣。我一定會仔細看看QP。 – theDmi 2010-09-21 19:57:51