27
Finite State Machine Никифоров Константин [email protected]

РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

Embed Size (px)

DESCRIPTION

Мы расскажем что такое конечный автомат (Finite State Machine - FSM) и как его использовать при разработке ПО. Поделимся опытом использования, расскажем как улучшить дизайн программы или её отдельные части при помощи FSM. Рассмотрим некоторые реализации FSM.

Citation preview

Page 1: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

Finite State Machine

Никифоров Константин[email protected]

Page 2: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

Абстрактный конечный автомат Множество состояний Q Начальное состояние q0 Множество конечных состояний F Q Допустимый входной алфавит A Множество возможных выходных действий Z Функция перехода δ: Q A Q Отображение λ: Q A Z

Page 3: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

АвтоматМили

Это конечный автомат, генерирующий выходные воздействия y(t) в зависимости от своего текущего состояния s(t) и входного воздействия х(t)

Page 4: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

АвтоматМура

Частный случай автомата Мили. Входные сигналы изменяют только состояние

автомата. Выходной сигнал в автомате Мура зависит

только от текущего состояния автомата и не зависит от входного сигнала.

Page 5: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

Абстрактный КА

Детерминированным (ДКА) называется такой автомат, в котором для каждой последовательности входных символов существует лишь одно состояние, в которое автомат может перейти из текущего.

Недетерминированный конечный автомат (НКА) является обобщением детерминированного. Нескольких стартовых состояний у автомата.

Page 6: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

, ДКА распознающий числа в ассемблерномформате

Это не совсем правильный ДКА. В «правильном» ДКА из каждого состояния есть переход по каждому символу входного алфавита, определением для ДКА не предусмотрено ситуации пустого множества состояний и «засыхания ветки вычислений».Поэтому для полного соответствия нужно добавить в автомат ещё одно состояние, в которое должны сходиться все переходы по «непредусмотренным» символам, а выхода из этого состояния не будет – по любому символу следует переход в себя. Иногда такие состояния называют «дьявольскими»

Page 7: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

, НКА распознающий числа в ассемблерномформате

Page 8: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

От теории к практике

Математическая абстракция, модель дискретного устройства, имеющего один вход, один выход и в каждый момент времени находящегося в одном состоянии из множества возможных.Число возможных состояний конечно.

Конечный автомат это совокупность состояний и переходов между ними.

Page 9: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

?Когда применять конечный автомат

Всегда (шутка).

Page 10: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

WorkFlow.

Коалиции

Спецификации, описывающие

архитектуру WF-систем

языки определения бизнес-процессов

графические нотации диаграммы описания

бизнес-процессов

WfMC www.wfmc.org

Workflow reference model

WPDL, XPDL

BPMI www.bpmi.org

BPML BPMN

Коалиция IBM, Microsoft, BEA, SAP, Siebel

BPEL4WS

OMG www.omg.org

Workflow Management

Facility Specification

Activity диаграмма языка UML

Список наиболее известных международных коалиций, разрабатывающих спецификации, относящиеся к WF-системам

Page 11: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

UML

Unified Modeling Language — унифицированный язык моделирования.

Графический язык моделирования общего назначения, предназначенный для спецификации, визуализации, проектирования и документирования всех артефактов, создаваемых при разработке программных систем.

Рисование картинок. Обмен информацией. Спецификация систем.

Page 12: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

UML. (state machine diagram) Диаграмма автомата или диаграмма состояний

Состояния (States). Простые (simple), составные (composite), специальные (pseudo), ссылочные (submachine), выбор (choice).

Переходы (Transitions). События (Events). Действия (Actions). При входе (Entry actions). При

выходе (Exit Actions)

Page 13: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

W3C State Chart XML (SCXML)http://www.w3.org/TR/scxml/

Нотация, которая позволяет описывать конечные автоматы в общем виде на основе диаграмм состояний Харела (составная часть UML). Основана на XML.

Используя SCXML можно описать различные типы структур конечных автоматов. В качестве примера можно привести такие случаи, как вложенность, параллельность, синхронизация или конкурентность подавтоматов

Page 14: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

Нотация SCXML

Page 15: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

WorkFlow patterns. Sequence (последовательность)

Fork (расщепление)

Join (синхронизация)

Page 16: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

WorkFlow patterns.

Decision (выбор)

Merge (соединение)

Page 17: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

Инструменты для построенияWorkflow MS Visio yWorks eYd Altova Umodel Finite State Machine Editor

(http://fsme.sourceforge.net/) SCXMLUI (http://code.google.com/p/scxmlgui/)

Другие

Page 18: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

MS Visio

Page 19: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

yEd Graph Editor

Page 20: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

Finite State Machine Editor

Page 21: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

Altova Umodel

Page 22: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

JFLAP

Page 23: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

Appccelerate State Machine http://www.appccelerate.com

use enums, ints or strings for states and events - resulting in single class state machines.

transition, entry and exit actions. transition guards hierarchical states with history behavior to initialize state

always to same state or last active state. fluent definition syntax. passive state machine handles state transitions

synchronously. active state machine handles state transitions

asynchronously on the worker thread of the state machine. extension support to extend functionality of state machine. extensible thorough logging simplifies debugging. state machine reports as text, csv or yEd diagram.

Page 24: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

Appccelerate State Machine

Page 25: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

Windows Workflow Foundation

Page 26: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

Собственная разработка

Page 27: РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE

Finite State Machine

Никифоров Константинknikiforov@codemastersintl.

com

• Вопросы?

• Спасибо за внимание.