Мы расскажем что такое конечный автомат (Finite State Machine - FSM) и как его использовать при разработке ПО. Поделимся опытом использования, расскажем как улучшить дизайн программы или её отдельные части при помощи FSM. Рассмотрим некоторые реализации FSM.
2. Абстрактный конечный автомат
Множество состояний Q
Начальное состояние q0
Множество конечных состояний F ⊂ Q
Допустимый входной алфавит A
Множество возможных выходных действий Z
Функция перехода δ: Q × A → Q
Отображение λ: Q × A → Z
3. Автомат Мили
Это конечный автомат, генерирующий выходные
воздействия y(t) в зависимости от своего текущего
состояния s(t) и входного воздействия х(t)
4. Автомат Мура
Частный случай автомата Мили.
Входные сигналы изменяют только состояние
автомата.
Выходной сигнал в автомате Мура зависит
только от текущего состояния автомата и не
зависит от входного сигнала.
5. Абстрактный КА
Детерминированным (ДКА) называется такой
автомат, в котором для каждой последовательности
входных символов существует лишь одно состояние,
в которое автомат может перейти из текущего.
Недетерминированный конечный автомат (НКА)
является обобщением детерминированного.
Нескольких стартовых состояний у автомата.
6. ДКА, распознающий числа в ассемблерном
формате
Это не совсем правильный ДКА. В «правильном» ДКА из каждого состояния есть переход по каждому символу входного алфавита,
определением для ДКА не предусмотрено ситуации пустого множества состояний и «засыхания ветки вычислений».
Поэтому для полного соответствия нужно добавить в автомат ещё одно состояние, в которое должны сходиться все переходы по
«непредусмотренным» символам, а выхода из этого состояния не будет – по любому символу следует переход в себя. Иногда такие
состояния называют «дьявольскими»
8. От теории к практике
Математическая абстракция, модель дискретного
устройства, имеющего один вход, один выход и в каждый
момент времени находящегося в одном состоянии из
множества возможных.Число возможных состояний
конечно.
Конечный автомат это совокупность состояний и
переходов между ними.
10. WorkFlow.
Список наиболее известных международных коалиций,
разрабатывающих спецификации, относящиеся к WF-системам
Спецификации, описывающие
Коалиции графические нотации
архитектуру WF- языки определения
диаграммы описания
систем бизнес-процессов
бизнес-процессов
WfMC www.wfmc.org Workflow reference
WPDL, XPDL
model
BPMI www.bpmi.org
BPML BPMN
Коалиция IBM,
Microsoft, BEA, SAP, BPEL4WS
Siebel
OMG www.omg.org Workflow
Activity диаграмма
Management Facility
языка UML
Specification
11. UML
Unified Modeling Language — унифицированный язык
моделирования.
Графический язык моделирования общего
назначения, предназначенный для спецификации,
визуализации, проектирования и документирования
всех артефактов, создаваемых при разработке
программных систем.
Рисование картинок.
Обмен информацией.
Спецификация систем.
12. UML. Диаграмма автомата (state machine diagram) или
диаграмма состояний
Состояния (States). Простые (simple), составные
(composite), специальные (pseudo), ссылочные
(submachine), выбор (choice).
Переходы (Transitions).
События (Events).
Действия (Actions). При входе (Entry actions). При выходе
(Exit Actions)
13. W3C State Chart XML (SCXML)
http://www.w3.org/TR/scxml/
Нотация, которая позволяет описывать конечные
автоматы в общем виде на основе диаграмм состояний
Харела (составная часть UML). Основана на XML.
Используя SCXML можно описать различные типы
структур конечных автоматов. В качестве примера
можно привести такие случаи, как вложенность,
параллельность, синхронизация или конкурентность
подавтоматов
23. 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.