Какие структуры выполнения стационара для C ++ реализуют семантику UML?

StackOverflow https://stackoverflow.com/questions/3750177

  •  04-10-2019
  •  | 
  •  

Вопрос

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

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

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

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

Вы знаете структуру, которая выполняет вышеуказанные требования? Каковы плюсы и минусы ваших рамх?

Это было полезно?

Решение

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

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

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

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

Есть также 2 Boost Statechart Packages, о которых вы, кажется, знаете.

Другие советы

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

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

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

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

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

Какой ясмин не

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

Примечание

Я знаю, что это старый вопрос, но это № 1 Google для «C ++ UML-станков», который делает его очень актуальным.

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

Вместо этого на внедрении состояния «Машина» вручную «Опишите государственную машину в простом человеческом читабельном и письменном описании XML.

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

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

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

Это PDF документ Доступно, объясняя концепцию более подробно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top