Statechart vs Statemachine

Я готовлюсь к экзамену, и вопрос по одному из предыдущих экзаменов:

Многие ответы в Интернете говорят, что Statecharts и Statemachines - это одно и то же? Если нет, то кто-нибудь может объяснить разницу по этому вопросу.

Если бы кто-то мог привести примеры того и другого, это действительно помогло бы. Спасибо

5 ответов

Диаграмма состояний весьма отличается от конечного автомата (я предполагаю, что это означает "обычный" конечный автомат). Диаграммы состояний относятся к нотации Харела, изобретенной в 1984 году, которая была предложена как значительное расширение нотации по сравнению с традиционными конечными автоматами. Диаграммы состояний были включены в язык UML (хотя они называют его поведенческими машинами состояний, и UML также поддерживает другое понятие, называемое машинами состояний протоколов, чтобы добавить к путанице). Основные важные различия состоят в том, что диаграммы состояний на самом деле являются своего рода "иерархическими" машинами состояний. Состояния могут содержать вложенные конечные автоматы (на любом уровне глубины). В дополнение к этому, понятие ортогональных областей было добавлено к моделирующим различным подсостояниям, работающим параллельно, и понятие исторических состояний (либо мелкая история, либо глубокая история) может использоваться для запоминания, какое подсостояние следует посетить при повторном входе составное состояние. Все эти дополнительные функции делают диаграммы состояний гораздо более масштабируемыми и выразительными, чем простые, плоские автоматы. Диаграммы состояний также позволяют добавлять действия, связанные с событиями (либо внутри состояния, либо при переходе между состояниями). Существует множество различных (часто коммерческих) инструментов, которые позволяют полностью генерировать исполняемый код из диаграммы состояний или имитировать поведение модели (например, StateMate, Rhapsody, Stateflow, Yakindu Statechart Tools, visualSTATE и многие другие). Они также часто используются в промышленности, в основном в области встроенных и реактивных систем. Вот почему диаграммы состояний можно рассматривать как одну из историй успеха исполняемого моделирования.

Состояние: состояние - это описание состояния системы, ожидающей выполнения перехода. Найдите примерздесь

Конечный автомат (конечный автомат): визуальное изображение или абстракция комбинации нескольких состояний. Конечный автомат может находиться ровно в одном из конечного числа состояний в любой момент времени.

Диаграмма состояний: Диаграмма состояний - это конечный автомат, где каждое состояние в конечном конечном автомате может определять свои собственные подчиненные конечные автоматы, называемые подсостояниями. Основная особенность диаграмм состояний - то, что состояния могут быть организованы в иерархию. Диаграмма состояний может быть в нескольких состояниях в любой момент времени. Найдите примерздесь

(Может быть, слишком поздно) Возможно, хорошим намеком на ответ на этот вопрос станет фундамент самих государственных диаграмм - статья Дэвида Харела "STATECHARTS: ВИЗУАЛЬНЫЙ ФОРМАЛИЗМ ДЛЯ СЛОЖНЫХ СИСТЕМ" от 1984 года.

А именно:

Хороший подход "состояние / событие" должен также естественно учитывать более общие и гибкие утверждения, такие как

(1) "во всех находящихся в воздухе состояниях, когда желтая рукоятка вытянута, сиденье будет выброшено",

(2) "изменение состояния коробки передач не зависит от тормозной системы",

(3) "когда кнопка выбора нажата, войдите в выбранный режим",

(4) "Режим отображения состоит из отображения времени, отображения даты и отображения секундомера".

Пункт (1) требует способности кластеризовать состояния в суперсостоянии, (2) вводит независимость или ортогональность, (3) намекает на необходимость более общих переходов, чем одиночная стрелка, помеченная событием, и (4) фиксирует уточнение штатов.

НТН

См. Мой полный ответ на /questions/26425359/statemachine-i-statechart-oznachayut-odno-i-to-zhe/57176755#57176755, но в двух словах диаграммы состояний должны указывать на диаграммы переходов, что и модульная декомпозиция и абстракция для монолитного кода.

HTH (это помогло мне понять различия).

Конечный автомат - это математическая модель вычислений, которая имеет менее общее назначение, чем машина Тьюринга. Другим распространенным использованием термина "конечный автомат" является код, который реализует эту модель и работает на компьютере.

Напротив, диаграмма состояний - это описание автомата, обычно представляемое в виде диаграммы или таблицы. Слово "диаграмма" в переводе с латыни означает "бумага", поэтому оно подразумевает что-то написанное или нарисованное.

Существует много видов конечных автоматов, включая Мили, Мура и Харела. (Определил ли Харель своего рода формализм конечного автомата или просто лучшую нотацию диаграммы состояний, мне неясно.) UML - это их расширенный набор, с одной унифицированной нотацией поверхности для базовой модели. И модель, и графическая система обозначений описывают конструкцию конечного автомата, который может работать. Графическая запись, представляющая модель, может рассматриваться как диаграмма состояний.

Я думаю, что вопрос, который вы цитируете, на самом деле запутан и запутан. В статье Харела 1984 года формализм Мили и Мура назывался "условным", но теперь это слово может относиться и к работе Хареля. Термин "диаграмма состояний", вероятно, относится к Harel или UML, которые могут отображаться в конечные автоматы Мили или Мура. Я бы ответил на вопрос, перечислив различия, тем не менее.

Другие вопросы по тегам