Какие платформы выполнения State Machine для C ++ реализуют семантику UML? - PullRequest
5 голосов
/ 20 сентября 2010

Я ищу среду, которая обеспечивает выполнение иерархических конечных автоматов (HSM).

Это требования к среде:

  • Соответствует семантике конечного автомата UML(в максимально возможной степени)
  • Поддерживает как минимум
    • семантика выполнения до завершения
    • иерархические состояния
    • действия входа и выхода
    • переходные действия
    • охранники
    • события с пользовательскими параметрами
  • Объектно-ориентированы или, по крайней мере, не запрещают ОО-проекты

Целевая платформа - это встроенная система среднего и большого размера с ОС.

Знаете ли вы платформу, которая удовлетворяет вышеуказанным требованиям?Каковы плюсы и минусы вашей структуры?

Ответы [ 5 ]

4 голосов
/ 20 сентября 2010

Проверьте Квантовая платформа .

Я использовал его в нескольких встроенных проектах (от очень маленьких до очень больших), и он поддерживает все необходимые элементы маркеров и многое другое.

Веб-страница для QP гораздо лучше объясняет себя, чем я могу здесь.

Помните, что QP не реализует 100% функциональности, указанной в спецификации UML, но вылеты четко объяснены, и, несмотря на мой опыт работы с QP, ни одна из них не была проблемой для проекта.

Есть также 2 пакета диаграммы состояний Boost, о которых вы, похоже, знаете.

4 голосов
/ 20 сентября 2010

Вы должны пойти и проверить Boost MSM , это новое для Boost 1.44, но, кажется, вполне завершено. Я еще не пробовал это сам, но выглядит довольно многообещающе.

3 голосов
/ 20 июня 2016

На сегодняшний день доступна новая альтернатива C ++ (поддерживает C ++ 11 и C ++ 03 с Boost). Это называется Ясмин (и я архитектор). Он отвечает всем вышеперечисленным требованиям.

Некоторые плюсы и минусы (цитируется с веб-страницы с жасмином):

Преимущества использования ясмина

  • Она обеспечивает полную реализацию семантики конечного автомата UML.
  • yasmine - это современная реализация C ++, использующая C ++ 11 (также доступна поддержка C ++ 03).
  • Поскольку это C ++ (а не C), код прекрасно интегрируется в OO-код.
  • Она хорошо документирована [...]
  • Поскольку она с открытым исходным кодом, вы можете проверить ее реализацию. Также это гарантирует долгосрочное использование и доступность.
  • Библиотека позволяет создавать конечные автоматы во время выполнения.
  • [...]

Чем не является ясмин

Она не является минимальной библиотекой отпечатков, которая отдает приоритет работе на каждая система, независимо от того, сколько ресурсов доступно. Ясмин не ресурс голоден, но она не может (и не хочет) конкурировать с Библиотеки без абстракций на основе switch-case.

Примечание

Я знаю, что это старый вопрос, но Google # 1 для "конечного автомата c ++ uml", что делает его очень актуальным.

1 голос
/ 20 февраля 2012

Вы можете взглянуть на мою структуру классов шаблонов C ++ STTCL , которая предназначена для обеспечения отображения обозначения диаграммы состояний UML 2.2 на классы реализации.Подход STTCL является уточнением шаблона состояния GoF и пытается заполнить пробел (-ы) в нотации диаграммы состояний UML.

Реализации инфраструктуры настраиваются относительно зависимостей ОС, поскольку они необходимы (только для асинхронныхмодели выполнения).

Имеется PDF-документ , объясняющий концепцию более подробно.

1 голос
/ 08 августа 2011

Если вы ищете платформу, которая поддерживает иерархические и параллельные конечные автоматы с семантикой UML (вход / выход, переходы, защита, события с параметрами, асинхронные / синхронные), взгляните на мой код состояния машины игенератор диаграмм .

Вместо реализации конечного автомата "вручную", опишите конечный автомат в простом понятном для человека и доступном для записи XML-описании и позвольте генератору конечного автомата написать исходный код на C ++, C #или java.

На самом деле, для версии C ++ сгенерированный код может быть легко перекрестно скомпилирован для встроенной системы среднего / большого размера.Это уже сделано.

...