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

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

description

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

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

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

• Вопросы?

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